From 46f371f2da125fc67ab256110526cf460df788de Mon Sep 17 00:00:00 2001 From: heejinnn Date: Thu, 4 Jan 2024 02:23:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20Oauth=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ++ .../UserInterfaceState.xcuserstate | Bin 169174 -> 180203 bytes .../API/AlamofireManager.swift | 62 ++++++- .../fit-a-pet-client/API/MySearchRouter.swift | 70 ++++++-- .../fit-a-pet-client/Utils/Constants.swift | 8 +- .../Utils/KeyChainHelper.swift | 50 +++++- .../fit-a-pet-client/Utils/ResponseData.swift | 9 +- .../FindAccountVC/FindInputAuthNumVC.swift | 7 +- .../ViewControllers/FirstVC.swift | 36 +++- .../ViewControllers/LoginVC.swift | 5 +- .../ViewControllers/OauthVC/OauthCodeVC.swift | 155 ++++++++++++++++++ .../SignUpVC/InputNickVC.swift | 8 +- .../ViewControllers/SignUpVC/InputPwVC.swift | 2 +- .../ViewControllers/TabBarVC/SettingVC.swift | 32 +--- 14 files changed, 389 insertions(+), 67 deletions(-) create mode 100644 fit-a-pet-client/fit-a-pet-client/ViewControllers/OauthVC/OauthCodeVC.swift diff --git a/fit-a-pet-client/fit-a-pet-client.xcodeproj/project.pbxproj b/fit-a-pet-client/fit-a-pet-client.xcodeproj/project.pbxproj index 5df322e6..54a381b0 100644 --- a/fit-a-pet-client/fit-a-pet-client.xcodeproj/project.pbxproj +++ b/fit-a-pet-client/fit-a-pet-client.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 4A0750D22B07D44000281A4C /* UploadPetPhotoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0750D12B07D44000281A4C /* UploadPetPhotoVC.swift */; }; 4A0750D42B0892B900281A4C /* CustomNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0750D32B0892B900281A4C /* CustomNavigationBar.swift */; }; 4A0750D82B0D130F00281A4C /* PetRegistrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0750D72B0D130F00281A4C /* PetRegistrationManager.swift */; }; + 4A0974282B45BFA8008B4E43 /* OauthCodeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0974272B45BFA8008B4E43 /* OauthCodeVC.swift */; }; 4A0FEA492B1B5F6F0084CA6C /* FindInputPhoneNumVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0FEA482B1B5F6F0084CA6C /* FindInputPhoneNumVC.swift */; }; 4A0FEA4B2B1B5F820084CA6C /* FindInputAuthNumVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A0FEA4A2B1B5F820084CA6C /* FindInputAuthNumVC.swift */; }; 4A15F2072AA641910098F2F7 /* CustomNextBtn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A15F2062AA641910098F2F7 /* CustomNextBtn.swift */; }; @@ -69,6 +70,7 @@ 4A0750D12B07D44000281A4C /* UploadPetPhotoVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadPetPhotoVC.swift; sourceTree = ""; }; 4A0750D32B0892B900281A4C /* CustomNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomNavigationBar.swift; sourceTree = ""; }; 4A0750D72B0D130F00281A4C /* PetRegistrationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PetRegistrationManager.swift; sourceTree = ""; }; + 4A0974272B45BFA8008B4E43 /* OauthCodeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OauthCodeVC.swift; sourceTree = ""; }; 4A0FEA482B1B5F6F0084CA6C /* FindInputPhoneNumVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindInputPhoneNumVC.swift; sourceTree = ""; }; 4A0FEA4A2B1B5F820084CA6C /* FindInputAuthNumVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindInputAuthNumVC.swift; sourceTree = ""; }; 4A15F2062AA641910098F2F7 /* CustomNextBtn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomNextBtn.swift; sourceTree = ""; }; @@ -137,6 +139,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4A0974262B45BF67008B4E43 /* OauthVC */ = { + isa = PBXGroup; + children = ( + 4A0974272B45BFA8008B4E43 /* OauthCodeVC.swift */, + ); + path = OauthVC; + sourceTree = ""; + }; 4A15F20C2AA8B3FB0098F2F7 /* SignUpVC */ = { isa = PBXGroup; children = ( @@ -191,6 +201,7 @@ 4ABE58582A85E8B400E22C5F /* ViewControllers */ = { isa = PBXGroup; children = ( + 4A0974262B45BF67008B4E43 /* OauthVC */, 4AF0C8572B2627BE00A45EEE /* EditUserVC */, 4ACDD49F2AD9B32400CD8F1A /* RegistPet */, 4ACDD49A2AD9A9F600CD8F1A /* FindAccountVC */, @@ -489,6 +500,7 @@ 4ACDD4A92ADAFFD100CD8F1A /* InputPetBirthVC.swift in Sources */, 4A15F2142AA8B4A50098F2F7 /* InputPwVC.swift in Sources */, 4AA999942A8485A500E495FA /* SceneDelegate.swift in Sources */, + 4A0974282B45BFA8008B4E43 /* OauthCodeVC.swift in Sources */, 4AD354222AAF7E62004A47B3 /* TabBarController.swift in Sources */, 4A0FEA4B2B1B5F820084CA6C /* FindInputAuthNumVC.swift in Sources */, 4AF0C8522B24E0F000A45EEE /* TableViewModel.swift in Sources */, diff --git a/fit-a-pet-client/fit-a-pet-client.xcworkspace/xcuserdata/maclove.xcuserdatad/UserInterfaceState.xcuserstate b/fit-a-pet-client/fit-a-pet-client.xcworkspace/xcuserdata/maclove.xcuserdatad/UserInterfaceState.xcuserstate index 9ec654ba0f138c84d0410efd8e2409916b6ee91e..44ca050565f39ea21139c263e23aa4f6bee8719a 100644 GIT binary patch literal 180203 zcmeF42YeL8|Mz!i>+SWD++A|LC%FqLq*0^E0N)Js4 z2m&Hi0Yxb)iXb3hK?D_4dKLAV-OB-zfc&2y@%cZ$7jkzb$L`K|X5RCe?|i4&uecz; zv@9Xv0ES}#BQO%9FdAbpuA6IEu%tA$rzCe^KKiYbtE{NFo2#hbpkQuUsRqNJ zou92zw#{l492v}ORC&=pjKw6Kv&wSHf;_%TEgynOF&U=E444s1#FDUNtTvW{rDADV zI+lUe!Rlg7v1ZugSaYl`)(*?Ux?{buTr3Y8h!tRE*idX3HWC|+jm2hSv#{CN9BeK& z51WsbV+*i_*dlB(wgh_{+k|b#-oxICji14P!7t<2@ayl112BRpU;zifVel3B8hiu3 z2PeRf;3x14_!XQ77r+&875olv5*UFK6hRXlAtjWAiqH`egpr6MEQFPC5-!3=#1H`@ zo=75+i8Laes7KT%8WD|&X2jz}E21^gp6EbyCb|$kh@M0?(U-_0ftPr-^aI1Y#mFnV3RMC8iP6i5bK!Vm2|KC?^&ZONa_$IkAd(i+Gz@M{FcE z5$_ROi4TY!#4cht@hP#F_=4C^93l=A$B3_qyZt~Mr2d68QGF- zMYbc`lby)UWOuR$*@w&~bICk%Aem1NAq&Y8vXmT7jvz;qV@OCoO+HIbASaQN$(P8f z0`(&G5;c{YM$M(> zQS+&CY5}#7T0||TmQZg{Td8f-cItiV18N8LA@vcpliEe?raq+(P+w99sbkdF)Jf_T z^&|BY^)q#zxHZq%-&CFKjBW5S_DYKV3$Q)u0Gv6~Om>-yv%+Jhu<^uC4^B0S;I15;Um9jF{ z#kyG!>t%gx3>(YFv3@qd#{sj&_9%Od{hB?=o?`!G|B_%5TmmG7gp^PcTEa+JiAC;gYG6X_A*EuSi~% zOqa}%ye4^FGE*{3GEcHZvO@BvWS!(4$$H6l$%m3pC3_`DBu6DDBtJ-QO8$`iDfx@T zIGh69_X77K_Yyaio5sD&y~4f9P3LBCuW_@vh1@c(f?LC_<=*DD zaPM+oatFCX++pr3?g)33JH~y@eZzgro#0M$XSnm+1?~p-J9kq`N-3#XYLQx{HmP0e zkUFI8rfRe+p=}CcVz2j8)O@0@5*+_K9qed`$Tp?_NDBg?2zoR>^s?U z*>%|s+3&KOvOi>h%KnmLa$FANgq)EpITE&oRTt^7OrarsI4 zFY*iWi}K&)H|2jQ7==`!Rp=BpgsV1wYsHUo3Q@yU5shY1US1nUjsFtf%sNPnsQ+=x1tNKj!xoV&4 z3)Ozr0o9kPgQ`QSquB4N?^P#MKdVlwE~qZ5E~##+{!mA#Bh`AfL2Xn=siV~Rff6I;ifi9;ALkU7{YL9;t@v zr`6-svr`l9-h`m*|p`l|Yx`nviL4XL3tQjJWb(?n<@HF}LzW7E{p)Ya6} z)Ym+wX`pGSX{2ea$<#E_G}pA#bk=my^wDH%251IqN;JbXV>M4{CTS*X7HJl1mT2D4 zEY&R2RA`oKR%qVTtkkU0Y}9PkY}4%0?AGkje5~28IiUGP^Q-1J%~{Pk&3VlQ%|*>6 z&1KCM%?&NC1zJ`s(WtF5Q4uYFA0K-*B;NZVA~TH8^Z zrR}NhrOnd@wME)e?I`VN?L_T!+H&mz?LzG$?PBc`?Hk&q+GW}b?Q-oZ?K|4_+6~%` z+O67c+Fjb++CAEjwfnUPw7+T3YR_rUYcFUoYAIj`g$LTaWtu9(; z(s^{Tx+Gn)u7R$huA8pAu7|Ftu9vR2u8%HT*H@RL>!<6l8=@=J73qfRhUv!Yp3?C; zsC!QLyl#PRp>C0Gv2Ka(4c$`RGF^pkxo(B-E!}$EySn#uAL(}LcIiIX?bH3NJFPpT z`$hMw?l;|8-8tQP-38r6-BsP6y1yc@2s(m^P)4XC)DgyrsEDM9PFOyXc+N$M4O1V5nUp>Ms$nl8<7(+GUCaIQ4ymf#zc&bcq)RAfDunejEk5M z@j}Ea5wAwfiI^KPFXD}er4idAwnw}l@j=9nhz}z^ir5*kD`I!Vo`}5>Uq&2_I2Q3k z#L0+L5x+&8jbtL(NJ%6YDUFmx$|Dt#%1BkDIx-^C6zPa`M#e?@BLk5sk*SewBilu` zkL(cHF)}N%Q)K7JE|Fa$yG8bj%#F;C928j+SsGauIXZGoy-y#bPt+&rTk2csTkG5C+v?lt+v_{%JLB7L#`3H?a@llp1;m-VmcU)4|7&(Oc7e_cOQKTAJbKVScbeyM(?ewBW`euI9a ze!KpC{Sp09{W1O5`fv2#>c7(;*MF}+q5nbulm4v!vi^$xPyJs8%zzst2F~CxI1Mg? z+u$*H4L(DRA=VIQ@EZ~gX@>fS#|+I3j~m(<+8YKM@(qIwgAE0SA%;Rjk)hb|grUSR z%rM3<&M@9E*)YZMg5gEO48v=Nw+yQdYYb}*ZyVMb-Z88KipMDnDvm)cB}pqMnVK5H&ICxv1x(CPht-ni4fN>b0o3QS+kSh*}!8 zEUF@EP1M?`ccZpP?T*?Lbuj8s)Y+(WQRkyBL|u%!6m>c3O4QY;Yf;yu{)i@{sc31m zELs;G5gi$AiMB?kMW;t+MAwO~8(lBDe)MC}4Wb)HH;Qf=-8#BsbXIiF=w8viql3}? zqsK-+70pM(=%=H{MURhuCi>av3DFayCr7^={d)Aw=mpUWqZdW5h<-Er!|0EqcSi4u z-W|Os`s3(NqCbt^8~s`I{^%po-$fsf{yF+|^qJ_3(U(jzliZ{*DNQPq+N3dQO*&JA zDbf^WvYWgnpDDqVXi75GG1WC?nL3#|o4S~~n!1^~n|hdfntGXfn{rG8O@*c+({R%W z(?}CEJ#Ct4nq``8nq!)4nrE7CDmN`KEi^4MEj6t&tuwu2de5}gw9~Z9^quLr>3h=& z(+{STrcp;S1r>mGc2<#3oJ`5 z%PgxcYb={An=Sh-2P|J&4q6Ub4qLvm9I+g=9J73FId1vM@|)$X<*MbH<+|mD6<7&t zwAExaTP;?r)n>I@9ag8+Wp!I)tO?dsYnruzwV}03>*v<})&tf<*2C7L)??Oht>0NsSbwmdwEk>8Z9QZC#d^+q-p1Hio5aT1 zq&AsNZd2HlHkHk2Gug~Go6T->+1xgtEym`z1#AhnL|c+A)s|+fYpZ9gZ+py^X=`F@ zX=`h1XUnza*@CwIwgI+*wtU+l+hALft=Lv(8(|x1d(t+__LS`z+q1Sww#l|Bwij(L z*_K~f`v7}^z05w;KFmJcKFa=#{aO12`$YR>`&9ch`^)w@ z_PO?X_WAa5`(pb#`#bja_6_!p_D%N9_O15!?Z@pu*nhO2w*P8BXTNB_V!v*`Y5&Us z9F&7~NF54?+M#pk9Z?Rm!{%^0JdPNL-%-nvruF5=Vt&jpH51ddFtR z7RNTn4#z>q5yw%-w~p@|KR8Z0es-L8{N_08xahd#xaPR-#GSxNI7z3}sc~wZQO;IsXOVN5bGUP?^BLz9=L^nPowJ>DoQs@` zohzJcotvFooF6#%I6roN;oR>$;ymvB*?HP|-g(V=-G#Yu7wb~G^e%(T>hid}u6S21 zSE{SNE7R4))zsD7)yI|X>g&pJ^>gLA@?1ezf7bxlKv%wNkZZ83z%|5G=z7vM$~D?G z#x>UUl#6#k*96y8*EHA5u2)>Iy5_m&yB4{Yx;D5rx;D8sySBKty0*D?xc0dAy7sxg zah-FWcU^E@bX{^?c3p8@bzO5S+)B5~t#)hNTDQ&};f{3c-6`%=cbYrho#C$IuIsMn zuJ3-#-N4<@-N@b8-O-)p?&R+5?&9w1?&j|9UhZDue$&0uy~_QTd$oIwd#(Fz_d54G z?)B~s?v3tE?#=Ek?swhqxwpEvxwpIDcYomC;r`J5k$b0mmwUH+kNacyC+<((d)=S8 zKX>nQf8pNmKH&b+eb9Z#ec1h#`-uCf`OL-+;&a3c7d8551ui0zyI=oJAj5pRB@2%yn>#gUl?|sbMz?8&Cy?Ne2-eT_)-r?R6-m%`Nz0w7y<5ERdf)Tz@$T~;@E-Pl;kMl`=ZlA~J_4#};zF1$J&+iNP;(fJz3BKCCbYF(Aj<2q-u`kot z+SlIK!PnW>#n;2v)0ge*>&x>6efhpYzG1#mzNdV=Z@h1!?=|1+zL~yRzS+JxzPY}6 zzGc1&-*Vpy-@Cp~eFuEUeBb$w`%d~!`A+-J_|Ez+`Y!pd`EL6D@ckJR8KaLe#290u zVxnVAG3FRcj5Wp<0-|F^gkX#;l9k60I~T zF(+cq#GH+}7;`D+TFlK@EEbQYV$HFZSZk~;)*kDKb;i14-LalnZ){v_Qfzu`Mr@69r!J9DR4P(Bc6<>;^}x*ygFVJ zukGwA99mGYACqGWOo^#5Ef(3eZC3o?;K4U^*;< zCn2|jw`Z$#Et)j#T2wN)v^Xa>*rX_T=#XGxS+>fRl2|)AH7zkcklrl4cA$2Xq(*`C zwAxJq8R_ZiO%j?mN~qnmb~xoI%#9^fV9}TfGh-IairFwb=D?hoi>G*+XLy#E@EkAY zWxSkMRA3&=i}|n^EEbEy{8#{s$7=CP-T}FhkQ)v0v5zvZE%%UO11wr(C zdtnx`vknMnV6o4(u9};vn`f$P5 zPnS?#`N%J@PFQEG3)Zzqh}^=QA;E5;AA_Y`+GaID)wBTpd$(?Fv)YMs!J#{PU_G-{ z+O}D3hL+{@D+o5pN0n4mm{T%xA=U%yg>~zNZoTzg*w{W;U%}XH-dK+1@KN_LR*40% z{@8%-$k@`dlKjE}d~~*|PI^K{W@ct;Mj$C8H7QU#DK$BeQ9Csu&^V!KTGPgjnOGr&gNKb8? zR=pwrVJ?J99FBEFl{bCg?h~U22$d&%_oVopP@z&jT%o1= zJ&ldS#$(T5&tem>iP&@4^VlTb$-8(r@8P|?kB{MF`8eLs2l)6E*c9vq>_zM)Y$`Sl zdl`ELdlj3G&A?vcYw@e0BnCkRu=$1vv}kkhsJMMU~JkwGI{Oy*zu4o?|kW)IeG^=Q6Np3I`Jvv*J z_P6W*DTyq^#K?X{IVDJVe1E(1u9O;;mIli*bINiGiUwq>YKJZrHDy4sM99ot*FT;! zbU?68a0q&QSWmK5-utD{URa3{ddjU_h}S2#FDVk1Tx1O`7Ub^kl>T-N0_whLgvzUJ zQDL+Ef?(E2B&3%sC?P#7KED=_(+^T{w{BK}yVhM|}rPwm8 z0$Yx);1l>{K7~)?GZteju~pbx*lKJIUzhL9m-3_eX}o?vwhpzccd+%?25h4sn*C5e z)D!((5=6R!`Z^xtlla7J)qwt}i0ag;RSSuFNolPiIk^Qz!-BO?$2SZDEGUQ{k>4*QVOy|wJGae39n}JCi_o-h8@XLHsCKrhpk@qek6J@f zfzXW#_Jysw(}Isg3sP&oNOCKS?$f}?~r9FBS6%A>YlPh$nDp$w}Xwjro zk>JdJET^=6QE9&51GLF0MlNK?=|aCEIUAObmuw8(?g3lD2lfO-hzF9vTX*fSGd6f9{kxQ*y4K`?`Por;QE2Zsdb5vb`>@2YuI({2KKw)w3i^DhvgIq zKb95;bMtcw_{aI?Dgt?wqeca4C#IulU~*c*7{6^4>hk@zw2azg#)R79pV(hW7`o&X z3`OqIpF(RCpN-?fv-y^Mb7bwPQ3>b)iOI>r1Cr9v1CkR`Dj$GTIE@}4xU3@=;1t%) z+29-|{#U75xCH00g!%J@8i{PtI8??We#kQ~5gKEOm`7ZJT`tF!e0#oCk9M{D1%_k= zMmF!^Z18#LX+1_IC&s7vZAod!a5QqkBW_*JhEs~dU5Ft(8aLr)+=5$i8*axPxRdX~ zcjdeB-T5ATPreu5oA0v>cVpk;UfhSr;IVid?new|BZdn2A$%cU#252V{I@ZLXJD6? z;C1l2cs;y6{uthX@5}e&^Z5S!Kz`6IrtrpMz2^w^F0hlDkcg^2B_Tto`qXs9K}LGg zm@#2Wnu%BE3Rg$peRX1TTJ5_oZz*0L6fQU2zC2w7Gjw@kViF=N{P?!w^#j7j)J{wl zKu)eL7?Y8Jeo0G8zI}B^@#_4)8&f+WO}IMr^t80}+n09{FCQ#i9wt0V%w|$5vO6hR z%%&(#cn`d17-4;j#_fid733ENt7AADyF8z7bqm_=qtXS76Vof1%@ddn@+AoI0iC)8 zTC@%%3=g}ucs^eGpbChWA$o^l#}U0F@h9;ZL~j|QcO+84LjFm96#7I87-}a^A?d(* z9P&f?;kT=KyqNi6w@bEKi3r!jMDgkocNW#%Vi0bFlkq8`qPkTGceLE_Mbq%vLPLES ze+7RPpN`MKU&CL=XX3N?G5lEmDW2yc|1>|2AJ0Ft44;FtIuDItg?I2{T{wGO!s{S z`U8R99sCP_qxV)d-_81-TUUo`eJ_4ksP)hA&+&cu7x;es0RAO@5I@Af%)i3F%1`HK z@UQW&^E3Hb%kZ!8BluDL82&Z>4gM|u9jf)&{4&0RU(T=KSMsa)xBlyD{Z~Prf5Xq> z=kW9R1^gmEho8rn^9%XK{2R9^xFS~TT%lUKAO%g#NR3ZT&ZvCVPE0|4v(Qn;C#I#O zR=$!F5(NdUost-zo|q7Rr6i>xkxNO5Pftn@zY^2ZZp-5hF{SypQ%Z@?NKXvElGDYM zQWN9T(v!oll-fx`N=Zq{@u>;P;a7_2FeE0$C#R=XzA_S$Gj6B!r0Bk9#MBH_^wp=6l#v#nk(eHS zC8VOf-!CCfOlaw?qD#p@8A?e?3cXNeqlD5@QHE~Wo{X|4c8Gt=QA$ekJyLQuWIM%1 zaL;5`wql?Jss~XEphN8+MDTA`uNK*=m{Ca?@kyyEX_c?kgxW&!r=ag{*E8}4D*H|l zed~E)ORQidmat0I9oT>!IDiwlfE###7x+L7hy`)L4+0<_)B*`05hQ_RP#dIxRFDSJ zK?bM;>VkTpK6nf?01ZJS&=_QbCZH*31|A2^K?~3lv;wU`8_*WC1MNWv&=F*TPM|aB z0=j~3pgZURdV*e{H|PVhL0^yq`hi@K2ZEqK7yt%>d@u+M1_fXUC#G6388N{1Iyd}h2L%c1-+e5q~#5+N}3&guYya&X4LA(#d`$D{*P%%$}QD8I} z1IB`<01qH|8jJ(u!871lFab;i&w=N`Brq9F0WW|T!AoE&mCEyLP6f6T3U^!R;-UKVbD)1Iq4c36Q;BBxDyaU#Q z4PYbK1U7>$;9c+@*b26R?cjaz0oVaP1RsH&U>Dd8_JEJUC*V`C7kmaj2m8Pm5YL17 zQxJa@;@ctq6~xa$z(8Pwpcw?cAb1LbmmydR!8QmEL2w2V6eLWLNQ6XFNc4b25hNx; zVm2f;K;lzK`~ZoYkW@j^3&}>1>;}m~NRET#3`j1A8Tx0*A!7z}jq8@Sz80+MobvK`j&=5Pyg-9iHF6?2e!aI3^~&E?brN(39?5 zmS0d>t8q^5;KpTzRZ~7Lro28|Rr>H#Zqc+roZzXIl|P`cb1|BxDlID-(mJPKu%N0T zr$j?G)?{LLZM@@v>4Sy5X~0lR89V}nEcj<&x>X6Kcc=VR}9k1T3x93{8VK%FQhrT3CiuK=@58pGHH=2DTkKq#Bk9gJ|5RHK7NM z+P6Rjlob>vVmcNLMX}qeWn&hT|14WIw8qQkmN+78sw)YHXv)5tD2czf93)#}ht&lQ z2yV^W5MD9){STq1{0C)hlQTG2(ovYb60ogWC4SM6FSAvJHC`pn@=Hpqt&2p_hC?-F z1L`Nl8LT^JajG=iRMCd7vQ>j?q#SBh3Vc!V&|-m)sufXJG~j5B6#{ApchBTiDTIci z4PR%g#??q6+*`Z;Nw=DchJBl@8eSuY)yfmS3|~qiWoi%05N(F)EQY58aBpo3pUQLRig&gf{$R`{C8q&Lq*M-)lnR?(F~WSu-z* z>Hkp^{qNmn5^lv+rQ}u7h`(wU(U8-4&w`jK*Z^@nTh;%e(-Cq41Rn0u|IZ60j+V>} zdFY8(Ukz0&VNu8iDqB_d&~3Oa6qU7*Gb|s4{Lmnx+UU%(kSR>I>gk7W%H73r_qac= zQ1qXx?_^en43pG^rxN8PeQNm*MY1CYiHUIS<{WtYB_Qu&gwG1Pbb+ zc-(+Hi{fM`UF$;_;8rP$+Y%8P)7@_jbvk4R+6h$ylYHXzA{rQk>f#@K0&=%oRyiGWpMIZYL*@l)qL!MDK-(#Wqg`udmW(Ve zD+;-1Rj18JdB})bH8E#>TUkP0v@o)4dtXnQ)P&4In`~;{lfKogA0RqT>O+Pl{~Lx? z!&08uEmfmCq$y-rO13KL{*eEDvb&0ak@nDo(rRMeL})-MlrsvmS54XzN;>2JftU*+ zkE#a6g$%0uZv+c(VVD&xLmQ_DRA)~@$e#KSVX$9)fV+98PVL(S%LW$ZRV|E^P~r`0 zLZ|MQQ54xms}HKFkvbtG8vPqapvZrrfNRLmtG{7!XQ7t0p?)kl%h!kGUX}bmwdpeCSBrEpWF%{kvyU9jZ@+ z?CM$*E%?sC)jbPlSjd3x|As?wSLCp|X&7=;$ey16hR)uuC{a-!M?>K1y(T_nRPTSo zsJ|D|y;r@F&xDN1{x^)Ou1Bi2`koINm6NT?edz5hv=;9kO9aRlLn-Gz1W&R`FA!=; zD1KC0mV?gw344;_u26CsIR~9!M7~VELcU5)Cufkak*||8$ywxVhzB9wAL0WbJ`m#h z5FZ5b!4NNi_z;K}R*-YCQ^Fr|0lAPwI~vI)7}|nSgtoMyKM*g2_>&MX5q=zn4mJ`t zPDkB7?m}=~gdSNu3 zCKo~c2~_$JFBR&bm5NkhDoy2ZGDA0`~3gpQOdD9Z`eOY6TE zO8CCrq(J z&aHpnPEUSG9u^*TkURwO(GVYV=c79JM@4Y=LnL7%z9Y{FydEdNCr^++kSEDgcqDQX^U^v|rILc22sCcRtl|Us@NmMdb8{*R;J_F*fLHu=y&xH6ah$CU01M#^K zp9k^z%c;~5mQ)?8E>(}JkDa0#2w;|n!CVaS3WzU<_?v>3uKX`#^B;t;8tMO^O095= zTL|g)CFp39;BX=ERrzD+dr{s0S#+tk0>tegz90;7M*-q2auL;85Z#5M=%OD4(Uqy> zVMcmVy#nq_v8FcbhVnPBsR8Tm?P&iaZ?6s)zLWv@& zUdy8+VML#Vnn+C&a{V0jJjCCI___tuWD04+I}l&b+dGSAI`$4t#tjWkN1@|v(4j0v zxkWjhiiYM6tTZfSNBE&HQ?Fr>i>OzqSE=a~YLXiuz7gV^AijAK^*S|^nuYc%;#(m8 zF2vu1_*RrqeqMgjkS=-RSvEb;$y{g~MNVOEuxC+;aE_n2?4(bAyR7)z3Ew`*ta0cF zoUEb!%0?Ckzk z7R0wlrvjnJ+t_yVUgJ@h|Fiy=fWG}dm;W==o5*IQx$fNs6*6Og2)_(_`Y)L2*kg5K#}=| zIxeWh9_l;MuiG!E#0fzq4pdPIwJgrr&=V3Fl`>4)Y3kRI%={wC%;EbyAbiV3>Q4dA zOVnlR3U!sbMqQ_FP`^_*sXri&Og{?oV-Wuu;@?30TZkjWjzj!=h@YsS{tCfK6CpQ_ zW&}8Y2*dgFZ8z?>M{w4F8%GOAR?(3VKUoPUZA5U=QRE`pM4KUgO6&oDg!oSgPDc3u z99331?WElZPud0X)8(`W;%6QVPdb(kAiC%{p$|lW4PQXV3w_|P)%1a?ufmDdrqe_u z=~NNPvj|B#USRsyDolrOsZTdYNYand4d{k+Bf2r2NjIUJ(#`0{A$}g>7a)ES;+G(P z8RAzUeih=^AbuU&0bM8nIRpZ%oGyX@e?TBh>0ttpWe7+BL?DOLBOo9k zAgjQo>M43T^ce9>t#HabJuXD&(*m6U{XZE;(8JN~=pj{}5WeR*`V|4s=jloGWO@qy z0{tTW5Bc@LU0bHjL*g0nfMS)#$wz0v!Yq;%6k^N{u&A*;M)AI^Rfd z76{!0fuWq<0)g=X3Ef72AP~A;AT&xObO(}55M7OAs#8d3LtCgvSL6P0%Ae4mg$PB? z1|rld=;sckpXeEPkDkM~d`TZi<6!zAeTY6xe?=dmkJ88Jujy~-Z|UzKutVU0zzKm1 z0yhL62)q#ZAV6jz8snDJ-&az4ivE%QiT)XJdPd;XALcXxf)of+AxIZc&G;`w_5Y)B zFnvQ{`gaHdVW$5SnEs2(VsI)8f_Pyl3~HfIB)O|pTPqo17)FACW{_SbmNOg#Ne>1z zqhL@F2)U??N^ns@GQyG33OLrTf}`5p&)Luy0y>(hsME73=@mS!Js|_O&{Jkm`Ok-$|OSY*sXCeQ=1W-m^;S7OgfVR zK?4XH3gz~XV_v2{)A(LvUM7=i!Zc;ji9n4YXbeFn1Wiy`{_h>nGHsder~_o$G3}WS zOh+b*>BMwqx-eatZV)^UL30RNK+qC`RuG`tX#+u92--o=zJloyk`|^9lP%0tF#QB! z=@1qcq$b^kfDQV)$A6)!JcRJsKL}IRd7Zz{R4~N?+D|~xu~ICUGI7Yj45Oo%VZx9B zWQ9JFSR{v=-)Ls6AQfXE=v>aABdfYRpj3=wo<)s@887sGU4_1nnIQCi-Ky*Rh^Eev zP+(X%*%z3pA*pytl!~5$R7?<*rdt)I3Ewhna#{$<}&k``Aj*p z0D|5S^noB7g1!*sK+q3@TnO?Y2tv>wf&t4JM5OSCSxVJqDwtvDr#A&Y2Zs3^EChf- zF)Abh(J}vph(2(5_J0A(TLhNhg&;r7@-~5GvoQE&cA!x&#D%dh1n4wkl`2fgE@qFw z@@@zU%9)QL81jHDf5v85eG8(%gmiG%R7gfiyq;)v8uNZU+`9kIhbCfv-0cv+8 z5R?iX*SE}fLdR7G!RUwBah(!M&y-2cjhJpXv{Sdf+ryu^}o8~Vo8<}C55F$Nf|3h%6>soitZ&TteiEVzK&I}N>;_H zSq-aYb!-G1$)eF34*^7{5JE5xg7FYM1HrQpOn_h_1kY8l#*mt@=1?qxwF_Djp5+8+ zlI_XLz7EZaJ&N5v^w=$13$+Foja9<4oNO}E2Q()y{t;tiC85t-t%a?_)hMxE>Yy4_DGqEawrvQ;HX@AE5R7b70mhf^ z31cTVTY#}M+lB4Qc4NDyY zC5(CWkK{(|6gyCWac;O{D;Gv|I69*qf+de&tbxb_J4}EPjhE(Cc2?|@2u5ZHJ6d?7 zJ_>^Qp-A-jlO%r1do83Yv&EQbKaTi%3V zB?PM=cngBn5UiGTYNE{!&IKC(FxD|r8 z!#uu^cw|3dcL;9?)-4#Qw~lX3wy{ zu)nguv1i$H?0E>bL-0NXA3%U|`ym7$L9i2oT@WD8a8Ct$u@cX#2+!*X&))?+KMv#h znTY2B0Z%ml`Uua5j;BO|@RV>6d{T+0M2_&3C?rbZ4Z)`nAozq&AyBJU#Z=a~BvN8P zd`k2Xd|oawLa^___>`C>Hjz(>Rpj#vM3=-N^0~h%pN*%hu7nfxN#aD&l%RPggyq5e z-598aq1;G&rjzVw@g0CU?27+%PKylmS z6%w>2N%$ja6mlsgO$98!4`cbmZI=>FzCOb8;bWO4V2N7&i7=L35thP$Gc@BWjyJ_o z=Pj2~(nr!)AQD9#PL@kh)Zx?v5*d^X3=ug%B=Sep8%qWWefUpRfK-Lo%t?wQB_SH0 z5NSMppPRxkj*yH;Arr|+$&->%lF^belCjKO2`_)_`*eaTZJ&lpO65R|9>F~@m`B%3s480&p@oD25=Nmpp$WxDD*w<`o?{S#9I703Wpm=Bs5x;mQhY-~ zBSa0vPvjeSs;q8K%SE6D#pxiSE9W915%FLRii_gR0$F=Flc4iNBqEEmBC-g56|&Tk zDrZAerDNPAoUn(B5z*v)BAU_nc|iD;s9oa;`5V{11p`9ycI_W`7aQ z0P=0Qe8DLu;;XWm7!I*>h1?S%Ad5vH6Yh6g*u>%7(*ltrxRKnG+$e4|H-;O_J;m`H zghUb~k|9wW5-E^Kg+v-8(jkFJtpka=72LQ=A}3T5IY}V0UYN+oZWEdLh{zi7J-F8e zB4)+-g`KyFH?@CTRRlpz$~)I)rKb z0ntdCxl_Vhm<=R4hCY!#Mue;T7w$KK$6q1QshmUJS?34T$BWz*L>6}m`NBjOgyaJ5 zDq4L=bVU+b6-Ww(llw!8g@8oMQIRj%UC_s?qO5kUa$Ds+Qd+7;L`oScE0st&sZ=VH z%B2daQmTSPPe}BFL~lqSfzO5n68IcQ^n*k$B=Rbxnh=rF$PkgzD1pden8<;*i5&8X z$QmG0>O(|IV<6GLl1Qn)QXi$Y$VH*~CrF?%zOW+J9Io!#(o{sG6m@v{KiuHWz`EJ}v@Tc%Qq%x3rZCD}bc!r0u00 zq#dPM(oWLO(k{}j(r%C_hQt$)KrV7AB+4K$6cWQAfm~bEG)7iPD^~zX`$)5;Xi`cl ztN?0m)f=6KmkQCL=s4$Ph3LxoFW`}gR6x9%lVGe@C7)Xpo zJfib8RO)b*kCpNQlc3S53q~t$xzk zFsX8Y(>a{*ROu@rJYN>^oFL%&oB;K>Do}@SnJHZ?;5kb=TRKNNS2|BRUs^6*AYCY3 z1c~P$@jN6ZL1Ho_rakMOJs zJcUI)(sv>8N*GUJQ4hHpZ682yaTEQN(C4l2kaVXMg@?+e$Tyo_E=7>dct9}sO814t z@^euvUlX_z7K0G4SK&%ct_q`dSb8)>;}Ma@S@*dse9Lj^uPDSS{a$)P`h)bO^px~R z=}*$1rKhQ6=`WC&1Btnim2j{nNrp8HKo%p|IW3N-kw+hH88uBr1?>8dY^Gt6rv&=@6ST6ti1VE{lM~n-9jO%qSC=N$-)NWzwkYT!|=? zSp+s$Rb`VX4X5Umc|ej zXB@u0j;uaP@s7}}>@isbNUVdzJ3>zXF*Ga7lp){af3g?&?$E5Py{sqFdRYfqM_HDv zldQ9>i>#}xo2kv%1}r?HUus9eTFV&?<4r}450h*Q}!f)lb!a6)7g1t(;8bxsJmQl$^` z{i1AIs70YQdT6ZniO`}Z3hi)rm3A1ubbBPc~mxE<8IN*(uqNvY%u>%TCMA$dDs)5)!8%fx0miCHWZ=ry+3$66kvr z7x}G1R_TSvF32v*E+IIt2ymVa!+8-B*C26Sfb+&9IBNh-If>wuQ;;}U38$PzaLOg@ z2XcvA1_?AXk2>A+khp;0oUZC!35i@S*CIUS8c19!m+K&L`N8m%8|2XfTzlkEq62aT z!6i3~a9ynemj=TnE@wkWC7>^c({{UOzN)lQ%+ul1wF_q~zAf zjZ{1Wv?c&;CjiAA*q981SBINsfVNil14~IRiH!T#g$s}@$zTb z53p16i2{w$VH&NFbfE@|DbReI+LjI;ekcPP$8)d zZ*`NelZWQ0mw#Nz=V#zasSK zq_FQ=eqA6ey$WHfmEqR#rvg;FZc9NbC=?tZ>p=3c%HV(kxg+HY2_);@8muW~3MESO zj^Kbor9i4#50do-tN$@LpomaJ-77f2RJ-@=?%;sJp+G0yAk9~}M9pt_pKMoVS`nv6 zMVhbhD*}pmMJ+{wB2kf~NLJKVq(HJUBr_q|1d>f5*$k48L$Wy}TR^fUBwJM|(n4)Y zQJ0>nKr3|>!s&rz>u`%|4}l4iorUIvCJP^F{zKP%MH>OZwvcR7*_;$;wag+#M@5$K zh9vrzcA-zC`TbS(!xi2`A$TDQ+lHDQM z1Cq%4UXVoA_xV5Uod;M{NA&0y+*^rk@4IYa*EAQmm-MYl>;l#pg0LzPg#c=dnsAbs z-ka&kswtA*d+)vX7*kE}y}vW}?qwH2!+Zbu{oj|5z`exXnLF(_XU?2CGZ*BIAU_D? zO(37wTL}dw*X*>h@>pc@c*10}#N>QpQ;;trOtuX(xdTLemaWudgIpNF{0^3-Xnyg)AH*k-e2f3qc~U7Km&mWL-yy#P#E?4_Z}+ zl(kZNw^WMiN2REKEZ$B$DayT-#6_m^zRLS6AE@(z$6 z0`g9fcY(YcWNGrw)!?hwS4As+60G3L=R$}W!#VI0= z=m)V1*&Vy)s_#d(VJ6&ENjR9vJ$^sWZ^H6Xth zZ6Uc7{`7OPQOA9=1kZq=KkZn<1NqD?f;_(i$c}GVE>wAZB+z~k5 zN^ralJFJKDQVGQq z3h|{93S90+Rqbvf=*UYY#zkiQA?w?O_j$Txxf zonGY_5k_TD8KPL(7G;#cxLJ~o?}PkfJnELf_{lJgI{-#y24PfYLH=$*I4WxqMxr$; zC-iBK^7jPIQB^LTeT|1%)Da%1f&7EK5*z2kA@Vp=IY;Diw!q^@h?a6Lk&asiO2>(N zSMTQ*P5cs>&C2mZOY|@%*Dzj%64Uk@(^XGvP;>mT&l#W^yeV| z0^~R!`wHYZANvO6--7%*kbe*IA9|JOBS?OftCXv$2K?JY$ox?v^H-4ng-Q$|6DL^1 zbDDpBPNO`9ka;S|f0D>N1IbjLsXU8ZApaTUzle7nw*AVTr3Sx1c@aVLLXiKKSE6e6 z`w-Dwr$loR5tXQ(;=ug}Ve1Nl=AQ%6q^#BZ1^c6Ujq-XC&Fcu7lx#cErJUZXe1M>N zoAP$$9m+eEcPZ~y-lM!%d7turpvnPXEkwzIqJW}-VgUViDGn$esES_Yg9S7n6(=~# zClO6*rvjSf)k1{{4y7ALb4Lix*9n?$05wuV^KF9WCKQ^R=@y_WQCtG0z?0e$O^ejr zA1b#HFh2rHl~;ZYlzNC@ey&8b(K_W9IK`nf$mTlb*Er#(w1Z8!%U_gI`%(Fe$m7of zk7P%*@@vEy<85ull%o8l;s}p_t7Lc@Ou1@=O0J?*w2Dz7dPbm3K$(HE0A&Tr22>SL zcAy+UIeS&S$fK%KTtH1CPzrY>@*t_X?^fMQh`a}= zDS6d>KusMYkq@aJB}6_TT5~)jO)qs&`fIson<)i#QvoIe@S0qvis> zu8(R2>L8$+fST8<`mg}!C$i0|&k)Wp2%OT|HojeN0#IaWn;Kr)-XU!MM%ervC~0Y1 zMP59i`kQ%J^>+mhZ#lA)6z?MzAe){7A!=I9BAaTQ6)ecBIiQBPw5=YgRw7yIO2TF< zVNU}ZsAm(Y_oRB3pjeVq#VeNMh>U&=+Zd762dSF{L8+c6 zP}wttD6Q(ngYMK*x2rpds5=saj=pRPVbeWv;>_1Wrk)N6q{4yfaS zIsvE?fkGwgWS~v~>Qtak1M2i%^?8LJb&+zl`V#C6N-9zIUYNe!Pj8o`_{;@Q>Q`Mb4A|nRNqZH(_KKFomZnO za?TJt(*tT;y;`S!kO=yQsjL=X>qz0AItMVGOOkO=SA~n2bBoe8qAVgk6h}2XPBGEs809h*P zPNiN-Pp2^oGG1d4h$OqQHI;(?C4~)U!Z62RM{bC^udN>Ls9F2I`ew%{hf0 zb-wBn&4t*XE++j6U$`yyr?&+A$GfC!;X32+O4`4^lBT(u@N^AOuSuN=4I&#fH)w9e z>t?_gY*TLt_cu|{f1=z=nUFZYQ$y4b4XPh+=QXH)Y#L&hdO$svqxfC!Q4L70r7@*uScIP4l|u4b7XHw={2SHfi2L zVgD{r9|DEzEn9%X^_EY7`V^?ofchM$F9c!#V|NpT7b1wZ!M2$S1!APh-W495zS}VWxgQEXc0pu%2Tt#uP&|1(g( z7lgfbXDqyS7odJA7H)TKO@Cpp9i#OD^(#=n4N2H*L)!TNOxSA^+6gG^wMlJCo7QHu zS?yTuIBl(Vf9-g{SK3oJQ~Vof8PH`wmjgWlXgSan&~&eMqA2XOQ3gll1DY4_ zDD3xFjw;AeZHE?LdXU#10`yLKZ5PlZhuEQ(Yl%ffdnjs8bS2TAv@6l1NaO281~GT5 zc2VvlC3vJ3Eg`5wX^$q|idLgZQM;0u6lukPK|+diqV^m@wHiA1vOBQt)=|orK6cfOh7!cLD7hB9ZrL zA0%KsseOQmc)A+pwU)f$b(q4k7T@Y{V=i+;O^BiTH@tyof&7q$3a%3keD z+LyJjXkXR7rhQ%ehW1VETiUmQ-UaAgfkwu52YNKnUZ87$9s{%wXn(KvodS*TD_4`F z=(Jl1jnb}h8aHF$2_57dI(pAx8g~SZKM)#!1X|iMuKk6`$X~U;kqhV$&|&e8GV(NK zw9w$XGTjIyQilUxG_ONJg}c6o;uEf8b?Ci|MCy2f$T+g4!(%pp-eVw<`jC{GT8HmK zKmn=K3PkR;omf&7i*6JWsk7>Ax+KIE?u?Gt@8lA577Gpy&upCpp!tSfKCIQ z0Xhrx*k0YvB9Xe?Mfs>3Lx>zF$;bVR@^SJokvo7$-QGx~4x6a9ARl!JB$76(Kc>y} z4a6awLccedSaDj%E`Pe=oac)bqDJf>Dqvv26P?JDB&7_ zo(}X3pl1R-3+UNE&*{}IDbUy{ZYR_&BQzc$(TK0<#5E#vqz2tQOyiEA@n}Nh8ldM& zG#-aERvao9E*zS$_QiXV##43pp7FfyG@u*vx-)=2XoxhPqdO0|(yb->V-wLIb?2k? zjh;7%^-V?HA)$4tZoNq3I)TO(LgV>_;duiXmZEIb-Arig)m^2#T6c}^THSTJ>vcEi zZq(fb^n9Qf0KE|CR-g|CdJ)iw=whJpf$hDzTM9JZQIL)I5E?rq8qp3Z>5jN|{hu=r z{O`|bbWaf)p9UIVyd`WW)IEnZ@>|3oVi=Hqi!{Efd!5ku8qi&N-5Wr650S=Ax_3p{ zxLJ^mOL0=7dtaE8EE@opitg9yTqa_}XDe`#Y zFpoPxI_lNPqh15_ngWk{J@SZKTUm0UUn6c<67PLH>TP;E@~E!@`q;eQ0rYW0<5BO{ z3y1$bsUIcqcs$BE{jNmLoiG4L<)#8z`Wn4opi%D=Xgp~nJ#Z!Pj6=)Rfrvr_G{Y;?G0{U#A&jEUEuRc|Paclv`@dUwsPl^ah|W1Nw5HuK@Z=pf>{DOKke|RafaxEFgKRe7*j3 zV$;{3MWDP|g7R7dC4FN-g}nJc$mKuS5dVcS{h!Q``gMd$Y^Q4^E-x1b?d{m~_1EaH zBV1k!^mTdt^*~=gL@saE-zIW-tH3335%>q2zWyHl{UVh22~gfNgeZ^d@u{U!)<3O(25tKEEkNH4Zm}1ESuKsmBDkir9 zeLE@UKYEVoH|gL1pV{>FpXq-jLjH687y2*tU+KTrf203a|DFDO{SQE+eeG_b?*aN= zpzj0vexM%!`az%{0{Y=z{ZEA+^&54E9<>ksU!*@hBK4=oq3ji)pCR)xT(=w6fdBOc zT*FStlVK##j}|(UL5ZEoprW257toJE*|XxEyvTcxf*3Uz4QA|51{2Uv*)>{XyqqkkP}>^N`s z8uk^bG^8pTwZF->7{(GR-;$_&hr9%d4ihRr7^ZRus2&DlipwDjJFc0X>c|!}(?+y{lg@#20%2om;x``l^Z3Id(IU9hM zN|%+A>onlLB0^-hK;(yn$Toq<_Xk9i;;b|rLx@~uSZz4maD<`90EQzCM;VSbphaX0 z&>sW+3DBPc{Ta}o1N{ZiUjqFV&|mi&@N7WxV>pqzgKojUrxGH+k%;`B$VuE2ibVc0 zOyrIr@*+ay#Xx^65t&CKD-JcRCl|3;(cg)8Byx<@+#3y75h8nm{vmI;8t5N~NaXc~ zn+TCN5F*hr1c|(vSgw8^)N&=AN@%##aE}P&-2#xmqUK?^nJCdeZ$gh9?bA8J;#g1N84e{{i%$K>r2w-@wR#DFdb)m=VCpdkxPOczlW4)9?!N z_!{!aPz4?thIrUAxNRI5^oAH7xBvZd`y;~R7GP+J$4`+*)h+D9Tz93^zm?e>VI^xO&p?D^Y?Oo^XZllLw|^09PtSN+}6QW4RIic~L+b z<%CD3ay#(~9mZH;)FY3^os1)ml}3e8X;c~2MvYNx)B&ReMg@!-7!5F5VDJ+?Fa}_Z zz?gcC29ZajMKl%|?Sx0O#3LRzQ?R5mxFA2wn&zeZ0tU zP3-#Q-p8XcX50gLG{%9k<&Ap+Q#CXmjr$st$dz$Fl#Yy@NXLr(h*xdfAktCdYMgPr zh$1dGB8pB#aa-@*l%h;E9zal>W~?*T8yk$%jWdihjkAoijdOsh2F4AH2bfX7>i)JP~U zM-=HCZ6gGq46T)#l}mFmm2fNb;k9; z#DKx>v2{qm(qhKnD7817Mb-ylecN!1$i=ed7nl4~-ugw-`S*eq#L8 z_!%%0fSCx)Bw!{3GX02Nz-Ypg z0rMu*p7auaPPmvGP!dWN9eW$~y$(@2v7VKh|&Gb?XGb!_&~U^Hn>#Ld~H zBQT{ zmdzJrkZHPUCc$zBFpKl1S->DwL-Cz6%{3iFuso1p*-o(3?@DIbCu|4H`KDG8%Y_1# zhai^QS~Qh%*KX<>)VOb2YFdWIeWnYTX zLAQY+823%bm`?nk8TUce<0dk_(tMWS^sO$L=&y0`>vZL!>)B2+Xm0)5E|VH^lDrxald3GteOivS)W3cX|s*+wFZ+g-6irAxG7J3x%C@?)ubdG^;2vP>$GHoF|zHQoMddIZc z^sebW)BC0mOdpy)0_GH8P6g&PU`_|-3}DU#<}6^&2Id@K*7llkE4aYp=OfpU7Yduc zCOk?W1q`0~?iODt%v|yx6z~7S((FHs5dXAtYr@S}dDCCONFD{|GUSn;r96vV3c$v-n|=8;A-2h0U|a|JL%^e8YZ%xc2blV%m72n_KkFypy~zzpJ1z^yKzWj2|u z0*z*iKqK)e*j6klipz{=(e#?D&2F>DJj%SYc^C7p=H1M@n@0n)4j7!2;gEG1FqZ>! z1u$0vvk{nHV6N&l7mlGZ<1sWu-!MlAjgl(?gUi5@$?Cu8NASN-qdAQ+@!u%-k?E>1du|o-OhyoI%6fh%hxrh5r@4y? zno(`I4Vc@3xdWIxfw>EqyMeg}n0tXicLh|0@4w27@BAS@=9T7E=G7Gk;s252iJ1qa zVf!Iq9tQ^Bq`ZbG!nle%tO$2Cceb~+)pa*@=W5zom*g6i10`kG!uI8frQHkLJG)Rj zt!rP}*_=zYw@Bmu^3JA?2^h6Y@Iy6|6N=3^l08@$xy|H+V%2AKj$C+b8ZlrA_oAdc z&wK$P^L$_)&YLd;=8++id8wH=Je%`m+Ha}%X{?YvBdSZy~4AP^{uBauIiLJSj=I_sKuYL<>2M#xe<*AMzG7tPatuz*29S zA<{Tqpz$Zd)ht5eK>q+0Bfad+a-gM2r12nuM&ebltymI`3oM<4#)Xzv%fXgKmNv^` z%MwewrNeRvFxd6}0On6%a2oJ8urgrFfGr1h1hDd6OILx$9F0fpTTv;wewS(n} z+F`i_)eg2|5Vb?OKqBih%atOGR}dK4kp#v|5MhkA4YRQ2TFV^-#_KHCTW+x2Xt~L9 zv*i}ct(My?w*#vHRtc;MST(R3V70*NfYk$Q0M^)Rxw8P{y#*K_Bruu^qLIZJVnH;r z!!89oL^KjtXUhw~nkCWrG7*h?%Y_TdP~Su=Jh>M|<6D+Z1je_4wdO7F0BalKK>fbu zBT+P>*0mhiDx79n@Wezpu=W99DZ3;Zzp#8Q(ujf@X>@KcmK5hltBm0IljUd2FP2{| zzgd2_{9*ai@|OjLVKuOBU_HQ&0(NI$cL5eV1Twcfu%mmeWg?DNO2pC15gaAA0(MLh z$I!5B+yS!DYCs&VMqnkk0;>gatQfNsUol3xnfSJh*hub_q7O%_%j!lPt=O)w5&mEM8MICekF)w7=@$NON8SWlqjhiVKGuD$`&kp#q%~ztTQk-yuu))Rz{Y{y1K2%*-3!>gf!zn#eSzJt*E+61 z;{^JA9<2q|DTKy^Bpg#vZbkD68VJ~N!!+&)8V@8iHUgV02uJHYq*3*mY6-cBX#n4Y zAl!>Iwptev8V?3Gowv3Dn;DvLw02m#1mS2!af`w+OSoD}xEeb^HmbNIB(x5*lGi85 zU$w3hXsq2%EGf!S)>8>E zRA8q8TL)}?ul3Xdjb|2Q<61%^zW0Fq06U{78*%yhKWDD`-=9@mFC#Qw4(xP^#*IiL zox?LV@e-V^kR5cqDh}1w>#a8u8gBr0X5M-eu(O6p<89VEMH`keK7>kHNwtuFz4Ah6i+4g$6b z*m=M<1KR>@4%qp?F6gzQGc@_JzEMDN6G3sIgyO+P6x)YU+!2EDbAsX*z_v;#eoau^ z-tn&1pRB(S6n_SGQQrD1ux&#`@lTr!xw8I6hUvv*n6{OXVS346!}N${1sZLP4Og^~ zMjI#4*nu?K%7{2!vMqpZN}B~~w5e=ro5rTK>1=wN!Dh6XY-V6Pf$aje8`!15E&~?3 z#G$~h0QN9oSN7VhB8@hONTbb7Xj~=HczBVWd*?qgsWP@)sX|ZQpwMd zXq;r5D$+Pbpz-MK#FC=Su+1Yh&a}<4&9=?49blVlJJ8l>JIIFe@EBl^1@<^#j|cVy zU{3`0Bw%s)J_XoQdu`1H8W+$X+gfE?Y>Nnur%5!PN&G=rT#g6!ykQ!51dYVM$cBR9 zbcx2*NTcm=Z7aEe#UmJa@s7rC>98={8r!jiM{L=%@-}SQvxmszNw!mwEZfOMI-Vm) z$J2;(TsxR_v_7GnCgHW#cD_g?LV(kl^9hls5sudm;8==ssqHF4WZt&Uw%)eEcA4#R z+ZDDeZ5wU9z+MRKMZjJR>?Ocn3Tz(Ob-=C%b_1}N_1dm35P5w;KHf}-yj&vk%A$O{ zdYH%^LF9vk$cKQvLL%}}Bofs|vwQi-LGfeTC$>**pV>aQePR33_Lc2x z+c&^o2kiC0qQ-k8u&D9g4D2ny-U{q(z~0_#`>ufEPt+akLns`7BPiY>p?DYB;aPqQ z5svo{qqqZ5tYQ(xDh}8?3n*6M*7yy^7icTF&<9>{mLvB*6st5^te31CrLKLza5y;X6M$Ev+m zmsH_?_^Jfq5szXZKfvNq{CIzb{4e&W;W_oczN4;cGT{;J9M4KT)*+8o^&>AN7qHKP zyh^;|V11j^+;ght5+V-(_Jw>EPE=nUB9Zf|aw3r}0+BDFq^nv$2Hlqj0$DX#d5x6b z;;IfoLRR5y7A53s+lePdSylyv$mLasR;{QytZHS|s;bphhgTg@)dTDsz`hCWTfn{z z>?UB}0d_O6?*jWCuX9lG zh-gCi64pClCV?eQN2OO9h; z(dacS9RGdc_zpo4Wy8-Biti(e%1zYXc;OqDD#^kixxZQ*tUs;#oS^s_u)pT3uyubM zB8uNseJ`T;oq*!+WYqmp7_9#oz@p0Zy7E{F$lt5}5`p|v0P^qcMJ&Xz%k2sz(oWfF zJ7Z_Naf+yTPTJ_?Dn?+n~d1tRUcA(40pJxea(4EmGBdmoW@zdeXV+5^B<=ItTi z6hkA@9<%R>VA+JRR2H47rfhdLUya{Hreg=i+W@| z*s*qRRCdj8ZOiR3X3Us|u3Tr=n8i)aZSBi)W74^x)u$qFvq5KI0 z7XdE1(SE)C2K$Znn@~X9V!zdXn`{ekG2k-5Wq}(@M8-JaYJuAy`?H}@shE~)#)_NX znp@t{-r3zXdv<&K;%rkh)<&b!J$c^2x#sTLbbb4TrmpVsOWKz&Ni{85*3>nny{omm zwSCFNrjACXsxH@t!SJ6`I@_1Ew&XCXN&GC=GBLM!UaqsY1ruqV--?acs5Fp=CEB`k zolDT^zL?;g6b8z5PHAsl(v6`=*UGijw|7j)Ez7kPo|DG-%5-j7YjZBy)H%Jit94#m zPH?`oKP>z4a{D9pN9~W8&whWR1*z^g2Hbg z?DLOy`2CS^O)Td3iNC?vYTT71ru2fC(q1H`>6lW~7p#d#d_nOy7zzeSN&$SN&leYd zW6@|VOj7cPBk`J8C>9ZZ!*O4Xq!f$Q_=53>@EeYY!;wft zEL1#P6DqV{#2=1^21zPVEY*8rQt9m`6-FqqCB&xoArpaZCgl(KYrp+RQr-{vN0vs+4rjFM&+(6{h=r} zN}>6&h67P7e$ZDF>4PsCj|W1l#V+wB8A-kZZhX)9**^dN-nI^J`*dlusQo+pA4I%- zZ~wvmqx~oQ&-P#JzuJGZW51XP+$7*812+Y@slZJGt`0aH@EbPT|Fr*Q|JxyRlsU>B zBOG!fUZw-r3|tFvIpF34w-C5i;12$;$rpzT<%>h@&^WXXokQmD;N!kNyTcg0|dm&7m5GBB;^v5I-oD9 zP%u&x3kSoYU??09VqYLh1tQq*F&&f`(P-2ch>0B}7_W(-D2)YTJ`|eqFqX;}3)BQ7 z@nAUY^P!}P`HQ6*B_?%XUs5O)Ya$ps5Q_MGSQVt(`$N8HO$HtgaakQ%(0u8)Ir6h0z~eIVlkA{zIZ^8(EcEHGR$cd zpBfAVd?7(>{&P}+a5!8nRgIX`JSi!Z`8APn49gV^2T;I=NpHr=sELOHz5rIC-yaV| z3KbZ_YV{*I5g!>7f*2GlFjC{g;s;2Mu+9Yu^IpY!56rq^aY4d3f{xHXNf<#`IASO) z95`eyKw*)bHQO7EdAoh3(r34o-XKa;ta}mIa5&&6<0Lj;4dyl)5Uz+X5EsRdV_(^i z>m2)$XD$*SJ843L_pom7y!Lu2cNqsdG3Fhpn=H;dP%~-orwKYHiu%`*M&&{Oy8e~u z>dJL@)g0Q~B>az*qbZJAGT)Vssg7xmI!C>u!7<%2!!Z-M4&V*}t`oQ};JSfZ3fwZ_ zmS5?Z?U>^@z%kcxprg@okfRB>LxEcf+-l$s2kr>qdVo6yxMKwg-z6wYxt7}Q+~N|I zXik@~qmX<`)SH%EcT;OyaR6vk8aq03^K+e@xfXHn;e^(%?isBu-3#Y-q2k+&yH&hR zow+8AD?Z8Fh5-s6DcVrm%CEIpn9MsdJI|e{)}y)yowH&n>)0lX-P|=^3&p8O~XHck9{vf*%%{MS+~dZ#hT4+M z)Zqj%H?e6+>-=0-p{~9p&;Qi%wc{Hh$~xfI3lVh{^= zl9u-6!nbt=wAL(Qb#NtcqzD|hov^IT1nc#qSH$pxzL|nS^w} zgj4O*q5ZfFt_yK^*fHvoqn{U+dU z2JRN%u#?{g-0fF7Yn)@8KBwOqa0Z8tNzynzFGlOfgmzH?U=hb}`>BHFQs2~< zgRRYAjRQVVj@tIqN^1aTq5T3D^Iwqe&V&PQ$V(*Dlz;s;{q z!-K){PMlrd*E9ZQ=QL-XvtFifHaMp{XEzoHUQQdn4xJP>oGYXVW zm!MD%Y=do8tuS0T7dl%}^XXUnTT`*#d9ZVlZ00`&YgB5|)9bg6EEQw1vx5|4iL)KJ zCx9boJ~%sxUGOQ=5v^hdgyS&A=T@Z90@2ignqxsXwToX%0E&f8w{~^3HLaM4J-9B> zCY?y>Jk+_OKLx8$O!?M3S33`PqF($gaL)nv{CX!ik94B)^#br^z?YLu4Ax(_(^LL$ z`|DtjmxN7eXAs1JNG#b~>pTIt7fXpf*?EfdR3}aiUIFf9;9e4l+z|p8QJm4Fdf_vx z)P`p{&m}c^pz|E(S|kxT)FWP7?>x_Wz7vPD*MWNjxHo$Y)5X#>DqUi;4I;ft1deH& zfo9Y#Y3dl?Dh~e6b)+tEynm~2G0b_n^BS4&a_1G!E1esiz0RwgI6UHDy$QH?fZGh* zyTHA7Io;yCj%-JE-bkaP%Adf!FZc-JjOs)3`U7nD0{w$zldx4{RCWkK9N6bjgYHI6 z32oKe%zX)-sEL#WD@0#0y{T{#C1Lr;M9CDKojQF`bz*Ve+hrnMw7H z^@(X?Gxg$Q9&$W?ozm)j*!hU_QRidM$DL0&pL9OueA@Yp^I7L}&gY#kIA3(Ws#%hq~TpzV0PaWNegf`i;C=z_SKxjF?swq+01lh(FW~+LURF|`4@h|oWr@z_g=n^K z?q1rN>sqy{E}zVWnVS zkYMh9Pphk+Rt%R(H%^&0Io*)zOaE&Uqq<)Vv4SyZIy1dCm1)c-Ce}{Cd4rhY??{B9 zw~`p?M-s_Xh9?3oLN#I4s`RW0waLcRln3ftR)O}qcxT}l= zHgqESrLZOvc2_dr$vJRfS+c<4bxgoN zOPdztR;?PFN)?{nI4+Y&XQoNftR&iAgGa+BhzoRRmhq-mtx8QuV6vG>37h~oPEPKh zYMhZt;K?LnX6@ujyVNajo!{+9wJ+|#h1Je}d8nIFn;lRgE)vU5R$sm8+@(Aq!Xl*#G3#$-b+;+d}PEC22! z z?;7u#;F{=~VlJrtBp9BY;UWjtILHi&C0vFf!F3; z%YfGn&BerZm`m7A{-g_clP?Eek24O}5jf-E4Ff$)$|Y}T*U>KAx`bOTUB?g)6W+9) zSWx)EE~fx*$-7Pi-qydnoGo@2YojtIbr-<^OH3x-*7pAk3#{v0*LnTsHm(a@ zc+PU(brJCPyz3I+o&A&EASUf-REGK`-Q2PC|0dZhTvzr__A1x4IGJ-@?Yai|YT!NV zT-Uj-2YzSZcj=#jTf_{w8U^4fy&%_Fa3K;6np2vH2t^N;Qj2}D!rl>6L0_V6q=MBP2!|pu z-w;#j3t!qSABd@p*=8z1UoH}k;_~PaQ|Sv|n#w0)D*kP!;*T^n`vdcaoQf2_G?g#K zRD#=11?vl!$XkY-iWI&ymG8t z59>2GRPR=ehUn6gR@YRI0X_|UrpHjd??-c9Wh>L~D8;Ku>K zKk(=gBYwXJeqSitKE<+)#XR5l-GbkXWlIW~63Uh>maP`U?fd?v6AtPt8@>er>tLH@ zn_BpKn`N6>J!h-39Z)?N_=&(zB4zt9|L_l)Q_m3d-h>aUo>$#m-BO(celqY=fv*F; zUMd@o@lx5^ie;NZ^1NlibHzM&2$>Sf)?F;yG*Soeo;V7NR%qWt3z;V&2Wht>3SV!t zY{yg|zg5{zs6G++>A=q*W$VY}sraz!)2dIeKBM|f;Aa9q8~6i&pDUH^9Q?k}Zs!-v zHjCu>n>X+6>C5xQLZ*bWtt*yo4yl8m;QC^?%L|#`M%k_@e7()G-CTX!R%N@r`VQb5 zfj?*fllS1ms_(77uloM#2Y_z^z8QFI!1+?y(34Rr+vCNu%_C*&$K=yOri8LRUo2Y- zDO*1#$=Pe$Ve+lQ*V`=H`_&(9RkkhF9|OM-_*PQ3cOU)r>k;dp5}Cv!JT_E+QT=80 zSJhtwe=zWEz@w_yE|u*&{Jzj`KNZWih?MQ!FOI=xE3k%Vy-Kp=uVUF2ld^qvbmKu% zICps=^MkjWn=5?1t+Kh5ZcYEPxwUQ`@P`23xpmpxCVZIN?6$bAZX57jz%KP6{ zw#!+4k^8*A%Dcj84o@RNO7mUXuX zKFr>&Lhljt#Z#$NB<>BwBLQzH5D9wY=<()F`ZCc>GMNcPqP~Wv&c%@suJUXZ*&nG1 zOmCe+lAkU9@rOo7r3P(xcguVm+#T*i+?{S@_f+6W@K~xTG5Z{1U#17S#BVX4o zUA(xdbA^ayU2Xxfh<7yzX8s0$DCLhSKNIAO`$$~YcOT_G+KsTS1^z1;(Ke>b-C?%NNT zL<37*t^+lHp{;k_erPcbVZC9hL(20x?(+x9vuv~bLia@|Mfi(=zqkiqkL~c3%N#Gd z^D>2doqPR^Np&?X=pr>)HR9KKg8z-r_i|bJ2suSF{7g5xxDcD?EO!$z$m752-MC?5 zrn_D6=Er z<7)RGKeb`{?70o@B};LcZ)BxHsZ!5G?=C@>Om{bvwR!XaOLXH0^Okn!x_Zicj6EY} z)h%sq&gIbc>Ls1N(qOWXyf4bF=$egx3mM8Ad*pd@57ncYKB+E?zR#~z*&WVGSGC(S z3O}i9JuHVQ&Cj;ssy8Nq8$g;nTRX7M@k=7ls`nH06q!tQoU(`MK|>khTO-&_>sEB3 zV_icnd1?~Rc7CaH*WGp>jngoLm{RdseWaSV{-&fzdUa13KA$CJ856Xu_xS@oTo2z< zu|5=z^z76#vPajW!Okf@f@HieGMbhr)url5MzXmkvP2@e5|jinNSMYX1 zyu`ASN*9WPF=pWEwQ}p)T{mmWAfICBIR_MIST|=1{`0^_6vicdwTR@cI|!o>^0|za zsbprETehn#AdAXsWfNpmWp%Q4*;3gm*&5kNvh!pY$S#syBHJjtUUs|eA=x9c$7D~) zo{~Kyds(&_?UP^2{wNz!wo{p+OjV{S)0Nefh07+FwUsR?>ndAXwyLbB?8vgC%Z@2K zq3ooxQ_4;&JEQE%vZuge_Z zVYV>P&i@>!u6qR;a{eJ?J^G3WAzzeDK>>M>Y#J__ulqQ9mz(L)BV6_EEln#NP2G;b z9{!jkfy*-JTjqWMji54h&xpRMrTY;#?kX2P%ex;3eq-TP7Vf8T373QvRy;}6K36~T zj~8V>_Ld)7?k%5F9xwM}8+*$4D4$;*gtB=(Pea)*JsRV>l2iQ*^TvZ267KeaHuB-RtUTYR=U+%`5uQHpW8fus@OZdHtCX z>KW-w)EkS$g5G2xgkJBsT_F;Ph@+(VM2wC5t!6ZJ6}DW>XzgBDhZHf?8w@2nF^OOUBEAY1ge>?Cv zXS);lyMVtN_x(G_ zJD}A3h{Fu-i$m{W^w;iKC>bS-dFV@lsQuz9LWu{n$LJX)^IhXHdCVS*$Lg_psyud& z!{hY0Jk=hz#{>NRz&`-|gTOxo{KLRM0{o-EKL$K@jVFMA68NWpfBG8F&YoR7yLxu> z?Cu%u@p@`JV>~{O-xKfzfqw=nJW%0>im6c10u>!laU@h61r?`2#d%P11ytMs6$g@f zvk0CUHJDNKG^yz;bj^hJ1*kiY>HAiC`;M?Zs-dL9x)yTq&s^D5D~W?<;L6^rM!w{5%rv*@_n zx5qQr(pT8RnBqx!_Qx^BllEjhSbTf|TYV>PeBC-3P2Vno(jBW>+yqhZgDd@5CwL6|h_u0tRVZxyaoqVS3@x77vLCNg zPWH_49N?MjIndMSImpxGndfQtw0Lr!`JM%yg`QT=!Jb8)HqTLCQ!*htI)6?bY z_AK=*^DOrq>RI7A%(K$7%Cp*YxaSB@j|V(QdXDlO?OEeF#&fLaIM4B(6Fet+PV$`W zImL6T=QPjho-;gWdd~8k?K#J@)^o1sJkR-_3p^KkF7jOLxx{m+C+}J3S?}54xy*C9 z=L*l2o{hl23jAxpzYhExz`qInTfn~!{3hVv0e&;^?*jiG@b3fv0q`FJ{}JG;)p#`g zd;p@M@79x5uJVkf8=2^E!4p@0e{RH&dr z4HX)w&_aa{D)dlcfC?j2n4rQ86&9$lLWK<~s-VIS6%MFyLWK(|s-eQ&Gk!*g=w6IH zr!&{w-r2H8G98JeLy3qtoKA+kp-?*Mjm6_3Z#ssXoP6n2G!zb$gvPNl>GSzOf zEQU_RlD8qD~-u}l_A znZlZnN1|c0iul9fm@k;lgi^)O!4z(W^+l1|qn(I+ehk+^HmPrz?g| zrQ)dcV4I+=1@)g$GVM*KuvHVW6t+5Up~YR^#n1^fEkdT|FIwoWGH z#~O@>y%9_$l1K(pAz!xm>{vLGO{KFDuRj&WeEWk~gTZuwY#I!N(zqcq87c{#O5@JL z7*=pJ=Eu;uM;L1`oW||$kxV3nYiG$+34_^8D3}Rim4yQ7v^NyZguKagIN?PdDx2`7 zqP}FNly9;VGK}>diU+VwaPueDw=e0dl6Hp=2PQzzQmVhINt%dK1{_er&gJG+9DyHj#)Yqp1*XTg=2!^NnY`acpsKI2uhvvXN{S%TvrZ zZpMv7vWXC8G?>AhU|nK24|!9WEN(@O1#w$w39*4hI*{;%kg8NDh*V)aC4A8g{xgYt zHIt-!W{S^7;Sk5_2p~q-Frj!BpN%MaeZCBKq!dh7>2Sa zCUC21%A3XQ#*wH$l<*}>LT7zG%pLZa3{DcT1``==LOA)@v+;Wr~%A z&SDJ&a5KI)8jNBMMzH2%F>I_5?uiXzG=Dr@(i?o)3~tB8PM%GZ&;b+^i9{ggMSmyk zu{aR;V^9l7AEi$)9Y;%SHh^Lg^BfJN!oGA#eWya%Oxlm~I~7O}i5$kz z2`sNK8%-sAI9~YB#k5ZjrhGwU0iTUFT`XlbmGve<;ixy5h~mKpxc4|6C?Pf)4`Bo1 zy2kn+y(>T6h6QBY#(k_j;E5?f`lcU=Eb~;XvpUcpybAl)7WcM zCA~P1j0HlexF7A!LCkk1imj8u)6qNMhC=OETD3%giANwWly2ddLMNl>z zL_$*0csN-i+2YtAQ3U$DIJ?B0q=JZF1jTtE6N^O?hy@~6%r~07v)CE4UffTf#g<2s67eNM@id-|kxrFJh(tW*PiJCr952JjAP!U5cd&J0!34HaCg4wHOWM+(N+p6p zq$5iV>PS`C8&8oEpa4Vxj^{~~N{C<}lg@m(XVW6MWTGRmj;_)ovhf*6uqcHa-L(!x+h=W4H zpY$g}!4j%)9v&6Ov_R5NWEJ-3L^6VWXH!Tv)?qSJ+Ao92P$ZcNqlCiBLq`&9`JgZ1 zO{Z|ny)PI@V?7q@8}$_&g?%_Ig)vMh5s!G22^2voY{zUe96+*47z|`_tVyGOg!P(4 zc@o1xBoGp$4;tq)nRqN%(w3pDA4ew4GD=p=Nh0aqkxV9yqfCiB!S)Db!Wap7jcy0@gxo;8I+`0X3Rtkb3l%UA!nH2@PU5MeJzVadm8nwBNU3m*+P#*%1<2IM2ENug-mczCCTS_nK?2B{P{> zv!(+pI?(Nk^bJny+B2>;tU%So542Fl2J<36J8hugFIH zt1aEw}N?ONV{pN?*n(M_?3RKu77GwQku5Bn|`5(YhzWJg;|g? z?V>inGoBFBi{s*JucQf6`(`9*&wR9>kUV;PT8XsR(l(s`$*$V6V_fCq)A^-&_BzVa zT7+%4G_y3fw6L_aw313QsWg{L3#qh}N~`UbHeA(mSlU~nrNa9_cqa?H)=nzDw0*1W z*@0rU%A-M^pSPR9mAcreS{O;4l2h-Go7_7lgNH5k{bU^uKG%iC3c4n7l{jX?gsGl# zqI(Z8uJvjGkL8Kv)Hqs~enX|Ur)B(&#uY zmg!fpEZu{XvMoIsm=**KO z;lcG|wKZLWLmCC!?7<01!7Oc<#w}s(2mBY8F%yyoMu(2pF9;jAUj|0oMmD$Wcl<09 zEvY<0LuDHG?v0x)+MFJJOTA+fQnM|rTk{CSDxC-SAFDOY;6|Qb z_b`6l#`v}8rwYSW^F(~NE$%;*(-d+TUjan|3){~5b6*D}wzdsM6j z3ipX?`t(flug_b}w#?UdNxR#0SDzmeJ}S0Jv-tQ?oE=pv9QnA%8` zxG`i|Vp(c=*s{#B+_J*5(z433S}J{|LJQ{R&H$+ll*%Bf43^3esSMp^dBn2TvaUgd zWrO8W%SOv4%VwzzlgeYZ`v4nyoVc3o&(+?3vXQBVL5C$VmWF#W;t#-A(c3( z#7l*dZmd)iq%w}XIpU_}49;23a~P*{jMx4#K`JcYr47LxTJ=9y3eH_RCTRmyta10Z z-}r=-6jt`+h?`dO6WWb_qn5an$KtHqdFd4&pB9&X+v$+8JWwZA%DQ7w+6j^8IH;XH zl{g6~Iwoifs&N6ia7=i{@|<=u^sH18vnkVw@f^?Wk~|iC}#^R*@+- z)LgT?!8xYoy5%*?4a@6NnJ5*;+%&1A=UU#hyk&XY@{Uw8q%uV+Q>CJ>KVQknl75J9 zKUF)^(eG%L@4?Dm1*tMlfT|2&<(+~%XGK0-%_t)-mL+<$Q-y+Gd20S+%O~3I-jvFu zEX$`-nXK)uc0N^X3;mM0Wz9sOUgf=#{tu>|?NZdLHS5;5I$g#jvunmAvx=1}SMkg* z(;oTPZmS!!Oe&`*kB>|0ln^%|wwFFDDgWfLJa>3FY8X46f9g{^&S-`0Gt$$O`Hq&R z!b5agrhkxN!kSN}UtTqH^%_Mcr)|sh&bzNx?K-7RkMhiR%B~$;I5Vo6xn9V&Okcj# zz;gQxsRp%!Dc=^7WoMq6uhAoJk7cAWCUi_qO-`i{cPNd0Bx`yYpW`$z|4do0NqvuV z8-_LF>9T+M6n(R>nEqPk3QH*YJ3Xs<>35h(^?(>Hl9)|3TRbZEiI>DH;;OhNUK6j2 zcf@DnbMdA4ju}+GCbKEXRNYkDRL4};WMK|fGgE6*TT^>e2UEOhJaea3nhu#>G$u6_ z%ykOSpX8MPKc>(Bp)q=z@Yj}awI=+HRHkKFzLN^`o&VumJQ!`cW%$oeMlRi zdTZ;L6+h*W%1o)u=oPf{_SSA5!a4_udj2?tW$I&kJ7ziZ>}{+zwP^(N6B)TY>m)yr zR%GSBv~3aE+@#^kl>4&%1G57HLOlDLt*9YwCmR11(stnu{ol6vm#-Pxs(X(CgNMbA zNttT=*5sKJR@U>~{QqSoGS=d={AT%`={vL(7Vp#ctjNl;g(p|}LqU$^56hq0dDUHh zeq_+7k^R#~Y4bE!9n-uABrHsMk|)ju2lK%w~|-2+TCn}f@{>u zuF0dbrG?)$DJ3JlcO1u}#5n$BF~T?HF@g6U!uMwzA?34c)@M?aUSQ`q@|Nl;FVAAV zo6;!6P9YBM!i*MGKW0;LZdg!?%N=?TF_ovdu=3fBxaeETephKXAto_7o(B$C9gms1 z`4yKJ+4yd@LD5aiXI08;*1W|%L{!}~bTr9s-8Q>To5G=^UHg!>$-(+45Yl$_di`Iv z=>vC75h_}V?qaAIDPkG0CyKfH#Mf+|=DosX*O!>?`kMIMWHR|NOxsLuQF588vn6XCYp|%oHMM^_z<745 zzSW`)VGX3RB+JV6#HIiEEo}&MGK4Wf{of8t5C8WMOB)B58#Qi0X@{kxwt97iv|aFv z{xA1p9YlM|6h0CR~LMkhzvMSfw#M;yvW#z&le|N8u$|L;C|Fa5h zYi)Pe7246-S*y@aQdyg2<=W4>f346SROtQxUZLxIl`l8G;Fu&#!b^AyAK^>a^fCqf z=f|e~L9K-!>%dfGI(%(WPgs}|?-mhEifh-lGS^c20t05L>7ARc6Sssu)fR54jh z7Y}iAH&-lVviu6MMy%sRZ;Qwh+nF-|IFsg&@VbuE;-Wrr{yD~xtBfOWa`N|q_(Xgm zz7;?65`^ExpLwDT15tn|d)x6aR|E=0sKQ+8@LI}?mAF|fR-Aj(o;i8HcNj+(>O{a1|ODv9d3f)_%Hs-oI|8qHwORXPsDqNcb{)DqS2 zK9CoTKcTa6OUb3`+3cS_krP?_Kq-Ao7}A}PBbt&Puwqh5y)LMJ!AWQw5HIP2V?q|x{G(U{X8*H3=)Iy zW~0UljJp44W9vgjc&-?xZ+&CnUW^fA?>_#r&&@ZsFis@qi19QKrcjq?9{t+&?i%Ei$0J86 zoORtrjTp%(yJM$Oc$%1$Bho26qm;r2=ue#n`R0i!Vyc*S55@0v7{$*JiP_|4CO266 z>kr+g1^3HH(H0>O=1POM@boOf4U>B)`NjOL!)ABg2Gj#}je@so!-L+0#kQgPgFTbAM|$!^w#X5=cVA%H=UFvE zI}Yy8HMi?)w2ZaP?zWmdE%frBo5z0kqdaO zfEMpjQ9YX%gH9mV~#o zT`(H>+Yj6}{=6&R6Yt-3Cto+*=L4h655>(K@ex6PTuRXWwX;Z`com=OS1IqhOP1Z2 zKjwca5_82@;%godEiLJ#Y?8?tx1GA?ac%T_@xxv3+i>*&OLS`ax}}Y+KaD89Mth$4 zMf^%}cd;`@DZgtY>>qb*ICz8fvG5Ho;o(O51 z5~lyzm~AR!@(*d7==p1M^#%RMS*AceE|WrQFsXFRou<jI#WYZLrG_5f`W;)4bj4P%WOz-iG?k`>@ zuRyO_UQVw_ug+cry+(SC^_u84*Xv=gZC?AmPH+L^X`aXZ+Upmu-@LuOt9Uo?4)t#8 z-P*g4cR%mp-pSq%c`xu@;l06oulF(U^WJ&h?|Xml{e$-(KIMGs`9%7(@#*3-%x9cW zn$HZMDK{2ThW_wVCB)PJ=9IRBacbNrY3Z}s2jf876q|7HK{{_pyK zA7Bay45%1TEx;KN8PGXkV8FlhU<_4?_*cEUv;8eg10dEC-9Po9(4*`D!mJ6&M zXblVtY!=ufa6sUQz=?sGfr|oH1#Sr38+a`6d|+PS`+=Va{t)#IfUag^qs1~)c+FI?SKBy+Bsp>p+nVO{@ zP*19t)Th+v)obcI>WAu=>Mivbv&kH2uBA6E;g$a!wduBN<>rQ-ixPdTgP7)H?Q894 z?Qb1mo6-f_qQ5%Jhw?@yYa|vvDsYO-OIvT`31Mm zj2kz-k~n2c&|ZVcoltES&_8^#;Ew6-H!-y-Waax$w9DY%dANl~hm8Pg34DnOfKRj^Om?6CY>(fY%W#Xi-AmsD!k;`xO3+%ESi3f>yT z-w$<5FFKm54NQA63a(M)Gq=tDW0FjfU*?$GM=h+eJS2%O0KXQmb` zXQ(ZEhm*z((F^S#mzp>vQ7a^x_r(s?7Q~3v;~c90 zS`S7l7o~F6Uz<^OK`NJCrNrl~&s$%xz9^3SoVUJABwTXRUeA@Dzqq_H19UK{OVsX& z^-m`_shrnJIG4Xnv-N6b&EfnJlEOhwe_&p}ooBsfYjG-p7jH5%y?faPh?p? zlnU?3pa;>=Q+s>fXO_R7K2sa>uL5<=e>0c$li-(kT0gaZX8qjyh4oA8SJtns+}M3e zDo;!08L2QW<2k83FO?Uh!mA|K6@5Zmn_gA$AiZY`q1vCcELM8QxkV+vQEc`R^L|DK zHOc?BHeocLMHTb~isDjB-(bPYE%epMd-fLn?1d5S{>e+Y}`F(xHBpu=-seCLIrri7{&0VEAMw&-S^LQ=rV9&gz!c`mkF_xrv)$S!5 zlV2UigeYy|H0ztC@iJy@0W$p}pz&H{(rr^O_+okea1TT?N(=nsbWN{LJA zn#5)OH0{7rAwL;C;^Nc$C-+SlGd8{0tY%wFTPs^@%LrRrKc>vxlFFx2`B|TC{0Y;3 zi>_f|R0h*Bw3$i9%;LhCg9Q^a^+UI<1FxO6b+mP|b+&b}b+vVq%4bsfLMmTLh4GMC zEFOkmrN(#s`1A;|JfU z+ut_cHo=x?OA_U5$#whLQfw1_mivCHKJ0UzI#2WCmGOSZY+N9%#9xKH3`U#7KOrMA z>HZAu#pBc((+EoZusqYMQ+dmITxwr!y$zZQ?Suyf^jXFolb8;~SNM_fUEbsoS5Ta1 zD@A{JdvVF5rD?QOe##UT^JhE%ZM3+_wkg`<3j_OWM`F(ub9$C@=0+GS?g>(>%cXA z9~j|E+w5V+v@?CeeYR~59i+$)j21eNY5q2D$@6v?&q92*MYa{pBegBIEwL@NJ#1TM z<32BAJI(Shsr)TfAyv~3+e+Ii+iL##2q*KZmsGu_*{=PIxr;V@7aOC>8$*k6i%lO_ z$cFK=E({*5fx{1Z(BlE)XWGElD8e~R>tNk!=lX=nT8#M_yuXcuN^e%M>l??(Tv|E< zsJ_}@khf>l-)75YMLt`WE!&nORUfJPO4TpNw!M0H`mbsKZoFArnS>eq!W}HD&kN_SyE^4%iOb4%rUdj@XXcj@gdePS{S` zPT5XN)nBS^sYXdPTB`R;HBqV$OLe_eiRzM6Uy$nO(i|YoH8Z>4u${A=w_UJZq%mBw zUAA4ZJz;y&_LS{u+cUOjyo^@e&Sa{ zD>O)&IKWfr?NS~-); zU)o{qSKDu;j}+Oq-?ibTv_XWQreuubj}_yhn%lSw;(0NnXOg_pw>;xkXz#c&F=-iT zp3~%5&*N#fzwLp%7Q`;>CcBs2+wNocwfou2*!}HPW_797kZMh--Y3;sQmrl3I#Lam zYF(+;+ih30vo~?mUe5n<|9$*#Ma~7)5dCznzf>DYuQSr?ER)Sud;Te6jl!)P(S;gQ zE%m<;?<@IB`hL%ZB+hM8X!WK3TKgkBT6;+{Q@S`)EcG*8lO`GGSe&DjEQOchane-K ztockx$x`(Bq541;nyk-nFRdhF7OC;62^@v^`?zFD?2^_@c}sI?zvfsL*NGJv^#fYT zY)xk6FzryrJs(!Gv)5%sJbOK8tHXZdL1+VN#_yzl_k5&9?BIT zyIZQ3EPF$#TD93QH9EviNRKgU#5ip#NQdWp5%wn93qGE;H`ZPYqS|=DhyQE57R2jx ziPwU7zS7d(Mt>)WooDT4NY(KVU*RaqF`i?)ah4N3Hg5FzBF|6RJK5<}`oo*tIZsY4 zGK6Q_yJ)?n)ZdjDX6@Zw&xcve92&sliHC(C@QjIJav+UiB;iZu=ygb04r$sKtWZc9CjV zsdg(&%noBmI(v4cx-pN12P+sii_K>Bq^bDnzUQZGEd(z|;~zvHn>>S_8pza>>2 zA2U8CS#QYg)A_4Qdq_xo;IU-ddfA?|U$?(T+Fti+rlqZ^ezq_~s=f5QP00MHMBd)E zzf+jE!BXvAGH)MowqXC*e$)Pm{ZspAQtczvzEb62GeD{X3zOH&*gd+o)>HCRVb4Ec z_cMO#xi{=d)V;K_KaKJS{cHOA>*@PgPhb8J>F{%u=g{jY^s2_UAbLdrH;b_g5ZvVT=NHw`c*L6HV*L93=jC4Hch;h)KQ>2&{2D?z~9r&b8~%o&C@MLw7#w zxL|bW^Llq)LU*oRhwjXmZtu=q)-}$g^}cdH7x0bq=n{uz$5YzbjN@7Tuslrb+$;0X zW|kR8Wmdv2(YIfAyi(Y=*GZM@M7N#iIbI`ijvJ2G9d9_^lAaKqj#@1dbc)7)6=m_J)d!WX%xTKQ~VvzXZ|v}FoQTG}DE z!S6S(?pl5}<>zOEo}X-K;)2g@W8YtnzYFt|B~>OS+?F4w_WCZTpRwQr%sUGiQj=NFFm934afk_K;rbEy|P0Qd^U=vyrns|C+OE z`sp24`3jE*&fZR554PLc$Jy7}&)MHOz&X%4$T`?K#L2lGLIBfmg*6y z9+m1bsUF|$9Bv#BoDXtknkz%G zaruXfd%CjXOyzjsOq1%#{NsUhlGX$#2d&mf^_2AC?;!1;ncd5qD&-&loew!PIV3na zwx7vza%?|)cZUS$Jm*5jcjtWVkZ?{rBm~sskl=Oo&W8l&GUrPDklE> zU5~k1;*c;RCT&399{JbLOZmIjxn3LToEz!2o4p!nz4pock?ykIX`jzLQ=-#mIkO8p zEtfN|lQhpETB^?!cG~qur+w1XX)6?+N>Tjp{(Bkb&KOe=~>*G7~` z&r8mi3)91eg_laE=em}j*PJ(;uRGt6>dR7nMXGsHy;_hSTk(5)o?+@$CpYf2I%N2>2i^}XHBzl_n#{KSQvD!*^m0|Bu>}tCzoOCpGUd9k{!bd4@yDsFj;k(1my1jLA7#1fN%iBq z8@gN;mt7l&o^{#u>%un~hw98@915_M7>7KYYUm2rhb|XaLuW|!(|`EN5dCsx*QEI5 z5*^dk%=VFUZK zr><_U?yerLp04|)`ju3_k?OZn{Z6Xi7xYe7Gh^`L&b#(UCs$UBoNyN#yKejQ)YFge z;Tn@`l+llW__u!S{fg0#s}}9YuJNu(^kdfqSE4J)mF!A!O?0KY(p>4T45|JkRSsmo zNcC5#{wCGmrAp`iQ>uSS_3z!T$@%?wdQfB~tsl>#ADcyfKQ?tU@QFOz1IrysARA6FV%DM2Is0;FG{@z273yx#Sw){i$xvv-zjqcr>6Wk25P z$~O9Ome!BWzI4h;)9J^4x%0M*ORWNq*;~bveFzR%@w4%Qelrir1xmHnct(!<-hOkw#!Yfm-Ne0=5oemse=_nVF0KQd^lHcf!{ zq5r3|N=i&KX?WXHF%6CR9Rs5q-kzz#H_y9_SDc%ff8j1R-O%VScfLE#h#Hswn5;G% zfj|38Idye?t+$x(XfZ#yestZE<~sQ;=03f}*reGa&DP>A=4aP0g)OGOG}kKGV*V1h za$JAAh1(>}wWT>&n(Gy|ldpYW=Fe!hWa6}rk-uU;7O#rq7AiN`)0vNaRvOH@NrubaRi0 zIScw-EBb$ILM(TC6Vk>SE1Po1TYF7e{#zZjg)_Os?XJyiC3hWZb}(Bh&s~q7gt%FA zrrKy@QBb~kf3m*!AuZYa%R(%h(^wfz4-i+6W5nnw7)H4UHA&f?vD-4Af| zclUGmcMot6bPsY5b`Nn6bq{k7m*&RO+(eq2N^_JnH%>+-poyg|DDDE*U#eJ=^Xvt8PeP~|LE`5-stXkuuhsrdR3MI zb&Y@0*o?Dy_bj*M=$n{KJN?5~^odUH_3jPE0}jPHEwg1tkI!~Ls!ih1o{A{>OYOc-{=C4E#&10#Y<6e! zB#V2Cd#ih!J4>3oNpp8;?jg-RbKN=aT)#N?4r#t$n)_*2Qq2Q0s}9yC18WDdA^Ln^ z?catP^IeRo)mi`rbC(O|K6^IzxciW{xqa^a?gQ?F(%eg$drNa4Y3`dVZu;c%kduRR zVN)t+P5Bez^;cOl;f^;V#!c3zu=kCbtj}s@@=uN8zx6yXq&;85jPhc?)W6Py{)I2U z<@;5NeMB!^n-A!T_N@CnQ}o^Eq`7|-7iSh4oHUOul7`>if0q(is1S}&rpw0bfsG-sg7(hxfiD*gEVN9h zQd$WrC2;D>U0`-?oYuLu2M#^c?zM^fA#LSOy`&(Kr@ehTv{Lvg+4BN zXcN9G^CDc%0<`xlCrr~%4f^r&X_oWU&Mi}Ukc5}w4(Qso19K{Q5wSKU$hb(zVsqMB zodsWwi{)7W{YfuIFZdIG#^n`8sW(QhgpGFM~Fs zEO@}AYX>8s&Z#L~JFsx5HZwSO3fnh6XUsO|MbqAyenA!dS(a1;WcrlnZO>(bRNj(Z zm35AM-`O8jO@EbjXv44;?b=6odgu7!$USPrNN5VU3@A}Y2PtWgq-I>|)kfhFkxiS^3T}Ukc>Wr( z*}RC`KU2+)YDU5;W>&e{vQSzbjnGp|F(PMu3z zEtU!{8bEfZE(MFmYC(4E-Zspys> zPXw}k+GXax0wHC;M&DMQL@EWFa80e z-t;f)uNn{HU~}i!?G{@D*^`z=EVoWxh72ue)|j(=zI~^kQ|hSE+DqXJrlx0)>M|m1N|P}DZ&X~ws8Nl=SS6tNyTB)~V$N)qc-hAS zA{Ur$@d3*@{AMzn?4~xRZl->wQKnc{4H#=0#|pKHtR9eJN;PGeCYz?3rkiG(X7T3l z&88gFlcwkOcRj~=O=a=JgDH+p~KUDms% zcd)n9JJLJayOVb>?}6Tfy@#@nz#Q-8-s`f zHCv)RdSMVoApuE9K`JJLrDto-z(aThXYdT(!F%`sAK@lG#pn1EU*lVRFT{Oi5C8>b zQ68006*a&k`}YNdg(L23fMy`p`$l6LR^ke-;|C#X`GU{aaw8H=zyY}y`&z3VqR|nZ z(G}y6jpuL!Z{lqbe=Xv#Mf|mX7A%qna#)-AYFEU4u!2P_YBxnoP;Tw}5sUGdf_Yeo z#dsLYLCm#t@i>m-B!0r*Le!!BI@M4Yp@=|Zu#GxwqfTqIMSIM`89ad(!STJ$>mcqr z#9ikrkmEX(8%&wODBv?8axKwJOK8!K@6S)?WDmM_zJ||;5*Rv8r%YHrNOWG9e)a8 z2|@+XrY%)KJ@8H)VPU^4?3ac8vanwk_RG=)v{4JWw9LSI9Kt!UO$*z!{0PdoP(Euk z3k!A25~;#k6_jJ8999<8BomtrrE9F{g?^f!=Iv>li4x6wYY|DBWM{o=; zf$dt~1Ua#i6YJ+-U#))$VWZA$)Ul22+sdLG*e_c{G(rTZBc7rZwq|I7R%iqE)7Brv zW*dy57!K;hMxEHG6I(3eLEJnCCv5Yu7Z>mreiFj&1-5BtoAxNM&-TusP1w7GHev6D zKIjL^wo|s9vh5PfumY=a0B3O?7x5mbWBWItjvefyqb6#h4%in*H}t^$AWlaHCSfwB zVl_5lGqz$U$g|@#s8=g_uCo*lF)$Iqb79lzsG{4IpD0%%jt zDyRn9l#@I-Yaoz#Kz9grvI2lxm#@hLtBu{w#>Wr8<+L7Q>W&s_@4D2MW3e0POn01`l5 zyT}*U|AmWfy4a@ceNeuO@?Dhg`V!>DMP6KN%T3+5ZE(PaPN2@+v@@(>;v`Wei1Jt53k}nh{sJ1+~mMb4&3CxO?|nkFE{n&CN4K|xwW{+ zK`1#0B?qD8Ae0=0RtNPHO8!GfVmclHIS*xksHIUO#_BoV&4rQN1+2_!&@h!dw zWjCbkhLqiKILKYY@kqpzxQc6_tgtY&LL0QhdTa;#9JY&70?KJr7D1qWHKLqG>5!O> zIiOw|k*7v{rxAH-M4lS$!%18Mu{C1<8~uhq@Rtzb3NC=(hhG74g+GmF@jPAx`3)z( z;p8`*{Dza?aPk{Ye#6OcIQb2yjfInsaPkpOKElaIIQa-?o8jamoP31;h@bEah#{O9 z!igb5zzaU`gFgbHqAX~G5tUFCHBbw|pj}2-V22CzrHF7eMig40HOOZ~2Xsa^^h9sa z{vrlq2&kV3>N;W+;xHEEI3fuXk&eljhMC9&Iggl+MOcdESOwZj1oaoO5nGUjTp=Ra zP9)ojWIK^;Cz9<%vYkk_6UlZW*-j+eiDWyGY$uZKM6#VowiC&ABH2zP+lgd5k!&ZD z?L@MjNVXHnb|TqMq_!REKXNx17a|YfFphzC5P1gYaS2c0X*`D)@d{qWYj^{1<2`(c zoA?Z0;v0OATc9o@e+Tv0*aYgZaT!p5jTu842caUWpgQhD9n?bu*x*Dc8X*!*(HyPN z7SZU0uIPbY=!*dujA0mo7{nqTX~+P%Y&;e3<7<2iVsHGT5KZ`A6Y}3=943G|Xz~%h z!w+Epn*1z8Q_5~i9W|xjHcbZg)Ra6l{T1wc(?9XI5K(+4Y6_^ks2O+&-XFBl=Im$lp`c!xe*)^F`4{*~h!!J3 z{4I#TMG8{!hY&3Tpn!U4Sq{^&5R0)C%Y12$r_ z5S{pWC-$!sx#~o&I+3eR6j3m$xr7_Vqe|kTFkr;)&IEm9Z3v$}04cLJ`e7+BP?L*%B9LE*VzWO{3%I(YN`trHH ze6BB_>&xf*vdzBNLB9HuufA^!(QhcoQNIL?M-pgv{eA#_zu(XJO^E*duKyHF!wk&A zSI~Y(Ui*``0VXU3ZECe7eBE+C(pe+pQf^O&u z+Q^`H@jgBTu??;X8ys+_)cK|>#cQ z#5Exj#5AELTB9v`p)ZDk_Ant4DM-T<5O6EJsH$YvbR6;ETgSM1H zTS}p>QrQ2L<{$?tZ4r%*=!~uyh#?q`k)S`P#6p5PN?DDy*Z^{pLQYb0upPvnavT?M z2`}MQyoNXME@+=AAAx;Hxh2Fz+Wy3p;4L#8deb5iY zJdv0u67$3nhygKAjK>^g<4JrfM5+qPO65DL8CZjZIEAwy_Ecg|eGbH)O6;k`p87W4 z!v`S#RN_z7%3~i=f5Gpd9i*Ay4fZ3=4Yrj=+-XrD=V@)x9vwjJX#+3{w8gY>NJJ{q zF&R^_5RYItXe(*7m9)b+hLfP3q|r{&h&$~GJPqPaBi=OPO(Whk;!XPuU*a2lhad4X zeib6U3WzhEJf=^_R!~+t-^uWY6~vrD?lXFW*fWSdgM4QYdj_#*5PL=n(vSh-&mjJc z`B((ne#UaF!WxkGjB~gQ>L=qFyoguuDz4*We1dO5%o#rjF-gD|#5GAl5GsOwm{bkK zIw=xe(F3%VNqs@QlLmwFXcBQxqMb~N1@TXsfmx8C%}kmH@;+$^X!ny=U^UiaJ&uAH zC;cMCWZLfJ)}XA(d}s1wV1Fim2=YCdd{6!!KjKdzruZQMD$1b(DxoT>qb6){f<8N? z5!jz8P0$YyA`W9Q9^`yV8p!z+az2H8Pa)q^$n%s(kPTv*Li?FQ`!{6k?rn3+&sJ-|?3aQ)$;zeNYC0Frz-Ku!C5qx)Fv55bM-tXaRCFwH=~C>{H3} z)Eqp4&xDvp4yLi6)B0i}9tE*YyMW6em(z%G8tq~leQ_FXd)j*-zte8wQ+y8MpY|*M zz~4el_X6!?Ix$Zt*6HMNI&n=WuIVj7Ow);JdM9+jAPmK5kkjepbNUoaMFZP4HPCtq>IERb40^*-eey0=X4C;MG1yn{g)Bri0;X*@%qbZuB7204J z#)90;NXKMM!%WNvbveb9Ec$pj*%FJIIz8$ zls}XGp2>dCoC~%!lWompTQk|#%#~nUGuL4Qj)DE0`Ku5Q)daCWL|G5nWvw~0&mkdDTCA>=z|fU?q-h# zW6bO%WMDF;fwnPw7M39km+%~3#48}a+3$f|&L)?$$>nU~noV4@iEH*RLd>azx}aX? z5YrrDnnO%;nt)j5v`0sDL3i}Ta4f)K+yMJL=W9^z9Lk-;{?1`v=Tbj&sh_#NU^{c! z&Roi!+YBv1`Ex0MF6Gaq{JE4r_kOVNbNeF!w57R8NI@#t|GCuJ-05Kd=VoFK<{=vw z@v#u|Xv_1Qpsaa(XWkkR@4S~mea)l3=DiDIpZ7V4eIBvTBldaJ)x5ujm~TQ^ln3$8 zrytC(f&0Kd%ob%^n2_D7@tU?y{;WD1Y zGk6{^ArIF;p69=bcRSNCf;gAFjqh;_zkob1A=afP_<)#~(ms~b zK9&;u(gv`>0T)8i2$5)tW@w2vXonFXzNJ~9%`T-*AEvB_`Od?=!M;4a6y*A0a{cf| zYzFP);r%#-qd0-nIExFogqM(qYq)_o!Tvn_n-I&0dzp%Ir~vxovKpv`Iw0<4#IP&^ zZP5|bGGbmv%*(cbeO#7{$3UK!k>_O> z!G14$0#D;Pya;l?>?*E<*q7ZBVtFM*VJIE~Wi97B%gNaaKZL-Ah6o2aU(pJk&=oz< z3w_ZaF^C26uNa3!B!hieu>r)qf|ysZofWi|6?;H?S#bcwzJl0S5bFx!TtS>GUdKCl z4Iopm)v3t93=q?5 ziMg1M<)GcHegx}4-dB_N)qAlYM{peM!)n^k>Kh=(tG@>OyP90D{u#dsvBn$3xh4QA z%Aq`JfV{79p&@7|YnpN%6f$FJn{m*6k;v0udRT}s0LzROWxNK z`&wdOOYCbKBMQwy{A;_S2YR6|24E1conbVb$p6jLaYmf89}IsDyWY8PzUwU05;Gc*Rj9r+M@$Hftc43^EzT)*9ZMU z%b}lD`+DdXd@eTg7&e2y52zh*l+~LaSAViJZ~V+8?NI9*zXPR;C+0EoA?a$&qw`1 zjE{ClBB;|xDeF0j6xj7ARUuI{2ON?6SKiS zY}^ZC-bl!xOC31Z$v%$taLQx`md2SKcxVnMDqk?Tzpkc^2S_D#gTX)4x&wy^1S{4T`iI-so0 zd}s4QJccWH0kn_Jw2#fizL{KaCicz5zM0rJ(>6B$fLkE`Ej}oNK$sDP3ZRW_A?_{h z&;gx6yWY|ZebFDZkuAi%B@I(B9S>m+=3^0-;876Y7V^90JTBo0JdNk@B3{9(cnxph z8<6KM5aZVIco@{{R?6DSced34^{{OqMuMDgqkU`} zgA|b8Z8IXXt`?d|(gssR%E@&g$h=Vh{^r&Kd_|%_7#UxgghBw1F&g zowW=ru^PmlMeJD{aRTHci+p6)0`;0rS=oFidpDlJO_29&@}5om$R_q20bK&&~}@ddudcOcg}TD-sEPa&uxkxLuNrH$kge{OBmMF<+e3S!PB z=3HXV4M$@Tb8d4C!X!Kj+HEfNx}CDN^PTNoF&4Cw?c{qq`QA?K+lhTUZDc#KZzuNc z#J-(&xcvx@;WC~C@o#?~FX0ui58J7i9mKqYn0K(99SY2#KkgvsJBWQpeKbN7G($^J zk2|8#30*+kJ7_06rsE+<&_;GFz+ya%6`+0WAl@Ccj~%q_9prciG43G8JIL`4_Iby7 zT*4E08qeYdyo@~1Rvs%0a`#w&Ou-hM#rr~#2CvxP-@9JJ8zA0Y@8Lt-#Ao;td^(rrqx*{@wLKJ?tjuyUFYB`JjS!KM%^`d7J>-55 zePYjMY(qBo;}D2{5AA2qX`BW7u;&vH^B!W}qiyGB{Dwd9mk@i2eJ?rRTLI*HFLCa* zf_(372-^GJNHjr5^u-vALn2Z@uJ=yDRLsCE5c6L8=U!snORRghf}HQo!46RId&&7; z+RNU9ID%ui3gUd6d^{e7;h?O?`Of3?gU3G-VxI}*eIK#!Bldm7zK?NmAF=Nv_I<>@ z&kfqjzHku#zINz<&gh1o=!FR&?tKqIVlHSi`<7xkR)Re5Bkp~~yN`JHk>7n6a2ZeH zIlPEhK>YhY0QuhUgEAo2{lvPTSohOD_OoyMX&?J(AN$Gq{(5MN=4gr5XbalP{!ZwM z?zkU)&=2H&Kk@B9jBEH+hy#>$fbSd_1@`5@7CeUCcpUpd`#5kBSMU^`#S3@|#D9SJ z54?vDaTB!p17G56Ar302hFSyh^82x2}$%twg%NFT%_0mOPF5#;&^xjvGCDVPRgKSJzBW@9VP;R7L#`oIRtI?8vB zuEYV*K8{|;>v#*qew17vCHAAlew5gc(*BPAfxm<}M*PQ!|5!OxKxNQwj@3jhG)HIj zKri&gAPfcV<=6-i`>_;E1^GQjZjUVkF&$fr_1K8b*o%{R8MNPH#CnWaj}hxJ+Q%{W z?byfo6y*Ha*Z59|6r`|2!FsF_?g4un#BGu>$1y zgmKm8TH#rGio)5L$q8-56YigKX+oC!q> zv_&*Jp*zU;ncnCNVm}iL;y9CrDVUCjFbBkTW+4`119pI1pCQ+0i1*ADkn1zVeTKNt z5cip@U_Z~i4%+t_a((6p+``YG&77gloTYD`^#b`nOZz_?2#-4AkcAvv0CArq*XOR` z2Hpm3=G+JP2*iGlJfHhTi1WmHo;c5&5roR1zn!lE>h!!5Q6R_X$?^Gq7>FUDeV?bj zoF9cajKz3lf?S^`*XI{t5!mb2Jn^4Df!FZ65Ep8p9mZe@c7t|*;U;M3 z7icFJZh^dCB;OZlBNu5S7il9GD}eYf68}YVd(i?rTxf`JM4}JK_r=j5*B28&`@Wch zG-QBWUnKU6Ye1YAH(@Jsu>-rX2dD59-U2zkNRBUlj8E|eXfGFOFBfUs7qytF_e;cj ziC8aHLKRd)P1HtRgn-yD5&I=4x`2FKA|IC?$19+$%Y5f@b5IwTCt((5gS=lR_RA|k z?3aoCGO=II#&$f0BRCG?zf8luOuM;!3GBn=FG0+giTSd&oj>rm5LZm_2C-iu&sXZf z3J2UEzgHsB6wN@~R|bH#ejF^zkVn+N{!mJYt^RIs8ORfrIb>&sT!@;-m}9j zI&`;YYm^SvT^)!JAx5kS5n?4ogh(XM>;F8@ea`FtpL3sH*Z2K>e?Hgmf9?ghgW$gs zH033{>p#!@x0g#nusa72@i2vveYdW6%f4Io-LmhlLw%m$Y1$(H?oM>2JMOT1Dl+eu zdAD>-S3;;|3A?+1bZa^(l@V?IOQVKRqpK-Mr>!*m_?5C5^3a3Y9A_AuGQqPZOe z`}DC-ANyWlCf>ErGy5(DLAY6jSEL5D(R;Y;;ZGrZxa{Gwhj*g~&oPLh$RBR+!|hD? zINTw8H8O|G9PXU(ui3;_wjq1C?BTM8%NZ_bxQ@ePh$Rj?6P^+T`$On=e+f!c7X9vj zjH*0NE%d!#=KZqnmvw(vx+CxYUg&y%KVD=YL$Ejd=OX8R9q!k~0dqazT?agK;0;zH z^MRky`vKVx$bP_{9gzKi><45&U_TC=_~)+5#O@|StDePkTt?SN4Q&r zSx4B9hzRr>aghYBaE&CAu`3ZWN5~u@bA-$XWj-k1!IzlBI=t(kXCm|CdyVW!PkPfA z*(2>or0kKhN6H>Kkts|={z&;F7qg5NyvK)pgx|f$e+gqh2RVYiBTsM&*(0x$8U%;3 z^C0GTNTx%Dd4%GWMCXSZ(uuA-%X9dBIP?N9VlNKai$lYC8Q;kv_dPU^1-!{SEMYk^ zACmcy%!gz?B=aHp4&4ia!#X=`mWRFTuxAc`jTsz{ClUK`*nS+A{jiRsWRH?PO7^IN z6rm{cM?FSW9;X)eCaON&kvnQI!x)Laqx2m$o;Q#^Y9T9;GwNe}n^9|6$40)v&P44- zuTj3kD0>`bkE47OQF@NjbJPuPA#+q(5FC;9h^$9+eMHwsilOTxk5Ufb=@HqF$bO_c z&!CSZ`Z%(gNWAN)XO1?e4-?S)QN16XkL*Y7$5Gjj%6?S#qhGR?^?c6`Ovi z{KJ39e^U1+k8_eU#B!djAUGxWDP5l`LNWAxsw@?#gq}~yeM;U_@}AP~sh;$vF9R6F zP~<-~0ezqPfRB*%l&q&@J+&TpJLTIrWj{{o{M3)^;{XRaL==|zl+I82UQfw zn8E36l&38tSj2XYk`e@G3ZwTkdOM@*GqRtN{Y*z>KO_4Y+0XRnCFDOdgjac;iA-TS zGqLMuHnN3ne9umPxXJ%=-61UqVjjd?V`@+v`w{a5Ptug; z$QxrfV(dnY+%a9yag6)Myv!?%LFO2lV`PqzIc6F%$IM|Kx{vu2-JN}aYII{PE7057 z2<*pM`*Bv+XU~#=+-K!JEBD!Z+$SptV(m<90Se(BvBfD#BV>;4Kxdp2`yBd?)pu+^ zMllK9#?Hd7#J?|II_o{<}!)M9xHpSzGE|x z`&@`esZMS?IIq|9b?CuFyz9JY&YvYS2;xdni7L25Tn+3^oPCLF zh3?~?p(CB?OMm2#8_Y09;0|%`B6FO~an6bRlC}6o<2E9DoX+EZL)UR~#vMZ6aVI!M z46!7U5d;?sQiNjIhYPyCP>zaJrW!I|sEw=_WWCSLx$RB@|L~fG89nyl} zVo~J2Se3`Ag`K(B5Z~#=CdhtK&lkHQ>qR*)4q-U2;QPGzD&w&`7niaQ{a%#y;#RgJ z^F^62%6!qDTy)2a_T=Jj&Jc?`U%bFYE^`gNUra{si*jGQhdEp-fsB{>Gn22dZ72rg&i0dk@5%lf`7+vS?nLEo44e7PAdcp7_ixeMKq{c0SfU5 z#gY4p+*j(+fQB?i{wwldX@&e(bbrO}T(Kut^m^rM!ZFXQ-gVV8SNkxDReZ`9xWmymbf5SXEon_#y7D}7C(4~T zkRc3XJQJ9VdnEd15@+)%GADk^cQ_|e=ZU}ZC%cH`4Cjd_f$NxMVlpW~kfiSR`Us;^A+o`CrN%^ zl78SPWKWVk=|2vm)1)iNn{@GkSwV0k8xJ7&4Y_ZWr92g>jQls`zflYMZ|MGp z-ML{;Zs_&K`|RX&5Zv^xo1VGZmZ8ky9hTq@H&) zvzTSboNVWl?R>KA$+9MYk6lUDdGgQbJo!)l=3n-(580D12f?iesXDrQ)Et&ImJ0CpYl0h zq4yNoQ*@m24}0-Dk`h4_M~UVna;KyQ!EOEC*6(fo-Y$Zyx9!SpyK-CR+cMvl`F1s$ z(+XK{+kxA5+)pe@u zsj{cao_dHQ97Fz8`BN`(h3nkl7Po`oP9e%ti7Hgbw|Ph3cN)+T+3)E2j;wd&yz?Rh z8O8`kF`8+}ct^)~zF-aO`I^mq%Xj?9PJSg4UEev%aZcdwcg}L23&?&)_B+>t;BIcJ z(wVWWz`O2x=5Bfrq?M!*Ezx_L9Z8ct?O9|`lRZuLv>^;odC+&Cioo2Vw>~@;$X?jkJBY~?VqTjUJ+~r;n+>`rWQ68rj`n{*$d$QhZ z!c)k6Pv(0v-|K)~zGs*3$$C%M_jG+v*Z0QoD&vv;p6vIg@&P+INk$N)m&3c#J(K=6 z8~G1Al5R)R?MS-p>AFsrJze&6+0$>5LTV6XWG5%`XXK**1#yRrrpTNjbB1#=I?)xo zozVl?GludS6Pdzv^qVn{g}jB_8Ef&|k?|Y)&CqX#tQmU=N9GKfGi1&mj zXXrXZ*BN#oBQpr@2grV3_WKX=7;PBIJ8Z?f?t3P)7!B!3e_moRvS;c#Q}#^RGiA@5 z#a!m|E~}6~^CLdxbKD^_44E@!&U8+uz0N$%SxP zNt!d1x7fgL;U2!(Qzn|u_Y5Jf0YC8|)Jn$)HCr#Z`c;z{5tiQGiyY_evPHCuijM&4|XP@GacN;xX>7*8W- zwgu=STR7g8-80!6&=Z-nPhmQ;XO}(uJIJ10_Uy7}|Af!^lC5k<{_H>T3%}tG*)Jk< zcA2yP@0?W3C3`yh&LMjaJ?AJ*d32mZ$2n?Hi@MZD?i}41j(&5DW*p<0z+|Q|6M1vY z=S_5+L&h9B&Y|NR?wsQrwy=%w`H`Lc%I};cEeJiJy9Zh@gtytqe%vSLgA}9)#VA1q z9!Kt+a_7`%&PFt*9UbV5d*tlFbG(MkIp?tu=j2?B@v<+Y!A+u>b# zJ(Kra+$XP{$!k~g>N~IQ@@52~e0t88AA6F|p5!Y=NlGJsKD&~y7IkSrBO22ix$}+W z6~^*96Pbd}^Sy)I`94Cw`ShD_9pA78bIkW0`pzd`zBqK7?=sg&A{kxh({(;w=gSQI z`Suj01bTkxQOe@p4?RXzs#B9X)T0|RKD2@#h{n6}dnSJ?%pv~_7NYa~_ALKWK0v?u z*RY{PzR@7K5$}*p&i#$cO9&bX-8k1>`JHpN2H$ zDO&P0_NKr9^jko`1@v2BIRd1?3srTaU%#7d;)UsjOKKrEAkh7 zj_2u%I~1IU%mrmG=$wKpc@KMC(7qIuy`Y{8Zsk|xEU4pxIxZN_0U|k!@3LTG5Gs_N zoa9Eog$huJM<|ZI3&~ulJhB#&wUDk0>AFx0bX}+|?deDty3>Pk$XQ4qg^qAH2o?6O z!k#HSh}nFK-V4iKSoXrQ7yb#^3(H4I7&3K7deCdexw9X@e=d!u17rc$h9C;G%qq2txE$MA$w816_vfH z>_ufSYCnqFkD`4U&dbPORPRN{^9Jrv^fP2GDsxfi6y3^peqaaxA$QS3=(cDa7r9I# zH%TEi2o>`^7PBA4>~Jxi7ORO}E@qdD*^gp!7PHI6>_#zpi`k80FQD6E?pn;;iw!~E zV)7P~x7b)-L*8N&vDd}yOtE9wnc}{i;@(xsQx`gZ{WG^9W2{}v1Sz;2? znaLc?u*3>JN3SJ*;un6$E|>U+-Gs59gUDP$))KOoxQ4Dv$XntTx-OAMI+;PJWQgpP zL(Y;qEUAl<=2_CaN_wVLA?hM?DSJ^$@13E4m(E3Q@{ylM(R1lmv_Ze6^;^0N z-RVhh>~ZP-$Xj|aQ_yi~9haWXT->?zTP$KJ%dsz|-$(A!KO$pkd-G^Xnllvhd2|D2 z@Ms+Rel&?>Qn(+4%H%}uGIEzGfIiC*}ObVVdO4b zoCfH=tj^2oysXa4_M|tuF01RZ!>}V|WiLC1iOfT%Wj{vVvR|?mJ(m53Eo|d^b|80I zxywd!m?PMgvhtUezwBA$FB{LLAXF{~dM#%k%Dv1IysMmN%B2RO^8P)jd_9_Cj^*8< zd}}(>i$3VS`~U_q1otSf^YRmz%rs^)n@^Fu{I`6ET`B(yzw;-%kiC2qvB+6I0ezRh zK{B_o?-lGyg~C+jacW^7D(JdGBbx9OEs?oGJ7ldOYlVU6yn?-~FoIF&yuvtSuONGc zNvuL274%UdEeKV76z{6&nTiWp$KU9^qTVaomx{7iJdNxXWv?iEMY~ebu2j4g_;1t6 zj{KGEdL_GFDL?K|=}Ba+By%O_RBDf%snmsT$X-d$mB#WqcBGPTw32=+&1N18kh{{C z*ojI%^BelDBx|Mr*o(}SWUeH0C3{loGS`r`lCCT1x{|Id-6fs-LCF7DC-j)?k3B#I zS}}|_*@SmJ=9$Vxs84tL;y0zTJ+CZ#WnEX6y|V0;Wv}e_rSdH1Ab;iMtmJ)G^9i5v zD{@ypKqOH_bBY*ZNkZ<*SwX0Z-L8_0JQSc1k5G)t$X7+TRdicL&MH0Wjl5Olts-v~ zJ5t5{s*L0n=CT0yt@1XDSjxNTyvhg2Tt((8pJN79{@_dysv4pq&tTW8E@m4C(R)?B zRn>J>U02n0HTzLb?rL&Zle=1RO7SSwsYxB&qgq3rq!%(*8-bpyIj7oqCSaed>ATun z$X!j|YVuWE&(~~bJKwW|o$SGGRMT-a9alTY1+H?P8{9(nYMDW(x;s|adv)2X7e?ml zGFLByyI0qH^=dqh9;!dbiwtB4!+9B*tIJ${GSire{jRR_>h_}gCblAP^&j{Nza!Ou z=P&+YH(|(KUGC~}#B+%&$X{Ll>dDAo{Vw-{(Bt;Q-`^5?`~~dh<6q!ik9(#@ZmQCj zt~`r7)aZ?UsbNoQyuw&s;|(U_9yRPu4c*sRgq^AJE-SGEHRP`GH~+Dh1K5iihdF}m zH7=s-8gkZ1N8dHG^8gQ$hZ0n#Da~m`8+2W>BVFiDPh_rX*K5jJQ`VZVqw|{fq~=s+ zp!1q`zNYLoWv}@T8_-8hebmZF9lWcSXKLB~T01$4-fQXI->VX;C3~$TWUnQAE!k_^ zmD+Ztc1{XY6!~kHrYz-ghuWQxxwg!;om0CXcBb|~?0Rk4YwNl892R0nYWuco>$mnw z-seN)uKfdcqV|6DTU)=iWvv~}DP*oKb8VSx+mqTEWCfu*vewac9bMPab)CHA=V4^8 zBYU0VJi&8J<|F>VyXtzTZWY=wgwc${p4XMVuCD9KURUU*aC z4@4nz{WSDmU-kyFH^_tR4Pl2l5?xhz2DMlv^&xzW3<=WAqbWS1N1x{7g!C`t)RBYR_AHM z+(hOkWw8rQ>~RxWo9McUuAAt(i5+Otj`qmjMD`}#8N*_>ahTK~)YQA0dZy`1%;aO% zVz--qgX~Rp-Bk9bvNx5z=^pm6pA(!${-)=#_f0Pap=R#TtRONslew95n%V1S6{$>B zWN+4n4s@m)`fb*mzVu@hlaRaFGFG79X8LU=YqQVz5}BLH+)U3l-kQtaT=wR& zH}63&o@Xc{kiWU!o4?9<+@bj=$lP4!=FVxpnQz(7_sHJ-KMr#o-*@vf=(qU=E^!&T zTlf}Rl;ly$q2Cs=wx~u8WNsmI3z=IyNf+!w3t3y}x`nP==(_Ce_$lgNs7B91q zb%b#>2(>JLceV6P%gKDe5B$zw{DbT*b=^|-ma?~$y=5$M#FNZz;0~>- zBXcX6TREpy6PnS2R>c393o^Hoxs}YV zc4HS>#UN`dUANM8D_ys;1Ff!;gzT+kZ*?aKJza$QJkJz9#k-#NOzWIH#?y4dH`w}F zWN)qO*0Q&jy|wJE$MPDlBY*3;EZ{8`v6SU(LGIS}yY=7v$36~lkVDAcTF~Fa}+>(RG_Qn25W#na(VHJ8kCk zCU3JIIon(gLT&S6wr#zut!LVPh*`8f!Wm?5D|=hn+a@A=TiM&n-Yy_J4^W6lkiT6i z%1{n>Xx9;$+sWL{IqhCR-|g&nJGsEdx3G1HFT)zLE@zvnPX=)9xOJNo_T6p$PJcCs6t z>_#WM(aCOfDu?`?YEzFVc#@_(#S6&YX*A;)&m?r+X*x5Jy_1eRtw7dJa(3FlH+;)> zeqaaorqf|AaRvQ$y1^|{NkiYA^xZid4^Wav(RJtY*n!UO-nkkzsD+*B+<=DkM9$83 zr}Iuu2ca(B)x|Si+F}-6=I{=(cagn|>|H)a_Aat_k-f_nw(%W*@;CB#u`^x5Ie8NP>4N;-_1?WVeQ<~FbCJ2b%-x;SeFg9FA$GgF zZ?L=E-R187D}V71yU}m=2o4d&dE|RG2l{i2!G(ykM>iOB`w8Xui zZAS+>(UoVB{n=Mp#`he>F81)Q9-iqj7<1_H85_`fk1c%5PW0R3U-qz%103WuXOX{0 zJbqVtTnR!w-Jxd@WbP?*Pv`WkL>26H&&QFyr;dAeq#Hfx#S8T3B?cjP&l%{qr+$0t zx97*m+Ve}+B6Clfd&=B%8}_)TJ?<%M&;97Sr>=V*;W#Idy{GIw&yg8~p0f+jwPFZw z;$6>q=D8a|s8<1M@B~j{KYGdDOV_<*?@J&L7yx-hZR7=j&sKp0_K{+w7rsL8FMP)jL8#wD_|E!Oq!PO8r@MZ3 zqF+ZQB3D1T`pMPLz5BUqKUw;DN53E0$*<_P-!A@T5B9L%0o=czIrcNhewVpM63N`= zF89a?LjCho0yF9V9IvA1{_nGme{jeC?%3ZQ`=8}J@%Rq=+mrs+@xK1|$qGU*_F)+2 z_~IzMO*j)#^>tM4Vl81cQsUZdFL?8Mh+mQaq zHDom77|#SIA=ePOhP=fhE|ZG)`af+A4K>H1Ie7^8AL{-?-G69t8sq&#XW$(}-)1pO z`HD^a&41X9q2WZ}ZbOf7oRgfv9f!to5%(N=gIoAkhUKLYr6@yrDq)txI?nzOiASW59cs8n1mj*PV z39ac&H+s+uy$|olP;@?Amf<=duJhscVfb8pPs8;+d=X1o&T2m6OV+Xh-3>p8u7=At zTvx;G!|?OOBj4~8%xk!P7;Ya%IDf=2M&SGr&L81DBfMvXjz{QtgpNm;^N4FCk&K-h z;Th(NB1LjKT`K2E28g_dL6k9?|nHJ4bk(xo=5Fu7v?uA3TKTvfjN#k zhdGXN-%*LU<0}tRfye2D_q{S6^LXVwKH^ipU>zIyhRuZIH{q3=WRewxMh9d=U!!Fo zE&FKMN0+5C)u@4cjJ7|c2V&l%|70)TIa>D7k;pq*-qDw^ccYy(#=XaMrZ1iyGlb#1 z%&WZ4M5bWB#>_?LG5_G*W6WTT-5Fzd#+>FdsidL*G43!{{;?0Bo3W2j9P=Kl|FPw% zL>1g+YzOSu*u{KDG=3|_)x(8W0K7*~=ubV0x47GdAVy~`>-K;Pr^Jx<@_*07$h z+03^%W89CJ^SEF61M?pDFMHU>0rWS{{KuL9xD&YRxU(dn%U5&o5VF1cI1Ols`M+w9 zUVV}IEMXbWeAQX6{>A^Ezs2n!^xC7C>uXi%NKbm9|JQW?ns>amk?nksT(8OV+9~b^ zq46QIQx1KOmu0+u#`mTVuQQ#Q*uU{x*+vxZG(HA1d;LN3;0~|1pcS)u8$G|igFn&L z>v3GeH}Hn}yzvOd@a!9&eZ#YFyuuqyWI3z(81HyvFZ+Vfgj^KC^An0<#uM~7!Snv! zz0ibb(8&b%nb3{?3}7HbILdkMa1VPkF+d*^?axH}Gf}>YW;C%7&Y4)9n$*VkGqFB$ zPi#yxn&bS5&Y##0=S(z*iS}rs+!Nhm^1Kk*B{ z^A~?}ki*D7DH^k!bOv{rtP_7nUdZ2(7nh_Q`d4il=Eydvr9p8$Eaq zxhKDh`A;^3$y1olOw4og5|*)o1Dr&T$)}0oD&{-+CMoE6a#|3YqSq;QWr|&y@(_BO z@+{7s(i5Fb8O#VqF^2I>U@}vA6MHp9jw!z1Df>Br^QY)xN^B6C>aJ5Crv^2tjrmM< z@2SmcNf-L_63(3JcVy~FUSTY+F`IcT#FP9wkKL|~8ziH+$ zEk6a(=QMpzbC+pmK5Y_V9K#H!>2I3s)8(8l=X4pT%Q(F?&YAud&YA9<>0gr`gl6b* zhI3{(XGQ@AA@>Y3n_*@%%xuO?<}e?3n4z;7tN0Y}n(-~)@gqC=mEYOTK@M?*EDv&?FiSIlS&$9 zHOs7KyW4DcoBc44P@Gb@*KGHiU74!Xr3tNRhdIr5pV{4bmKPYpFwAPUSIQWbIfSYd)U7@AMpw6*vfXyYK~dWakn|{HfJvfh{PVwaj!Yuz(`@->^WhjZO)u6xb>1v@zRKO#8JNz7@k`^=3a zo<#1DhFQ%ut9fQM&)w#k)jYGBXIAsfYF;I(P@Nh)L37M#o*B*Sg8iGZc?l#Ze=FMgv<~8qa7PAy{n&%$#WS@74Bgj5a_Ia|;lYO4-^Dc6kYa|7s`SQ*; zi}`twdwv1TWd0)*$86@8p*$6-MOy|i3H{Fhk{$fTQLdwp1qE@Z1$`LH1ms_^g!fsE z+zUSED>ku}?U=`cpRi{O4&$8*AEYU*(A~lgc>h9su&_TbVILL_V?0xs&MfAluZ8+r zxQrF7;&-kFp*M?Bg38pS4)tlsQ?%e|-2F{wzuA@NapodtFZ$oVj$|S;n9sX>hJF^U zWdq-^g>5){k9$A*n1a8;Ju6O#Nt!LaET1Eg3yu>_F+j*biKq*EXhZH3Q`z*v7`cZX+R^I zpra)%X-zwNVeU)%@gf5m!f^DoWEAGJTRjsmg;S( z-j=%OQukc?Gr#dCc4VpDTN;hKEp@l0=eU47F1^e(5`)k(_gq$lsx+k=X1L7GEL*@z zzTj7MxNH~yvWI;fAd)DKae~vF9g@8$ntKi@Tvcb`C~?=ECLGQI1*@5YnNZSImzW)NE8o-1--b}P(oMN#bd3g@nH z?uv4lZOV%RSO7mE09xKgbrFpD0kCo=(@0bg% zG>?_uu~PPxdkM$xtvtjLj$;Q`o*@?VUwIKTT4_crlW?Dv?z7T;R=Uqh_gUpWtK4T* zF7ogY594mD+-;S+ttw4f+-ucinDMH|sYPAv>?%9E%FeE`v#VOtns#)cGxlLs4|<{R zRs9&iAcismeXSb9tGtext(wAgW-*rqyu~}L;4kdodosS)k;$0jdpdbP8+CBb`-|~i zyq^$+K5(xO+Ay9k(BlUgLFmKk$o8R`efR_CgV1VStZvR|K0^1aQ-jb)m2jVrX0w&k zLFnT=JjrlY@i#Yu&?jZk!6#GM$gv>wsm?#G$3T|y8&`tRXT{OmXK(Nokz@v;&ucJ} z_xYFPAoN8!x-y+_hz>$u=A;3GSu z^;Jp`@^?su*0{@>F1)~t$iHR??z~36HSW0PP2S>d7O@y-u5sp?ANUDpuW|Mod%b2q z2QY^vNC`b6Q`Yr_tN`G3aK!Zq}Rq`sJ+TeO4pmdfC>WBEAE&AY{n-}pB+wnbZ-i2(N&3&`EZ}#rZF?h%3YnajI zq#(4#owmrgr3|{5$3ARnNMoAOf>tCJc$mWI^QSsArZ;`*AB1-LXLtGrc0NiuDpHwh$hz|hp2V)~Y)(s_=N0Dj zIh)zSR<;pNG_vh9-<{{UfSvg{gls=op*l5#(B4nb>E0jsiC^%Y?6r$~|G_=?9wLgP zc=ulK-s{eL?M+xwWDC=Mn7+bhv6yA7;5|M>Z($qw26@9|4bx-TkC=7XehzXN=Y%;Y z>?D^+!FLm;->~~ZXkS1!3h*!m(epkX?(@yjJG_nXyzv)X?GJGuWX zv79F!=k8AnLI(;`lCo5w5>=>!ojcG1-{=9|92mw7%<#ZRtl?k6xWcU<6cLae`6J|y zkUt_n-W6eQBV_ky#D^k!&H!`^7g4S0PEUH%m;SuOVDugJ z8gHPVsHx0jIXa4xH)=H-(N~liM9C2K2a(7SWv`;*xX3l+iIOKuo+I)cd4vi)MpYiC zIp%z1CeAssfnPYldED!W_Z;z_Bbhz#sVJvnc+D=5&3wyum|?U#M%#^OyAf?SqHki3Cqm>P7bU1nHEK|sX0+gG^nAj7 zPsny+1ZI6=H0FImo)gPi&u?7AzMM4AljeC+uP5F8WJ&aUvK$q0-bv@3blyoloYcd~ zcC@D>UFeSQ<)pq(I{&1;Prk@hR`WY&gV3q$c-JYx(2E^-<9PuYo6$)p6K)9!G(3^JdV`LuIR*TO!YwvVUH^t9}!pQSf_>5rW_J%r(y z=jlnji&^<|)I+CzAE(XdbRswT-&v`okwI1vI%6--Jb?4hl&2C^@J*bli46Yy_0SnJ zI%7s>ba$o`UD4ecU7Z<-9B1S>^9FO6&zro%2gr2hQ@&se+xQ+C&xCOd9i2H%47!Oa zOi@Zu3K?T$jFB-$PceFmkt;^77`bBPijgZuPchFSTZ~LGFJopg;~0;OF*3%;7$akh zj4>aw4l|9}#8!Ug4|ee{hd6?H#+>9j_t0gGF3*O@i+ww5zt7gA0gY(FQ`q;jGM}|) zX9qBdq1gGeqZq?PW-*rqyu~7xpvSX%JgdjEYxtA>9ON)ZIZr$ZT;(q5WCo#F8Doo3 z9{U!n$JnaK6l;dD`ij+8tiEFP6|1jU-(alWik-?z-e)zR@Ht*R475g{; zv6p@5E%qd5h(&*~H@HPA@}1M)x%?DF&U12}Gw*YD(x3MpI;YEXx;&@Lb1mt~Kn61m zJ)V1mw^__GR`4EXeC}gD<4e}E0eR2Kdu|v1AoDqy&xI2~BvBkAn%hC>ylm&6{!$Q%%ZYB|>_MD8h_eTA4Ujpm9UbUQH+t|KgRlp2^2gbOIC~JM|2TJu({-H8 zaWcm_C+=%DqwhH1QJm~?`>~&KN6>TJX<|4>9LZz^p$m^v4*4!rrW!Sn^Mafgo}eqf zp$l?dcpi7W@FIG?@G@^OiK)zBHuG4(3Uqxz*B5ksVGF94><;WSo ziVygRPx&0X9KQ~G5&ti7LFi&G^mMTc-gVJ47k6+JnJ@abE@lRyOChq8k4Gp@Das)K zrHa&{KJs5`Of#C}4wptE^Cg)tIp@-3rlI3YvylDL$9%yW*0Tv6U)siZ>_WGf?r}c| zB?M$cp9%U*&}V`^6MSC@zNdtm$dn*cf=mfACCHS}maf=?1bdKR4-#IWKXxEtH1;!L zJbF#|5ZMww<4bgyAWy=N?BrK`9|_?^aEJ@sB!xSq1)<9&d6aTg;4!N5IJKxtN6g}K zcY4yBzQ}fY7-M;jH<-j!rt>z7S;h*!#vCvI%y0OPF5At^2RV%SUbdT;<4NEu=6oeD z`6)-u@!T@@;iU=54$c?(^$TRZx)$Hb)o<9sx0v}=Gr#&1N09AWF&d+fYuyKgX*B_@Ab*YaXz1|x6{n_!M>z(O_?ytMU^=Zg_-8t7~zP^a1==i#sU$>jr zxAHw^f8Fe_|G{7U!+*$qJuV0(=D@d~n1_56pb)<8M0ZNGtBEot%9QASiOtY);?uOH zE6-yW65Ty@(uZKyvpn7_{Ivha}+(@EQNR7^vq3nx~cD*GW&DrLpSw%Q@=M4 zagsPLa+zz$fAc1pK`1$d{KYS$vRDzGg;1LIg<}_l|LFiUa3Q~k(l;ly$ zQGwd%`j)P5>H1b@^m|LjTQ8y8TjLmyE^pb_TMKv#-`1_Ae9UKj$y$EmU-qyMS#O;{ z##=JplJS;|{!IMPEg4e+vLkCsZuFQ^o=Q~4??8$@PN|7KPO--+@}|g}qUV&ScmW-z ze9E7g+imZeOvz9y1uRJ+edJR z+vcAtbE?d#&PmPB!xZKbWKXS&T}W+AGwecYYuaHSQlDouOIXfI-s3}bnyS-Oou=wE z^>^$*>OaVpDp#spsdA-8hy*)W-bp=<$wBcRJCP zXBmR;=#KB`j^Bej`n|Ilz1{hQ&(YtVANiaA*o&Fpb;r9s>4kgVHJ`ih;7)hV=dOSL zu7Ccn9l86zfBpcGMB(@1uKai9zk8dzq@(jRcS&=Hw1O0&7&m2Ot)W|gjce_nnl-K^60ahz-DJYDDMI#1Vmy3W&eo}u#$ z`;(E2Jd~vZGG|n#DvwhOJD(wcMnf9Y6#ZvR;$!S_#OP;Sx8IDa*cQm8Uv2 zse`Vvbd}}&EazuAKg;=99q=t?=_X4zS$fDax2%J>XVy`oImH>Ak(C)_3qs@|7kS7> zIjT{Mx-_5>ZRkW-p5;0EF@S*#VHmG7o0WXRI=|j{n^v)ekP`~RM3@N+QIkj@5{V=tnMfg0i8Laes72H! znh;HiW<+zM4bhh9NOUK96WK%#F_6e3N{FGvFk&PznixwwO)Mjp6Dx>kh?T@DqLf%o ztRdDC>xlKli^R*sE5z%>+r&G>e&PV}9`QbLgg8okOI#qnBfcjt5|@a}#1F(3;wteA z@h9;YNststlN`yD3Q|dGNgb&tBS=a zwjx`T?a20IC$clyjqFbLCi{?CWIr;S96$~v$C4As$>bDrIyr-Uikw5vB{z^8$xUP# zxtZKTK1*&Tw~^10JILMSOXREMYvfzx+vGlSKY4&WNWM>gNq$9sO`a#eA-^Rrkl&Ht zlNZTrP370>}aFaa~L04s2S!{9jh2%H3`z*%q(djdD^h%0qdn7%G;EqiRrz zR1%d&rBijOdQ>ASgK9=Kr&>|1srFO{steVX>PhvY`chd`km^qjq6Sk1R3TMD4W&j> zPf}y4anuBAA~ltoM$MvTQ}d|#)M9E0wVYZ(l~Svz_0$GxGqr_!j(VQjLG7eore2}m zpx&hRPO<-nb(}guoutlCXQ?l!FR5>+Z>fvaCF&~mBlQdQEA5tKwD@l?Vz1>H0_}SbPQdcj-wOkL^_pDqwCOh>4tP8x+&d^Zb`SI z+tKam&U6>L2i=p-r2Eo2bdb)a2hsU-0bNX&&?D%P^cZ?9J)WLGFQb>!E9htFmGmmQ zlwM7*q1V#u=uPx<^z-x!^mh6s`epiU`W<=?y_eoce?WgoAEuAc7wGTk@9B&5CHgY` z1AT?QO8-dzME^?Ppl>n+!!jJBW;BeJu`pI9iAiQsm{cZ>NoQ&?wV66hU8WvWpUGez zXIe6?m<~)wrYF;j>CNhDH<+6&!ICUsDVAm#mSqK2%j#G?8^Kyx8yn4fST9?hjbod#&DiE_3-)ogCEJQ^ z&9-6NvhCPTY)`fq+ndd1bJ#p~2%FCiV~4X(v2)nD>^ycpyMSHDE@Bt6OW39C3U)2K zj$O}gV4r2TvOC#b>~8iY_GR{M_8s;NdzL-Ne#U;ze!+gpe#L&xo@c*dzhy77Ke0cv z*VsSUKRKFXIF{o$EvMu3Tm)z4T%4P$&c$&xxOlE6m%t@*wYfT6C$2Nsh3m?7&NACgSbNO32r3!BsYp1%}wMcaVxo1Tq(DjTf?p8)^Y2(4cta<6IaG< z<#up8xmUT@xV_vyZa?=ScbGfHeafBY&TyY|7r5`ZU$|en-?;1C@7y1}o{!)SypcEY zX5PYEc^e-;dAcbNGRL0bj@u z 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 F{~vo>sIdS5 diff --git a/fit-a-pet-client/fit-a-pet-client/API/AlamofireManager.swift b/fit-a-pet-client/fit-a-pet-client/API/AlamofireManager.swift index 36ed2b51..56a20fb3 100644 --- a/fit-a-pet-client/fit-a-pet-client/API/AlamofireManager.swift +++ b/fit-a-pet-client/fit-a-pet-client/API/AlamofireManager.swift @@ -40,6 +40,11 @@ class AlamofireManager { .response { response in switch response.result { case .success(let data): + if let responseHeaders = response.response?.allHeaderFields as? [String: String], + let accessToken = responseHeaders["accessToken"] { + KeychainHelper.saveAccessToken(accessToken: accessToken) + os_log("sms token: %@", log: .default, type: .info, accessToken) + } completion(.success(data)) case .failure(let error): completion(.failure(error)) @@ -267,19 +272,68 @@ class AlamofireManager { } } - func kakaoCodeGet(completion: @escaping(Result) -> Void){ - os_log("MyAlamofireManager - kakaoCodeGet() called ", log: .default, type: .info) + func oauthLogin(completion: @escaping(Result) -> Void){ + os_log("MyAlamofireManager - oauthLogin() called", log: .default, type: .info) + + self.session.request(MySearchRouter.oauthLogin) + .validate(statusCode: 200..<300) + .response { response in + switch response.result { + case .success(let data): + completion(.success(data)) + case .failure(let error): + completion(.failure(error)) + } + } + } + func oauthSendSms(completion: @escaping(Result) -> Void){ + os_log("MyAlamofireManager - oauthSendSms() called", log: .default, type: .info) - self.session.request(MySearchRouter.kakaoCode) + self.session.request(MySearchRouter.oauthSendSms) + .validate(statusCode: 200..<300) .response { response in switch response.result { case .success(let data): completion(.success(data)) case .failure(let error): completion(.failure(error)) - } + } } } + func oauthCheckSms(_ code: String, completion: @escaping(Result) -> Void){ + os_log("MyAlamofireManager - oauthCheckSms() called userInput: %@", log: .default, type: .info, code) + + self.session.request(MySearchRouter.oauthCheckSms(code: code)) + .validate(statusCode: 200..<300) + .response { response in + switch response.result { + case .success(let data): + if let responseHeaders = response.response?.allHeaderFields as? [String: String], + let accessToken = responseHeaders["accessToken"] { + KeychainHelper.saveAccessToken(accessToken: accessToken) + os_log("sms token: %@", log: .default, type: .info, accessToken) + } + completion(.success(data)) + case .failure(let error): + completion(.failure(error)) + } + } + } + + func oauthRegistUser(_ name: String, _ uid: String, completion: @escaping(Result) -> Void){ + os_log("MyAlamofireManager - oauthCheckSms() called userInput: %@ ,, %@", log: .default, type: .info, name, uid) + + self.session.request(MySearchRouter.oauthRegistUser(name: name, uid: uid)) + .validate(statusCode: 200..<300) + .response { response in + switch response.result { + case .success(let data): + completion(.success(data)) + case .failure(let error): + completion(.failure(error)) + } + } + } } diff --git a/fit-a-pet-client/fit-a-pet-client/API/MySearchRouter.swift b/fit-a-pet-client/fit-a-pet-client/API/MySearchRouter.swift index 6c1b18fd..102d0dfd 100644 --- a/fit-a-pet-client/fit-a-pet-client/API/MySearchRouter.swift +++ b/fit-a-pet-client/fit-a-pet-client/API/MySearchRouter.swift @@ -17,11 +17,12 @@ enum MySearchRouter: URLRequestConvertible { case findId(phone: String, code: String) case findPw(phone: String, newPassword: String, code: String) case existId(uid: String) - case userProfileInfo + case userProfileInfo, oauthLogin, oauthSendSms case userNotifyType(type: String) case editUserPw(type: String, prePassword: String, newPassword: String) case editUserName(type: String, name: String) - case kakaoCode + case oauthCheckSms(code: String) + case oauthRegistUser(name: String, uid: String) var baseURL: URL { switch self { @@ -29,8 +30,6 @@ enum MySearchRouter: URLRequestConvertible { return URL(string: API.PRESIGNEDURL)! case .uploadImage: return URL(string: PAYLOADURL.PAYLOAD)! - case .kakaoCode: - return URL(string: "https://kauth.kakao.com/oauth/authorize")! default: return URL(string: API.BASE_URL)! } @@ -38,9 +37,9 @@ enum MySearchRouter: URLRequestConvertible { var method: HTTPMethod { switch self { - case .sendSms, .checkSms, .login, .regist, .presignedurl, .registPet,.sendAuthSms, .checkAuthSms, .findId, .findPw: + case .sendSms, .checkSms, .login, .regist, .presignedurl, .registPet,.sendAuthSms, .checkAuthSms, .findId, .findPw, .oauthLogin, .oauthSendSms, .oauthCheckSms, .oauthRegistUser: return .post - case .kakaoCode, .existId, .userProfileInfo, .userNotifyType: + case .existId, .userProfileInfo, .userNotifyType: return .get case .uploadImage, .editUserPw, .editUserName: return .put @@ -57,20 +56,26 @@ enum MySearchRouter: URLRequestConvertible { return "auth/register" case .presignedurl: return "C7QXbC20ti" - case .uploadImage, .kakaoCode: + case .uploadImage: return " " case .registPet: return "pets" case .sendAuthSms, .checkAuthSms: return "auth/search-sms" + case .oauthLogin: + return "auth/oauth" + case .oauthSendSms, .oauthCheckSms: + return "auth/oauth/\(OauthInfo.oauthId)/sms" + case .oauthRegistUser: + return "auth/oauth/\(OauthInfo.oauthId)" case .findId, .findPw: return "accounts/search" case .existId: return "accounts/exists" case .userProfileInfo, .editUserPw, .editUserName: - return "accounts" + return "accounts/\(UserDefaults.standard.string(forKey: "id")!)" case .userNotifyType: - return "accounts/notify" + return "accounts/\(UserDefaults.standard.string(forKey: "id")!)/notify" } } @@ -103,8 +108,14 @@ enum MySearchRouter: URLRequestConvertible { return ["type": type, "prePassword": prePassword, "newPassword": newPassword] case let .editUserName(type, name): return ["type": type, "name": name] - case .uploadImage(_), .kakaoCode, .userProfileInfo: + case .uploadImage(_), .userProfileInfo, .oauthLogin, .oauthSendSms: return [:] + case let .oauthCheckSms(code): + return ["code": code] + case let .oauthRegistUser(name, uid): + return ["name": name, "uid": uid] +// case let .oauthLogin: +// return ["id": id, "nonce": nonce, "provider": provider] } } @@ -225,6 +236,7 @@ enum MySearchRouter: URLRequestConvertible { case .editUserName(let type, let name): let bodyParameters = ["name": name] let queryParameters = [URLQueryItem(name: "type", value: type)] + print(url) if let accessToken = KeychainHelper.loadAccessToken() { request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) @@ -232,11 +244,43 @@ enum MySearchRouter: URLRequestConvertible { } else { request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) } + + case .oauthLogin: + let idToken = KeychainHelper.loadTempToken()! + + let bodyParameters = ["id": OauthInfo.oauthId, "idToken": idToken, "nonce": OauthInfo.nonce] as [String : Any] + let queryParameters = [URLQueryItem(name: "provider", value: OauthInfo.provider)] + + request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) + + case .oauthSendSms: + let idToken = KeychainHelper.loadTempToken()! + + let bodyParameters = ["to": OauthInfo.phoneNum, "idToken": idToken, "nonce": OauthInfo.nonce] as [String : Any] + let queryParameters = [URLQueryItem(name: "provider", value: OauthInfo.provider)] + + request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) + case .oauthCheckSms(let code): + let idToken = KeychainHelper.loadTempToken()! + + let bodyParameters = ["to": OauthInfo.phoneNum, "idToken": idToken, "nonce": OauthInfo.nonce] as [String : Any] + let queryParameters = [URLQueryItem(name: "provider", value: OauthInfo.provider), URLQueryItem(name: "code", value: code)] + + request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) - case .kakaoCode: - let queryParameters = [URLQueryItem(name: "client_id", value: "bbe38742c0998fecfaaaaaef6856fc32"),URLQueryItem(name: "redirect_uri", value: "kakaobbe38742c0998fecfaaaaaef6856fc32://oauth"), URLQueryItem(name: "response_type", value: "code")] + case .oauthRegistUser(let name, let uid): + let idToken = KeychainHelper.loadTempToken()! + + let bodyParameters = ["name": name, "uid": uid, "idToken": idToken, "nonce": OauthInfo.nonce] as [String : Any] + let queryParameters = [URLQueryItem(name: "provider", value: OauthInfo.provider)] + + if let accessToken = KeychainHelper.loadAccessToken() { + request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) + request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization") + } else { + request = createURLRequestWithBodyAndQuery(url: url, bodyParameters: bodyParameters, queryParameters: queryParameters) + } - request = createURLRequestWithQuery(url: baseURL, queryParameters: queryParameters) default: request = createURLRequestWithBody(url: url) diff --git a/fit-a-pet-client/fit-a-pet-client/Utils/Constants.swift b/fit-a-pet-client/fit-a-pet-client/Utils/Constants.swift index 9b67790f..5d0fed90 100644 --- a/fit-a-pet-client/fit-a-pet-client/Utils/Constants.swift +++ b/fit-a-pet-client/fit-a-pet-client/Utils/Constants.swift @@ -3,7 +3,7 @@ import Foundation enum API{ - static let BASE_URL : String = "http://www.fitapet.co.kr:8080/api/v1/" + static let BASE_URL : String = "https://fitapet.co.kr/api/v1/" static let PRESIGNEDURL : String = "https://h1d5jjb17z.apigw.ntruss.com/obj/photo/" } @@ -36,3 +36,9 @@ enum FindIdPwSwitch{ static var userUid = "" } +enum OauthInfo{ + static var oauthId = 0 + static var phoneNum = "" + static var nonce = "" + static var provider = "" +} diff --git a/fit-a-pet-client/fit-a-pet-client/Utils/KeyChainHelper.swift b/fit-a-pet-client/fit-a-pet-client/Utils/KeyChainHelper.swift index c28328a7..91ae7b4e 100644 --- a/fit-a-pet-client/fit-a-pet-client/Utils/KeyChainHelper.swift +++ b/fit-a-pet-client/fit-a-pet-client/Utils/KeyChainHelper.swift @@ -35,36 +35,68 @@ class KeychainHelper { } } - static func savePassword(password: String) { + static func saveTempToken(tempToken: String) { let passwordQuery: [CFString: Any] = [ kSecClass: kSecClassGenericPassword, - kSecAttrAccount: "password", - kSecValueData: password.data(using: .utf8)!, + kSecAttrAccount: "tempToken", + kSecValueData: tempToken.data(using: .utf8)!, ] let status = SecItemAdd(passwordQuery as CFDictionary, nil) if status == errSecDuplicateItem { - SecItemUpdate(passwordQuery as CFDictionary, [kSecValueData: password.data(using: .utf8)!] as CFDictionary) + SecItemUpdate(passwordQuery as CFDictionary, [kSecValueData: tempToken.data(using: .utf8)!] as CFDictionary) } else if status != noErr { - print("Failed to save password to Keychain") + print("Failed to save tempToken to Keychain") } } - static func loadPassword() -> String? { + static func loadTempToken() -> String? { let query: [CFString: Any] = [ kSecClass: kSecClassGenericPassword, - kSecAttrAccount: "password", + kSecAttrAccount: "tempToken", kSecReturnData: kCFBooleanTrue!, ] var item: CFTypeRef? let status = SecItemCopyMatching(query as CFDictionary, &item) - if status == noErr, let data = item as? Data, let password = String(data: data, encoding: .utf8) { - return password + if status == noErr, let data = item as? Data, let token = String(data: data, encoding: .utf8) { + return token } else { return nil } } + +// static func savePassword(password: String) { +// let passwordQuery: [CFString: Any] = [ +// kSecClass: kSecClassGenericPassword, +// kSecAttrAccount: "password", +// kSecValueData: password.data(using: .utf8)!, +// ] +// +// let status = SecItemAdd(passwordQuery as CFDictionary, nil) +// if status == errSecDuplicateItem { +// SecItemUpdate(passwordQuery as CFDictionary, [kSecValueData: password.data(using: .utf8)!] as CFDictionary) +// } else if status != noErr { +// print("Failed to save password to Keychain") +// } +// } +// +// static func loadPassword() -> String? { +// let query: [CFString: Any] = [ +// kSecClass: kSecClassGenericPassword, +// kSecAttrAccount: "password", +// kSecReturnData: kCFBooleanTrue!, +// ] +// +// var item: CFTypeRef? +// let status = SecItemCopyMatching(query as CFDictionary, &item) +// +// if status == noErr, let data = item as? Data, let password = String(data: data, encoding: .utf8) { +// return password +// } else { +// return nil +// } +// } } diff --git a/fit-a-pet-client/fit-a-pet-client/Utils/ResponseData.swift b/fit-a-pet-client/fit-a-pet-client/Utils/ResponseData.swift index c7ff3a4a..df010286 100644 --- a/fit-a-pet-client/fit-a-pet-client/Utils/ResponseData.swift +++ b/fit-a-pet-client/fit-a-pet-client/Utils/ResponseData.swift @@ -1,4 +1,5 @@ -struct ResponseData: Decodable { - let status: String - let message: String -} + +//struct ResponseData: Decodable { +// let status: String +// let message: String +//} diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/FindAccountVC/FindInputAuthNumVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/FindAccountVC/FindInputAuthNumVC.swift index cf46255d..bd4af748 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/FindAccountVC/FindInputAuthNumVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/FindAccountVC/FindInputAuthNumVC.swift @@ -78,10 +78,13 @@ class FindInputAuthNumVC: CustomNavigationBar{ } @objc func changeFindIdCheckVC(_ sender: UIButton){ - let nextVC = ResetPwVC(title: FindIdPwSwitch.findAuth) + + var nextVC: UIViewController if FindIdPwSwitch.findAuth == "아이디 찾기"{ - let nextVC = FindIdCheckVC(title: FindIdPwSwitch.findAuth) + nextVC = FindIdCheckVC(title: FindIdPwSwitch.findAuth) + }else{ + nextVC = ResetPwVC(title: FindIdPwSwitch.findAuth) } AlamofireManager.shared.checkAuthSms(FindIdPwSwitch.phoneNum, FindIdPwSwitch.code){ diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/FirstVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/FirstVC.swift index 75a1a23d..24ca101d 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/FirstVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/FirstVC.swift @@ -168,16 +168,23 @@ extension FirstVC{ extension FirstVC{ @objc func kakaoLoginBtnTapped(_ sender: UIButton){ + + let nextVC = OauthCodeVC() + + let nonce = CryptoHelpers.randomNonceString() + print("nonce 값: \(nonce)") + let hashedString = CryptoHelpers.sha256(nonce) + print("hashedString 값: \(hashedString)") - UserApi.shared.loginWithKakaoAccount(prompts:[.Login]) {(oauthToken, error) in + UserApi.shared.loginWithKakaoAccount(prompts:[.Login], nonce: hashedString) {(oauthToken, error) in if let error = error { print(error) } else { print("loginWithKakaoAccount() success.") - print(oauthToken) - _ = oauthToken + KeychainHelper.saveTempToken(tempToken: oauthToken!.idToken!) + print(oauthToken!.idToken) UserApi.shared.me() {(user, error) in if let error = error { @@ -186,8 +193,29 @@ extension FirstVC{ else { print("사용자 정보 가져오기 성공") - print(user) + print(user!.id) + + OauthInfo.provider = "kakao" + OauthInfo.nonce = hashedString + OauthInfo.oauthId = Int(user!.id!) + AlamofireManager.shared.oauthLogin(){ + result in + switch result { + case .success(let data): + // Handle success + if let responseData = data { + // Process the data + let object = try?JSONSerialization.jsonObject(with: responseData, options: []) as? NSDictionary + guard let jsonObject = object else {return} + print("respose jsonData: \(jsonObject)") + self.navigationController?.pushViewController(nextVC, animated: false) + } + case .failure(let error): + // Handle failure + print("Error: \(error)") + } + } } } } diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/LoginVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/LoginVC.swift index e71170f9..c28c7f9d 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/LoginVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/LoginVC.swift @@ -147,7 +147,7 @@ class LoginVC: UIViewController{ let dispatchGroup = DispatchGroup() dispatchGroup.enter() - AlamofireManager.shared.login("heejin", "heejin123") { result in + AlamofireManager.shared.login("heejin", "heejin1234") { result in defer { dispatchGroup.leave() } switch result { @@ -186,12 +186,13 @@ class LoginVC: UIViewController{ let memberDict = dataDict["member"] as? [String: Any] { for (key, value) in memberDict { - print("\(key): \(value)") + //print("\(key): \(value)") UserDefaults.standard.set(value, forKey: key) } UserDefaults.standard.synchronize() } + print("Response JSON Data: \(jsonObject)") } catch { print("Error parsing user profile JSON: \(error)") } diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/OauthVC/OauthCodeVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/OauthVC/OauthCodeVC.swift new file mode 100644 index 00000000..9f75be61 --- /dev/null +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/OauthVC/OauthCodeVC.swift @@ -0,0 +1,155 @@ +import UIKit +import SnapKit +import Alamofire + +class OauthCodeVC: UIViewController { + private let textField1: UITextField = { + let textField = UITextField() + textField.placeholder = "번호 입력" + textField.borderStyle = .roundedRect + return textField + }() + + private let textField2: UITextField = { + let textField = UITextField() + textField.placeholder = "코드 입력" + textField.borderStyle = .roundedRect + return textField + }() + + private let sendsmsButton: UIButton = { + let button = UIButton() + button.setTitle("sendsms", for: .normal) + button.setTitleColor(.systemBlue, for: .normal) + button.addTarget(self, action: #selector(sendsmsButtonTapped), for: .touchUpInside) + return button + }() + + private let checksmsButton: UIButton = { + let button = UIButton() + button.setTitle("checksms", for: .normal) + button.setTitleColor(.systemRed, for: .normal) + button.addTarget(self, action: #selector(checksmsButtonTapped), for: .touchUpInside) + return button + }() + + private let registsButton: UIButton = { + let button = UIButton() + button.setTitle("registuser", for: .normal) + button.setTitleColor(.systemRed, for: .normal) + button.addTarget(self, action: #selector(registButtonTapped), for: .touchUpInside) + return button + }() + + override func viewDidLoad() { + super.viewDidLoad() + + setupUI() + } + + private func setupUI() { + view.addSubview(textField1) + view.addSubview(textField2) + view.addSubview(sendsmsButton) + view.addSubview(checksmsButton) + view.addSubview(registsButton) + + self.view.backgroundColor = .white + + textField1.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(20) + make.leading.equalToSuperview().offset(20) + make.trailing.equalToSuperview().offset(-20) + make.height.equalTo(40) + } + + textField2.snp.makeConstraints { make in + make.top.equalTo(textField1.snp.bottom).offset(20) + make.leading.equalToSuperview().offset(20) + make.trailing.equalToSuperview().offset(-20) + make.height.equalTo(40) + } + + sendsmsButton.snp.makeConstraints { make in + make.top.equalTo(textField2.snp.bottom).offset(20) + make.centerX.equalToSuperview().offset(-70) + } + + checksmsButton.snp.makeConstraints { make in + make.top.equalTo(textField2.snp.bottom).offset(20) + make.centerX.equalToSuperview().offset(70) + } + + registsButton.snp.makeConstraints { make in + make.top.equalTo(sendsmsButton.snp.bottom).offset(20) + make.centerX.equalToSuperview().offset(70) + } + } + + @objc private func sendsmsButtonTapped() { + + OauthInfo.phoneNum = textField1.text! + + + if let text1 = textField1.text, let text2 = textField2.text { + print("Text 1: \(text1), Text 2: \(text2)") + } + + AlamofireManager.shared.oauthSendSms(){ + result in + switch result { + case .success(let data): + // Handle success + if let responseData = data { + // Process the data + let object = try?JSONSerialization.jsonObject(with: responseData, options: []) as? NSDictionary + guard let jsonObject = object else {return} + print("respose jsonData: \(jsonObject)") + } + case .failure(let error): + // Handle failure + print("Error: \(error)") + } + } + } + + @objc private func checksmsButtonTapped() { + + AlamofireManager.shared.oauthCheckSms(textField2.text!){ + result in + switch result { + case .success(let data): + // Handle success + if let responseData = data { + // Process the data + let object = try?JSONSerialization.jsonObject(with: responseData, options: []) as? NSDictionary + guard let jsonObject = object else {return} + print("respose jsonData: \(jsonObject)") + } + case .failure(let error): + // Handle failure + print("Error: \(error)") + } + } + } + @objc private func registButtonTapped() { + + AlamofireManager.shared.oauthRegistUser("hee", "jin"){ + result in + switch result { + case .success(let data): + // Handle success + if let responseData = data { + // Process the data + let object = try?JSONSerialization.jsonObject(with: responseData, options: []) as? NSDictionary + guard let jsonObject = object else {return} + print("respose jsonData: \(jsonObject)") + } + case .failure(let error): + // Handle failure + print("Error: \(error)") + } + } + } +} + diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputNickVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputNickVC.swift index 4af7c246..04582114 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputNickVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputNickVC.swift @@ -74,9 +74,6 @@ class InputNickVC : UIViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - RegistrationManager.shared.addInput(nickname: "최희진2") - // RegistrationManager.shared.performRegistration() - self.navigationController?.navigationBar.tintColor = .black self.navigationController?.navigationBar.topItem?.title = " " @@ -88,6 +85,11 @@ class InputNickVC : UIViewController { @objc func changeCompleteSignUpVC(_ sender: UIButton){ + + if let nickname = inputNick.text { + RegistrationManager.shared.addInput(nickname: nickname) + } + AlamofireManager.shared.regist(RegistrationManager.shared.id!, RegistrationManager.shared.nickname!, RegistrationManager.shared.pw!, "", ""){ result in switch result { diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputPwVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputPwVC.swift index 7cc41d48..fc0d442f 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputPwVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/SignUpVC/InputPwVC.swift @@ -107,7 +107,7 @@ class InputPwVC : UIViewController { @objc func changeInputNickVC(_ sender: UIButton){ if let pw = inputPw.text { - RegistrationManager.shared.addInput(pw: pw) + RegistrationManager.shared.addInput(pw: pw) } let nextVC = InputNickVC() diff --git a/fit-a-pet-client/fit-a-pet-client/ViewControllers/TabBarVC/SettingVC.swift b/fit-a-pet-client/fit-a-pet-client/ViewControllers/TabBarVC/SettingVC.swift index 8a3a5599..ce76d0ce 100644 --- a/fit-a-pet-client/fit-a-pet-client/ViewControllers/TabBarVC/SettingVC.swift +++ b/fit-a-pet-client/fit-a-pet-client/ViewControllers/TabBarVC/SettingVC.swift @@ -1,6 +1,5 @@ import UIKit import SnapKit -import SwiftUI class SettingVC: UIViewController { @@ -32,14 +31,14 @@ class SettingVC: UIViewController { profileUserName.text = UserDefaults.standard.string(forKey: "name")! - if let allValues = UserDefaults.standard.dictionaryRepresentation() as? [String: Any] { - print("All Values in UserDefaults:") - for (key, value) in allValues { - print("\(key): \(value)") - } - } else { - print("Unable to retrieve all values from UserDefaults") - } +// if let allValues = UserDefaults.standard.dictionaryRepresentation() as? [String: Any] { +// print("All Values in UserDefaults:") +// for (key, value) in allValues { +// print("\(key): \(value)") +// } +// } else { +// print("Unable to retrieve all values from UserDefaults") +// } } private func initView() { @@ -199,18 +198,3 @@ extension SettingVC: UITableViewDelegate{ } } - -struct MainViewController_Previews: PreviewProvider { - static var previews: some View { - Container().edgesIgnoringSafeArea(.all) - } - - struct Container: UIViewControllerRepresentable { - func makeUIViewController(context: Context) -> UIViewController { - let rootViewController = SettingVC() - return UINavigationController(rootViewController: rootViewController) - } - func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {} - typealias UIViewControllerType = UIViewController - } -}