From 323711fd2bd785c806d5339ea7bc303deef560eb Mon Sep 17 00:00:00 2001 From: DHGIGHSOUL Date: Thu, 23 Jun 2022 23:10:51 +0900 Subject: [PATCH 1/4] init --- .DS_Store | Bin 6148 -> 8196 bytes KH/.DS_Store | Bin 8196 -> 6148 bytes KH/PR1_ToDoList_Use_AlertController/.DS_Store | Bin 6148 -> 6148 bytes KH/PR2_LightInstagram/.DS_Store | Bin 8196 -> 0 bytes .../LightInstagram/.DS_Store | Bin 8196 -> 0 bytes .../LightInstagram.xcodeproj/project.pbxproj | 652 ------------------ .../LightInstagram/Model/.DS_Store | Bin 6148 -> 0 bytes .../LightInstagram/Model/FeedCell.swift | 21 - .../.xccurrentversion | 16 - .../LightInstagram.xcdatamodel/contents | 4 - .../LightInstagram/SceneDelegate.swift | 60 -- .../ViewCon/AddEditViewController.swift | 18 - .../ViewCon/FeedViewController.swift | 115 --- .../ViewCon/UserViewController.swift | 18 - .../LightInstagramTests.swift | 36 - .../LightInstagramUITests.swift | 41 -- .../LightInstagramUITestsLaunchTests.swift | 32 - KH/PR2_Lightstagram/.DS_Store | Bin 8196 -> 0 bytes KH/PR2_Lightstagram/Feed+CoreDataClass.swift | 15 - .../Feed+CoreDataProperties.swift | 27 - .../project.pbxproj | 235 +++---- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../xcschemes/LightStagram.xcscheme | 78 +++ .../.DS_Store | Bin 8196 -> 8196 bytes .../LightStagram}/AppDelegate.swift | 6 +- .../LightStagram/Assets.xcassets}/.DS_Store | Bin 6148 -> 6148 bytes .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../UserImage.imageset/Contents.json | 21 + .../Swift_Logo_RoundSquare.png | Bin 0 -> 31385 bytes .../Base.lproj/LaunchScreen.storyboard | 0 .../LightStagram}/Info.plist | 0 .../Model/.DS_Store | Bin 6148 -> 6148 bytes .../LightStagram/Model/CoreDataManager.swift | 100 +++ .../.xccurrentversion} | 4 +- .../LightStagram.xcdatamodel}/contents | 8 +- .../Model/MainViewTableViewModel.swift | 17 + .../UserProfileViewCollectionViewModel.swift | 14 + .../SceneDelegate.swift | 13 +- .../View/MainViewTableCustomCell.swift | 141 ++++ .../AddEditViewController.swift | 253 +++++++ .../ViewController/MainViewController.swift | 79 +++ .../UserProfileViewController.swift | 210 ++++++ .../WindowTabBarViewController.swift | 35 + .../contents.xcworkspacedata | 7 - .../xcshareddata/swiftpm/Package.resolved | 14 - .../PR2_Lightstagram/AppDelegate.swift | 77 --- .../Assets.xcassets/.DS_Store | Bin 6148 -> 0 bytes .../AccentColor.colorset/Contents.json | 11 - .../AppIcon.appiconset/Contents.json | 98 --- .../Assets.xcassets/Contents.json | 6 - .../PR2_Lightstagram/Image/IMG_3117.JPG | Bin 209022 -> 0 bytes .../PR2_Lightstagram/Info.plist | 23 - .../PR2_Lightstagram/Model/FeedModel.swift | 16 - .../Model/newFeedTableViewCell.swift | 29 - .../.xccurrentversion | 5 - .../PR2_Lightstagram.xcdatamodel/contents | 4 - .../PR2_Lightstagram/ViewController/.DS_Store | Bin 6148 -> 0 bytes .../addEditViewController.swift | 158 ----- .../ViewController/mainViewController.swift | 138 ---- .../userProfileViewController.swift | 237 ------- 64 files changed, 1084 insertions(+), 2008 deletions(-) delete mode 100644 KH/PR2_LightInstagram/.DS_Store delete mode 100644 KH/PR2_LightInstagram/LightInstagram/.DS_Store delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.pbxproj delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/.DS_Store delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/FeedCell.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/LightInstagram.xcdatamodeld/.xccurrentversion delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/LightInstagram.xcdatamodeld/LightInstagram.xcdatamodel/contents delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/SceneDelegate.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/AddEditViewController.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/FeedViewController.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/UserViewController.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagramTests/LightInstagramTests.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITests.swift delete mode 100644 KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITestsLaunchTests.swift delete mode 100644 KH/PR2_Lightstagram/.DS_Store delete mode 100644 KH/PR2_Lightstagram/Feed+CoreDataClass.swift delete mode 100644 KH/PR2_Lightstagram/Feed+CoreDataProperties.swift rename KH/PR2_Lightstagram/{PR2_Lightstagram.xcodeproj => LightStagram.xcodeproj}/project.pbxproj (55%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj => PR2_Lightstagram/LightStagram.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj => PR2_Lightstagram/LightStagram.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj => PR2_Lightstagram/LightStagram.xcodeproj}/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%) create mode 100644 KH/PR2_Lightstagram/LightStagram.xcodeproj/xcshareddata/xcschemes/LightStagram.xcscheme rename KH/PR2_Lightstagram/{PR2_Lightstagram => LightStagram}/.DS_Store (66%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram}/AppDelegate.swift (96%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram/Assets.xcassets}/.DS_Store (75%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram}/Assets.xcassets/Contents.json (100%) create mode 100644 KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Contents.json create mode 100644 KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Swift_Logo_RoundSquare.png rename KH/PR2_Lightstagram/{PR2_Lightstagram => LightStagram}/Base.lproj/LaunchScreen.storyboard (100%) rename KH/{PR2_LightInstagram/LightInstagram/LightInstagram => PR2_Lightstagram/LightStagram}/Info.plist (100%) rename KH/PR2_Lightstagram/{PR2_Lightstagram => LightStagram}/Model/.DS_Store (92%) create mode 100644 KH/PR2_Lightstagram/LightStagram/Model/CoreDataManager.swift rename KH/PR2_Lightstagram/{PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist => LightStagram/Model/LightStagram.xcdatamodeld/.xccurrentversion} (70%) rename KH/PR2_Lightstagram/{PR2_Lightstagram/Model/lightstagramModel.xcdatamodeld/lightstagramModel.xcdatamodel => LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel}/contents (71%) create mode 100644 KH/PR2_Lightstagram/LightStagram/Model/MainViewTableViewModel.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/Model/UserProfileViewCollectionViewModel.swift rename KH/PR2_Lightstagram/{PR2_Lightstagram => LightStagram}/SceneDelegate.swift (86%) create mode 100644 KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/AppDelegate.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/.DS_Store delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/Contents.json delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Image/IMG_3117.JPG delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Info.plist delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Model/FeedModel.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/Model/newFeedTableViewCell.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/.xccurrentversion delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/PR2_Lightstagram.xcdatamodel/contents delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/.DS_Store delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/addEditViewController.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/mainViewController.swift delete mode 100644 KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/userProfileViewController.swift diff --git a/.DS_Store b/.DS_Store index df014fa700bf981c2bbe9d61bbe9b136231da181..48a1ed6cafdda5b38d0bc590ef8d25852cf8e37f 100644 GIT binary patch literal 8196 zcmeHM%TE(Q82<*V-CD6LR7H)+CXERP#1;}C@n9__ibfzUBE(1CwoBQt-D!5WR3Idc zH%-)-c=ZqP^CdICneQ==U;FKJwg5mf^>PYe z001;B4D~2hI|#G0(j`4o6GJ2z4^AbOFVSkP%Tp;71BwB~fMP%~pcwdD7{D`|iT0Co zUszSG7*GuSmkhAygMo!%T4GZme{^8QuKtmgKlBb=jE1-?=as z^tlR`FXg6_bwBX1AA(6Rp$b;Zwk`f8>bv5L4ZkMmcwMYHwjU&uA4t!x(C$6qa3mZJ z-_9@6Mm{iux}PzvNyV~cYjPj5bKNe_s0(&(g%(d^!}n*TB>+# ziDT5EUdE|g1wH2DMkh+to%XC{+~8bb-3#*eDw_JX1>~&qoh{YON)3JDTM9ntCC{?l zn-$M4Pc1C?RxsDrp1;NC3asjcyFhV#Hs4e&u&L|MTAq(MZ+f2TR; zK|rf>Hm;DZiVv5snI+q;Brfo;5I`i69uySmkZ5tG#ak_jWX3hC7Wz&LMIwDwS~NHT z=iwU6!V;{)Q+N(9;1#@w4fq6~;VU7eheSy)IYbVVL2{A|lQSZ+r}a4uCl3Fd zI?`$PwL<91|&vyBf#T zu0pvpNyu^ZYEKgE?j&q50}I2n#HK)|VtRG{Ga{5I2L3??c8N6)u>1e`&)@(5gF918 zRtzWxewP6f%I32f^ya7f4pHosH?Z8r!i4!X1@aKAI(`UXfAbGRY#ZpxV$u?u0#Spa PUIcI&RHYdBqYV52;&TvN delta 321 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5sJ6q~50D9R3!2Z<%+F;RR9;*FmEE3Hkds+lVqkEMk%^gwm5rT)or9ZWvY=p?4hJU(XS{%Tb+xIX zj)JkJWvz}vwWX1Pj)IA?S#2#Rhp4i?bx?eEPHtX)=j7>v@}gZp+n5-D=9dK*<>ln( zrGs2D`G|nI7%{e3nCU1O8kiEYg|Tb$ap8oG1uGdBvvY6=G6U@Z0s(Fy;R*_cjfvlx YC-cjAg2Dvo8gTf4f{bBvJkK0v0C)UD2LJ#7 diff --git a/KH/.DS_Store b/KH/.DS_Store index ba184d0278a675c828d9b5cfc706419267bda76c..584a7b0caa2f95ac83c21c32886925c846b3816a 100644 GIT binary patch delta 280 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jGxXU^g=(&*TFFE|UWU4sfjB zc=cqc(Gf?WfZOCaK`u6kz~nr^$jL$?2CNH#n!P5wirD%)-jX z&d$ls%|1C$D9nJ9lY=u}K)Slx(7?z{N5Rn8$g);Pq1w>Q!azsC(%87RmXkwNS>HM+ zK07BjFTZ!PxTrj1-(-FfmC4bfyv#r=!0die9=0W$wVs9=OZBR%sY>wxd!wdl6vqGc* literal 8196 zcmeHMJ#P~+7=GQR=|vS%#E0mDIEght(x!!qB~8Oni2*eQ20$TcqBP=ij`Bf41{jd|4GgRd3@q>q;CXEqE^X7Kv{V#q$$lK$kA3&}xsUfkL?YcPCWt19 z$U$a|PN3K(aX;rRX~eV~0}AkomPt|u`3hCGjJ6F{0jq#jz$#!BunPPQ3gDT|$?5al z*S)s13RngHO9lA;;36}o40biDTL%gi0sup3Rta^)0gB@qOd0HIR8-8VqX%KA!h{$? z)6wtpaA3+{SEHtr&~y@JWnm%|p;iaaRl`Z7G}_WCU=`S^0LShwU8N;TP_8F_Z%`90 z*Qh}y;5>Q2I@%Tx-}}Hi(9^Apo?Iz-vVghx@|#CK_gy8__F;anoXD=oYE8{XalX{| ze9Tpu$(UnylHv8aC+>Sb?tPfI_($fgtp+tnu@pzuzD;3w_o@t= zvXow7qn;C6UjwSb~+bl zV{RfovleqZb5rq{o1C6qTZ=d+&YZurl)LLyeR-etz+GQxq$375-~lQ_oodi(;_>Mh z!}5Z5y72M&w|8fiorYSoDt}pKx7?sD#M5VdzC*2fFI)FL>6bB{HH&Uzr5$WUFTn}g zXdpjeq1Oj)p~+4sk(`EyW~O%V5PJlvuZJF@bKrRf{X=7q-VVbFdgs&UH|t+w$~yzs z3i@U@yr5?&{FP67;98sf!W^3pxdNm5_$N93zYGu9?*NBuOXK6e=7Cs&E|m^AAJRT?}PT%3xO`T96L>LqOkmNc;Tn4JCTs N|LpT$x%J;EegNjlx)T5Z diff --git a/KH/PR1_ToDoList_Use_AlertController/.DS_Store b/KH/PR1_ToDoList_Use_AlertController/.DS_Store index 1561e3447cc7e7c257d8b51ab8fd9e05aa49efe1..21a6d0ea0dfb06dc6096b5f1bd48dae8c0a5bf0a 100644 GIT binary patch delta 34 hcmZoMXffCj$;@UP)?FBCG&!DG3BeTGJeN6L1OU9E3W)#! delta 34 hcmZoMXffCj$;{TgU(vf)c5*zk5`rnVc`kFh2mr~N3n2gi diff --git a/KH/PR2_LightInstagram/.DS_Store b/KH/PR2_LightInstagram/.DS_Store deleted file mode 100644 index 64c6efb227d537de2bdb34d10d9fc081b342749e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHL%TE(Q82<)Pwj!`RDquWp?8O9BP$VJ7Pzy#IH4sX$2w1l5QdYJz&F%sMA?a0b zCZ0@;XHOnHc<`k0;9ua)_$R1GPx{TH@+gmRFp)T4GV`0q_nXJBot^y_07zmf-v`hM z00t(GW&>us81Lt)%4$>#?p1=)g>b0El(iEDXyS2MCU(Fs`sHQBZMA89fk1B`U-q zl8*frcSnpXEK8JhAd(J5%}i8;Ld5LIvxGa4xI~?61+)Uy3h-mo1b4uN0xWEc-wWVl z6kkkwESL3I7XA3qx{m3>FJV|ZfSX+jN{ah7Tk_l>?Ct$bYHI6_9j`a)jRs>jwZK+V zp&c#-3EQ9MwF$<&Y^7{xCtYVHW3~@78rm*(d_i#Y4!X?Tb7`KfB-j$o2ZEcD9Y(~6 zWXz8B_5S|B9_z}$Mvt{Vc&WF?>c2d&u@Nz%v5Qy7GmBo4vd3Z*K-5zO8fE=Y{^X!7 zy18YwMe?Dt#jmDW*<|EI!^y^`X0xTWt);ys8jYUnh<0|J?#h^LSv$8_@cH70naBKu zx8zJ0d^eve**TXM(xLMxOu1`L#%$f;I_~5jY&K1-me8ktvq21Z({~&y#v7fV51cTa zF`I*&&pdC81#ajvI<=*DY9>JGlc7^g(s_n6E~D(DCGHkXI(~py#ZOP!zHifllUSYg z?5yLB(gX`bR!qA&M&-(z#jsc%^Bq29Z0Ng`HWt5KDV&o96JoM}FQo02l0q^;8FeDD z_?T>n;APQ`f5p2n35&1>PvHf;hIjA@zQ8y5N$QD7&XR7@Pp*+6a*HI%eUc$_#Fg}# z%CCK9`#j_!*7rROUZF3QW5p8Zk!SU<4)QOukr8zOjINh&e!M^bksqLa=P0uLp*f|6 zE$ez-#wqrnV>#thkI@49RkYxo9mcyXOdR71%Mt|(GjR(e>iZvc(WVtRN($7<#dh-e z|Hj_m|Bup^^jft7T7g3 diff --git a/KH/PR2_LightInstagram/LightInstagram/.DS_Store b/KH/PR2_LightInstagram/LightInstagram/.DS_Store deleted file mode 100644 index 087a99698965c7d8544acc74f6127b1169826784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeI1ze)o^5XNUUML-Zig*1VCf=IvzI72J~!6w>k5=oTA3r4~6dLKZr@dX62v9l1Y z>;=n|`U*kNZ+2I6o0vZrK}2U^_dE9Ho4x%(?wAb`soZfjOOzs_Bs%ND9EL9%-{(Hi zX6(!oRKZVlLs{v`o^KX~Y@ zzSYpEesy5bB>*&mY29#*IzW3otG?CHsJ0@fsUDQIDqCVGW5<1u!=b*_(5SJKGImmS zWo0WArB{c~)8V9iqcREsAuvdQYxj97(jL{Q?$qx!Iz$!UEHr{jxe=5R$3Lw#^vs)X zxEkYa)Uu^Y&}`{Q+USmpZwC3iT`O5WqucBBJ+C+N`I)=6J~LlCZ3RGLT8lZ^Gf%kXh=@%?(vK7cBq-p;qpjoTR3$aLQbXo$i>Ly z(o3ErQw(>M;N#2d2fuMa=}7hXa@2>f9JDv>Yc zbJ(D*tp~QswYG=8jn0kZLZjM(L6_rDU5-OP|1iY0hfwzTRzsthL6d_3jX?$>@S_CY E0i84{bN~PV diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.pbxproj b/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.pbxproj deleted file mode 100644 index 2d40c5f..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.pbxproj +++ /dev/null @@ -1,652 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXBuildFile section */ - F59EDB8E285D94930068E5CD /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = F59EDB8D285D94930068E5CD /* SnapKit */; }; - FD0B73C6283A993F00B6B7E8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73C5283A993F00B6B7E8 /* AppDelegate.swift */; }; - FD0B73C8283A993F00B6B7E8 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73C7283A993F00B6B7E8 /* SceneDelegate.swift */; }; - FD0B73CA283A993F00B6B7E8 /* FeedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73C9283A993F00B6B7E8 /* FeedViewController.swift */; }; - FD0B73D0283A993F00B6B7E8 /* LightInstagram.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73CE283A993F00B6B7E8 /* LightInstagram.xcdatamodeld */; }; - FD0B73D2283A993F00B6B7E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FD0B73D1283A993F00B6B7E8 /* Assets.xcassets */; }; - FD0B73E0283A993F00B6B7E8 /* LightInstagramTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73DF283A993F00B6B7E8 /* LightInstagramTests.swift */; }; - FD0B73EA283A993F00B6B7E8 /* LightInstagramUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73E9283A993F00B6B7E8 /* LightInstagramUITests.swift */; }; - FD0B73EC283A993F00B6B7E8 /* LightInstagramUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD0B73EB283A993F00B6B7E8 /* LightInstagramUITestsLaunchTests.swift */; }; - FD689814283B401D003D434C /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD689813283B401D003D434C /* UserViewController.swift */; }; - FD689816283B4031003D434C /* AddEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD689815283B4031003D434C /* AddEditViewController.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - FD0B73DC283A993F00B6B7E8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FD0B73BA283A993F00B6B7E8 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FD0B73C1283A993F00B6B7E8; - remoteInfo = LightInstagram; - }; - FD0B73E6283A993F00B6B7E8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FD0B73BA283A993F00B6B7E8 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FD0B73C1283A993F00B6B7E8; - remoteInfo = LightInstagram; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - FD0B73C2283A993F00B6B7E8 /* LightInstagram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LightInstagram.app; sourceTree = BUILT_PRODUCTS_DIR; }; - FD0B73C5283A993F00B6B7E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - FD0B73C7283A993F00B6B7E8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - FD0B73C9283A993F00B6B7E8 /* FeedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedViewController.swift; sourceTree = ""; }; - FD0B73CF283A993F00B6B7E8 /* LightInstagram.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LightInstagram.xcdatamodel; sourceTree = ""; }; - FD0B73D1283A993F00B6B7E8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FD0B73D6283A993F00B6B7E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FD0B73DB283A993F00B6B7E8 /* LightInstagramTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LightInstagramTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - FD0B73DF283A993F00B6B7E8 /* LightInstagramTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightInstagramTests.swift; sourceTree = ""; }; - FD0B73E5283A993F00B6B7E8 /* LightInstagramUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LightInstagramUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - FD0B73E9283A993F00B6B7E8 /* LightInstagramUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightInstagramUITests.swift; sourceTree = ""; }; - FD0B73EB283A993F00B6B7E8 /* LightInstagramUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightInstagramUITestsLaunchTests.swift; sourceTree = ""; }; - FD61B3E2283AA1E200B1C141 /* SnapKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = SnapKit.xcframework; path = Carthage/Build/SnapKit.xcframework; sourceTree = ""; }; - FD689813283B401D003D434C /* UserViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = ""; }; - FD689815283B4031003D434C /* AddEditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddEditViewController.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - FD0B73BF283A993F00B6B7E8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F59EDB8E285D94930068E5CD /* SnapKit in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73D8283A993F00B6B7E8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73E2283A993F00B6B7E8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - FD0B73B9283A993F00B6B7E8 = { - isa = PBXGroup; - children = ( - FD0B73C4283A993F00B6B7E8 /* LightInstagram */, - FD0B73DE283A993F00B6B7E8 /* LightInstagramTests */, - FD0B73E8283A993F00B6B7E8 /* LightInstagramUITests */, - FD0B73C3283A993F00B6B7E8 /* Products */, - FD61B3E1283AA1E200B1C141 /* Frameworks */, - ); - sourceTree = ""; - }; - FD0B73C3283A993F00B6B7E8 /* Products */ = { - isa = PBXGroup; - children = ( - FD0B73C2283A993F00B6B7E8 /* LightInstagram.app */, - FD0B73DB283A993F00B6B7E8 /* LightInstagramTests.xctest */, - FD0B73E5283A993F00B6B7E8 /* LightInstagramUITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - FD0B73C4283A993F00B6B7E8 /* LightInstagram */ = { - isa = PBXGroup; - children = ( - FD0B73C5283A993F00B6B7E8 /* AppDelegate.swift */, - FD0B73C7283A993F00B6B7E8 /* SceneDelegate.swift */, - FD0B73D1283A993F00B6B7E8 /* Assets.xcassets */, - FD0B73D6283A993F00B6B7E8 /* Info.plist */, - FD68980F283B36CF003D434C /* Model */, - FD689810283B36D6003D434C /* ViewCon */, - ); - path = LightInstagram; - sourceTree = ""; - }; - FD0B73DE283A993F00B6B7E8 /* LightInstagramTests */ = { - isa = PBXGroup; - children = ( - FD0B73DF283A993F00B6B7E8 /* LightInstagramTests.swift */, - ); - path = LightInstagramTests; - sourceTree = ""; - }; - FD0B73E8283A993F00B6B7E8 /* LightInstagramUITests */ = { - isa = PBXGroup; - children = ( - FD0B73E9283A993F00B6B7E8 /* LightInstagramUITests.swift */, - FD0B73EB283A993F00B6B7E8 /* LightInstagramUITestsLaunchTests.swift */, - ); - path = LightInstagramUITests; - sourceTree = ""; - }; - FD61B3E1283AA1E200B1C141 /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD61B3E2283AA1E200B1C141 /* SnapKit.xcframework */, - ); - name = Frameworks; - sourceTree = ""; - }; - FD68980F283B36CF003D434C /* Model */ = { - isa = PBXGroup; - children = ( - FD0B73CE283A993F00B6B7E8 /* LightInstagram.xcdatamodeld */, - ); - path = Model; - sourceTree = ""; - }; - FD689810283B36D6003D434C /* ViewCon */ = { - isa = PBXGroup; - children = ( - FD0B73C9283A993F00B6B7E8 /* FeedViewController.swift */, - FD689813283B401D003D434C /* UserViewController.swift */, - FD689815283B4031003D434C /* AddEditViewController.swift */, - ); - path = ViewCon; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - FD0B73C1283A993F00B6B7E8 /* LightInstagram */ = { - isa = PBXNativeTarget; - buildConfigurationList = FD0B73EF283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagram" */; - buildPhases = ( - FD0B73BE283A993F00B6B7E8 /* Sources */, - FD0B73BF283A993F00B6B7E8 /* Frameworks */, - FD0B73C0283A993F00B6B7E8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LightInstagram; - packageProductDependencies = ( - F59EDB8D285D94930068E5CD /* SnapKit */, - ); - productName = LightInstagram; - productReference = FD0B73C2283A993F00B6B7E8 /* LightInstagram.app */; - productType = "com.apple.product-type.application"; - }; - FD0B73DA283A993F00B6B7E8 /* LightInstagramTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = FD0B73F2283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagramTests" */; - buildPhases = ( - FD0B73D7283A993F00B6B7E8 /* Sources */, - FD0B73D8283A993F00B6B7E8 /* Frameworks */, - FD0B73D9283A993F00B6B7E8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - FD0B73DD283A993F00B6B7E8 /* PBXTargetDependency */, - ); - name = LightInstagramTests; - productName = LightInstagramTests; - productReference = FD0B73DB283A993F00B6B7E8 /* LightInstagramTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - FD0B73E4283A993F00B6B7E8 /* LightInstagramUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = FD0B73F5283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagramUITests" */; - buildPhases = ( - FD0B73E1283A993F00B6B7E8 /* Sources */, - FD0B73E2283A993F00B6B7E8 /* Frameworks */, - FD0B73E3283A993F00B6B7E8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - FD0B73E7283A993F00B6B7E8 /* PBXTargetDependency */, - ); - name = LightInstagramUITests; - productName = LightInstagramUITests; - productReference = FD0B73E5283A993F00B6B7E8 /* LightInstagramUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - FD0B73BA283A993F00B6B7E8 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1330; - LastUpgradeCheck = 1330; - TargetAttributes = { - FD0B73C1283A993F00B6B7E8 = { - CreatedOnToolsVersion = 13.3; - }; - FD0B73DA283A993F00B6B7E8 = { - CreatedOnToolsVersion = 13.3; - TestTargetID = FD0B73C1283A993F00B6B7E8; - }; - FD0B73E4283A993F00B6B7E8 = { - CreatedOnToolsVersion = 13.3; - TestTargetID = FD0B73C1283A993F00B6B7E8; - }; - }; - }; - buildConfigurationList = FD0B73BD283A993F00B6B7E8 /* Build configuration list for PBXProject "LightInstagram" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = FD0B73B9283A993F00B6B7E8; - packageReferences = ( - F59EDB8C285D94930068E5CD /* XCRemoteSwiftPackageReference "SnapKit" */, - ); - productRefGroup = FD0B73C3283A993F00B6B7E8 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - FD0B73C1283A993F00B6B7E8 /* LightInstagram */, - FD0B73DA283A993F00B6B7E8 /* LightInstagramTests */, - FD0B73E4283A993F00B6B7E8 /* LightInstagramUITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - FD0B73C0283A993F00B6B7E8 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FD0B73D2283A993F00B6B7E8 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73D9283A993F00B6B7E8 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73E3283A993F00B6B7E8 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - FD0B73BE283A993F00B6B7E8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FD0B73CA283A993F00B6B7E8 /* FeedViewController.swift in Sources */, - FD689816283B4031003D434C /* AddEditViewController.swift in Sources */, - FD689814283B401D003D434C /* UserViewController.swift in Sources */, - FD0B73D0283A993F00B6B7E8 /* LightInstagram.xcdatamodeld in Sources */, - FD0B73C6283A993F00B6B7E8 /* AppDelegate.swift in Sources */, - FD0B73C8283A993F00B6B7E8 /* SceneDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73D7283A993F00B6B7E8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FD0B73E0283A993F00B6B7E8 /* LightInstagramTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD0B73E1283A993F00B6B7E8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FD0B73EC283A993F00B6B7E8 /* LightInstagramUITestsLaunchTests.swift in Sources */, - FD0B73EA283A993F00B6B7E8 /* LightInstagramUITests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - FD0B73DD283A993F00B6B7E8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = FD0B73C1283A993F00B6B7E8 /* LightInstagram */; - targetProxy = FD0B73DC283A993F00B6B7E8 /* PBXContainerItemProxy */; - }; - FD0B73E7283A993F00B6B7E8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = FD0B73C1283A993F00B6B7E8 /* LightInstagram */; - targetProxy = FD0B73E6283A993F00B6B7E8 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - FD0B73ED283A993F00B6B7E8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - FD0B73EE283A993F00B6B7E8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - FD0B73F0283A993F00B6B7E8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZMXTCSPNUZ; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = LightInstagram/Info.plist; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagram; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - FD0B73F1283A993F00B6B7E8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZMXTCSPNUZ; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = LightInstagram/Info.plist; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagram; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - FD0B73F3283A993F00B6B7E8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagramTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LightInstagram.app/LightInstagram"; - }; - name = Debug; - }; - FD0B73F4283A993F00B6B7E8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagramTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LightInstagram.app/LightInstagram"; - }; - name = Release; - }; - FD0B73F6283A993F00B6B7E8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagramUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = LightInstagram; - }; - name = Debug; - }; - FD0B73F7283A993F00B6B7E8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightInstagramUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = LightInstagram; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - FD0B73BD283A993F00B6B7E8 /* Build configuration list for PBXProject "LightInstagram" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FD0B73ED283A993F00B6B7E8 /* Debug */, - FD0B73EE283A993F00B6B7E8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FD0B73EF283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagram" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FD0B73F0283A993F00B6B7E8 /* Debug */, - FD0B73F1283A993F00B6B7E8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FD0B73F2283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagramTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FD0B73F3283A993F00B6B7E8 /* Debug */, - FD0B73F4283A993F00B6B7E8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FD0B73F5283A993F00B6B7E8 /* Build configuration list for PBXNativeTarget "LightInstagramUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FD0B73F6283A993F00B6B7E8 /* Debug */, - FD0B73F7283A993F00B6B7E8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - F59EDB8C285D94930068E5CD /* XCRemoteSwiftPackageReference "SnapKit" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/SnapKit/SnapKit.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 5.0.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - F59EDB8D285D94930068E5CD /* SnapKit */ = { - isa = XCSwiftPackageProductDependency; - package = F59EDB8C285D94930068E5CD /* XCRemoteSwiftPackageReference "SnapKit" */; - productName = SnapKit; - }; -/* End XCSwiftPackageProductDependency section */ - -/* Begin XCVersionGroup section */ - FD0B73CE283A993F00B6B7E8 /* LightInstagram.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - FD0B73CF283A993F00B6B7E8 /* LightInstagram.xcdatamodel */, - ); - currentVersion = FD0B73CF283A993F00B6B7E8 /* LightInstagram.xcdatamodel */; - path = LightInstagram.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = FD0B73BA283A993F00B6B7E8 /* Project object */; -} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/.DS_Store b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/.DS_Store deleted file mode 100644 index 2c4d81778271498d835b937fb531a8bd05504965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5PchahDW>)fOGs*Jw~R^=LBd+Jzn~JN|m6wkykN(@mKn ze>quZPlwN^-^o_}V7A5l{V5|~%f%UR2AqLE&j5S2NWQ1&)){aHoPiYs@_mR@!NRat zOrH*#Gy)LiH!=y=GD}EIG%O5zMc$zV4JB%5un{9@IQ`M~6^6Z{h9lVU5$wsqCX|q# z&ipZLM<^8CIs?wYIs-d;Ih6i?_WAt39^_ZffHUx~7zl%MQjU2f>#ZAylU^ICmsAni m*DJ0 - - - - SchemeUserState - - Instagram_Light.xcscheme_^#shared#^_ - - orderHint - 0 - - - _XCCurrentVersionName - LightInstagram.xcdatamodel - - diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/LightInstagram.xcdatamodeld/LightInstagram.xcdatamodel/contents b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/LightInstagram.xcdatamodeld/LightInstagram.xcdatamodel/contents deleted file mode 100644 index b6e103f..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Model/LightInstagram.xcdatamodeld/LightInstagram.xcdatamodel/contents +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/SceneDelegate.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/SceneDelegate.swift deleted file mode 100644 index 17f04bd..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/SceneDelegate.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// SceneDelegate.swift -// LightInstagram -// -// Created by ROLF J. on 2022/05/23. -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let windowScene = (scene as? UIWindowScene) else { return } - window = UIWindow(windowScene: windowScene) - let mainViewController = FeedViewController() - - window?.rootViewController = mainViewController - window?.makeKeyAndVisible() - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - - // Save changes in the application's managed object context when the application transitions to the background. - (UIApplication.shared.delegate as? AppDelegate)?.saveContext() - } - - -} - diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/AddEditViewController.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/AddEditViewController.swift deleted file mode 100644 index a2c170a..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/AddEditViewController.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// AddEditViewController.swift -// LightInstagram -// -// Created by ROLF J. on 2022/05/23. -// - -import UIKit -import SnapKit - -class AddEditViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - - } -} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/FeedViewController.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/FeedViewController.swift deleted file mode 100644 index 65aef95..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/FeedViewController.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// ViewController.swift -// LightInstagram -// -// Created by ROLF J. on 2022/05/23. -// - -import UIKit -import SnapKit - -class FeedViewController: UIViewController { - - // Main 화면 피드를 보여줄 TableView - let feedTableView = UITableView() - - // 하단에 들어갈 버튼 선언 - var mainFeedButton = UIButton() - var feedAddButton = UIButton() - var userProfileButton = UIButton() - - override func viewDidLoad() { - super.viewDidLoad() - - // Main 화면 배경색 설정 - view.backgroundColor = .white - - // Main 화면(피드 화면)의 제목(TextLabel) - let userViewTitle = UILabel() - userViewTitle.text = " Lightstagram" - userViewTitle.backgroundColor = .orange - self.view.addSubview(userViewTitle) - userViewTitle.font = UIFont.boldSystemFont(ofSize: 30.0) - userViewTitle.snp.makeConstraints { make in - make.width.left.equalTo(self.view) - make.height.equalTo(70) - make.top.equalTo(self.view).offset(40) - } - - // 모든 화면에 들어갈 하단부 Navigation Bar, 버튼이 들어갈 공간의 Background color 지정 - let naviButtonBar = UIView() - self.view.addSubview(naviButtonBar) - naviButtonBar.backgroundColor = .lightGray - naviButtonBar.snp.makeConstraints { make in - make.width.bottom.equalTo(self.view) - make.height.equalTo(100) - } - - // feed들을 보여줄 tableView 공간 설정 - self.view.addSubview(feedTableView) - feedTableView.backgroundColor = .gray - feedTableView.snp.makeConstraints { make in - make.width.equalTo(self.view) - make.top.equalTo(userViewTitle.snp.bottom) - make.bottom.equalTo(naviButtonBar.snp.top) - } - - // mainFeedButton - mainFeedButton.backgroundColor = .blue - self.view.addSubview(mainFeedButton) - mainFeedButton.snp.makeConstraints { make in - make.left.equalTo(self.view).offset(60) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - - // feedAddButton - feedAddButton.backgroundColor = .red - self.view.addSubview(feedAddButton) - feedAddButton.snp.makeConstraints { make in - make.centerX.equalTo(self.view) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - - // tab to move feed Add/Edit View - - - // userProfileButton - userProfileButton.backgroundColor = .green - self.view.addSubview(userProfileButton) - userProfileButton.snp.makeConstraints { make in - make.right.equalTo(self.view).offset(-60) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - - - // Main 화면의 FeedCell 위치 설정 -// let LSFeedCell - -// let userImage = UIImage() -// self.view.addSubview(userImage) -// userImage.snp.makeConstraints { (make) in -// make.top.equalTo(userViewTitle).offset(30) -// } - - } -} - -//extension FeedViewController: UITableViewDelegate { -// -//} -// -//extension FeedViewController: UITableViewDataSource { -// func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { -// } -// -// func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { -// } -// -// -//} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/UserViewController.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/UserViewController.swift deleted file mode 100644 index b691dd3..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/ViewCon/UserViewController.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// UserViewController.swift -// LightInstagram -// -// Created by ROLF J. on 2022/05/23. -// - -import UIKit -import SnapKit - -class UserViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - - } -} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagramTests/LightInstagramTests.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagramTests/LightInstagramTests.swift deleted file mode 100644 index e10caf7..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagramTests/LightInstagramTests.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// LightInstagramTests.swift -// LightInstagramTests -// -// Created by ROLF J. on 2022/05/23. -// - -import XCTest -@testable import LightInstagram - -class LightInstagramTests: XCTestCase { - - override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func testExample() throws { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - // Any test you write for XCTest can be annotated as throws and async. - // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. - // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. - } - - func testPerformanceExample() throws { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. - } - } - -} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITests.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITests.swift deleted file mode 100644 index df9ee3c..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITests.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// LightInstagramUITests.swift -// LightInstagramUITests -// -// Created by ROLF J. on 2022/05/23. -// - -import XCTest - -class LightInstagramUITests: XCTestCase { - - override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. - - // In UI tests it is usually best to stop immediately when a failure occurs. - continueAfterFailure = false - - // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. - } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func testExample() throws { - // UI tests must launch the application that they test. - let app = XCUIApplication() - app.launch() - - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - func testLaunchPerformance() throws { - if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { - // This measures how long it takes to launch your application. - measure(metrics: [XCTApplicationLaunchMetric()]) { - XCUIApplication().launch() - } - } - } -} diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITestsLaunchTests.swift b/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITestsLaunchTests.swift deleted file mode 100644 index b24a08c..0000000 --- a/KH/PR2_LightInstagram/LightInstagram/LightInstagramUITests/LightInstagramUITestsLaunchTests.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// LightInstagramUITestsLaunchTests.swift -// LightInstagramUITests -// -// Created by ROLF J. on 2022/05/23. -// - -import XCTest - -class LightInstagramUITestsLaunchTests: XCTestCase { - - override class var runsForEachTargetApplicationUIConfiguration: Bool { - true - } - - override func setUpWithError() throws { - continueAfterFailure = false - } - - func testLaunch() throws { - let app = XCUIApplication() - app.launch() - - // Insert steps here to perform after app launch but before taking a screenshot, - // such as logging into a test account or navigating somewhere in the app - - let attachment = XCTAttachment(screenshot: app.screenshot()) - attachment.name = "Launch Screen" - attachment.lifetime = .keepAlways - add(attachment) - } -} diff --git a/KH/PR2_Lightstagram/.DS_Store b/KH/PR2_Lightstagram/.DS_Store deleted file mode 100644 index f9a9fe8cdc1a173aeeb7e3d9645586959efe0e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMO^ee&7=CBB>!vJ94+=$C2zV09+ICk#ywq+L1P`SVJ*d>AscqIY6WY`YrI54! z0>Oj-z^gw%Z=Ux*c=6_0pZRcUx4P8|R&b`wJju*F?>l*BI@32LB32#xC89hLS;zu& zTPS{zM7zjyX-(Ih0W$E3F3~=5>QkF)bG=Q4QNSo*6fg=H1&jj!f&w_RMY4W!?yFW) z8U>63|D^(Af3T4SRy3vx<<@~hh5*0}s%648;sD99HC8mH3MCabRrJ6#mFW*pEZ642u{HD-cBWVNQZ{GwW{twKW1F6X`m5I;KdCubYE0Af z@~5_D=8Cf3loF$)!qsY11G&G|3XFv%#eItA91>%55nZ(<`i?*Udf7sj(uU{wmR zOwFlP;awfg^TQCawvGH4StQXfRVXPaL>Eyn!*SrzABMQLbz4Past_$m=7)fk!4yV; HzpB7D5rYkA diff --git a/KH/PR2_Lightstagram/Feed+CoreDataClass.swift b/KH/PR2_Lightstagram/Feed+CoreDataClass.swift deleted file mode 100644 index deb68a5..0000000 --- a/KH/PR2_Lightstagram/Feed+CoreDataClass.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// Feed+CoreDataClass.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/15. -// -// - -import Foundation -import CoreData - -@objc(Feed) -public class Feed: NSManagedObject { - -} diff --git a/KH/PR2_Lightstagram/Feed+CoreDataProperties.swift b/KH/PR2_Lightstagram/Feed+CoreDataProperties.swift deleted file mode 100644 index 94de604..0000000 --- a/KH/PR2_Lightstagram/Feed+CoreDataProperties.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Feed+CoreDataProperties.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/15. -// -// - -import Foundation -import CoreData - -extension Feed { - - @nonobjc public class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: "Feed") - } - - @NSManaged public var feedContent: String? - @NSManaged public var feedImage: Data? - @NSManaged public var likeCount: Int16 - @NSManaged public var nowDate: Date? - -} - -extension Feed : Identifiable { - -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.pbxproj b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj similarity index 55% rename from KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.pbxproj rename to KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj index 3c42eff..79de663 100644 --- a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.pbxproj +++ b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj @@ -7,152 +7,152 @@ objects = { /* Begin PBXBuildFile section */ - FD3F10DA2858B334001E2D8A /* lightstagramModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = FD3F10D82858B334001E2D8A /* lightstagramModel.xcdatamodeld */; }; - FD3F10F22858D119001E2D8A /* userProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD3F10F12858D119001E2D8A /* userProfileViewController.swift */; }; - FDA707F32858556C00C64790 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA707F22858556C00C64790 /* AppDelegate.swift */; }; - FDA707F52858556C00C64790 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA707F42858556C00C64790 /* SceneDelegate.swift */; }; - FDA707F72858556C00C64790 /* mainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA707F62858556C00C64790 /* mainViewController.swift */; }; - FDA707FF2858556D00C64790 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FDA707FE2858556D00C64790 /* Assets.xcassets */; }; - FDA708022858556D00C64790 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FDA708002858556D00C64790 /* LaunchScreen.storyboard */; }; - FDA7080B2858606300C64790 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = FDA7080A2858606300C64790 /* SnapKit */; }; - FDA7080E285883B400C64790 /* addEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA7080D285883B400C64790 /* addEditViewController.swift */; }; - FDF572882859805F00400483 /* IMG_3117.JPG in Resources */ = {isa = PBXBuildFile; fileRef = FDF572872859805F00400483 /* IMG_3117.JPG */; }; - FDF5728E28598C8200400483 /* FeedModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF5728D28598C8200400483 /* FeedModel.swift */; }; - FDF5729128599F4800400483 /* Feed+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF5728F28599F4800400483 /* Feed+CoreDataClass.swift */; }; - FDF5729228599F4800400483 /* Feed+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF5729028599F4800400483 /* Feed+CoreDataProperties.swift */; }; - FDF572942859D39800400483 /* newFeedTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF572932859D39800400483 /* newFeedTableViewCell.swift */; }; + FDBA213F2862014E004DD205 /* MainViewTableViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */; }; + FDBA2141286201E0004DD205 /* UserProfileViewCollectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */; }; + FDBA214328620324004DD205 /* MainViewTableCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */; }; + FDC1D3302863659D00D46D7C /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC1D32F2863659D00D46D7C /* CoreDataManager.swift */; }; + FDF139E82860B9F900C542E0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF139E72860B9F900C542E0 /* AppDelegate.swift */; }; + FDF139EA2860B9F900C542E0 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF139E92860B9F900C542E0 /* SceneDelegate.swift */; }; + FDF139EC2860B9F900C542E0 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF139EB2860B9F900C542E0 /* MainViewController.swift */; }; + FDF139F22860B9F900C542E0 /* LightStagram.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = FDF139F02860B9F900C542E0 /* LightStagram.xcdatamodeld */; }; + FDF139F42860B9FA00C542E0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FDF139F32860B9FA00C542E0 /* Assets.xcassets */; }; + FDF139F72860B9FA00C542E0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FDF139F52860B9FA00C542E0 /* LaunchScreen.storyboard */; }; + FDF13A022860BAAB00C542E0 /* AddEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF13A012860BAAB00C542E0 /* AddEditViewController.swift */; }; + FDF13A042860BAB200C542E0 /* UserProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF13A032860BAB200C542E0 /* UserProfileViewController.swift */; }; + FDF13A072860BB7D00C542E0 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = FDF13A062860BB7D00C542E0 /* SnapKit */; }; + FDF13A0A2860BEA800C542E0 /* WindowTabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF13A092860BEA800C542E0 /* WindowTabBarViewController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - FD3F10D92858B334001E2D8A /* lightstagramModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = lightstagramModel.xcdatamodel; sourceTree = ""; }; - FD3F10F12858D119001E2D8A /* userProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = userProfileViewController.swift; sourceTree = ""; }; - FDA707EF2858556C00C64790 /* PR2_Lightstagram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PR2_Lightstagram.app; sourceTree = BUILT_PRODUCTS_DIR; }; - FDA707F22858556C00C64790 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - FDA707F42858556C00C64790 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - FDA707F62858556C00C64790 /* mainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = mainViewController.swift; sourceTree = ""; }; - FDA707FE2858556D00C64790 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FDA708012858556D00C64790 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - FDA708032858556D00C64790 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FDA7080D285883B400C64790 /* addEditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = addEditViewController.swift; sourceTree = ""; }; - FDF572872859805F00400483 /* IMG_3117.JPG */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = IMG_3117.JPG; sourceTree = ""; }; - FDF5728D28598C8200400483 /* FeedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedModel.swift; sourceTree = ""; }; - FDF5728F28599F4800400483 /* Feed+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; }; - FDF5729028599F4800400483 /* Feed+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; }; - FDF572932859D39800400483 /* newFeedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = newFeedTableViewCell.swift; sourceTree = ""; }; + FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewTableViewModel.swift; sourceTree = ""; }; + FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileViewCollectionViewModel.swift; sourceTree = ""; }; + FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewTableCustomCell.swift; sourceTree = ""; }; + FDC1D32F2863659D00D46D7C /* CoreDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = ""; }; + FDF139E42860B9F900C542E0 /* LightStagram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LightStagram.app; sourceTree = BUILT_PRODUCTS_DIR; }; + FDF139E72860B9F900C542E0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + FDF139E92860B9F900C542E0 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + FDF139EB2860B9F900C542E0 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; + FDF139F12860B9F900C542E0 /* LightStagram.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = LightStagram.xcdatamodel; sourceTree = ""; }; + FDF139F32860B9FA00C542E0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + FDF139F62860B9FA00C542E0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + FDF139F82860B9FA00C542E0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + FDF13A012860BAAB00C542E0 /* AddEditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddEditViewController.swift; sourceTree = ""; }; + FDF13A032860BAB200C542E0 /* UserProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileViewController.swift; sourceTree = ""; }; + FDF13A092860BEA800C542E0 /* WindowTabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowTabBarViewController.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - FDA707EC2858556C00C64790 /* Frameworks */ = { + FDF139E12860B9F900C542E0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FDA7080B2858606300C64790 /* SnapKit in Frameworks */, + FDF13A072860BB7D00C542E0 /* SnapKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - FD3F10D72858B313001E2D8A /* Model */ = { + FDF139DB2860B9F900C542E0 = { isa = PBXGroup; children = ( - FD3F10D82858B334001E2D8A /* lightstagramModel.xcdatamodeld */, - FDF5728F28599F4800400483 /* Feed+CoreDataClass.swift */, - FDF5729028599F4800400483 /* Feed+CoreDataProperties.swift */, - FDF5728D28598C8200400483 /* FeedModel.swift */, - FDF572932859D39800400483 /* newFeedTableViewCell.swift */, + FDF139E62860B9F900C542E0 /* LightStagram */, + FDF139E52860B9F900C542E0 /* Products */, ); - path = Model; sourceTree = ""; }; - FDA707E62858556C00C64790 = { + FDF139E52860B9F900C542E0 /* Products */ = { isa = PBXGroup; children = ( - FDA707F12858556C00C64790 /* PR2_Lightstagram */, - FDA707F02858556C00C64790 /* Products */, + FDF139E42860B9F900C542E0 /* LightStagram.app */, ); + name = Products; sourceTree = ""; }; - FDA707F02858556C00C64790 /* Products */ = { + FDF139E62860B9F900C542E0 /* LightStagram */ = { isa = PBXGroup; children = ( - FDA707EF2858556C00C64790 /* PR2_Lightstagram.app */, + FDF139E72860B9F900C542E0 /* AppDelegate.swift */, + FDF139E92860B9F900C542E0 /* SceneDelegate.swift */, + FDF139F32860B9FA00C542E0 /* Assets.xcassets */, + FDF139F52860B9FA00C542E0 /* LaunchScreen.storyboard */, + FDF139F82860B9FA00C542E0 /* Info.plist */, + FDF13A002860BA7A00C542E0 /* Model */, + FDF139FF2860BA7500C542E0 /* View */, + FDF139FE2860BA6B00C542E0 /* ViewController */, ); - name = Products; + path = LightStagram; sourceTree = ""; }; - FDA707F12858556C00C64790 /* PR2_Lightstagram */ = { + FDF139FE2860BA6B00C542E0 /* ViewController */ = { isa = PBXGroup; children = ( - FDF572862859801C00400483 /* Image */, - FDA707F22858556C00C64790 /* AppDelegate.swift */, - FDA707F42858556C00C64790 /* SceneDelegate.swift */, - FDA707FE2858556D00C64790 /* Assets.xcassets */, - FDA708002858556D00C64790 /* LaunchScreen.storyboard */, - FDA708032858556D00C64790 /* Info.plist */, - FD3F10D72858B313001E2D8A /* Model */, - FDA7080C2858835000C64790 /* ViewController */, + FDF139EB2860B9F900C542E0 /* MainViewController.swift */, + FDF13A012860BAAB00C542E0 /* AddEditViewController.swift */, + FDF13A032860BAB200C542E0 /* UserProfileViewController.swift */, + FDF13A092860BEA800C542E0 /* WindowTabBarViewController.swift */, ); - path = PR2_Lightstagram; + path = ViewController; sourceTree = ""; }; - FDA7080C2858835000C64790 /* ViewController */ = { + FDF139FF2860BA7500C542E0 /* View */ = { isa = PBXGroup; children = ( - FDA707F62858556C00C64790 /* mainViewController.swift */, - FDA7080D285883B400C64790 /* addEditViewController.swift */, - FD3F10F12858D119001E2D8A /* userProfileViewController.swift */, + FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */, ); - path = ViewController; + path = View; sourceTree = ""; }; - FDF572862859801C00400483 /* Image */ = { + FDF13A002860BA7A00C542E0 /* Model */ = { isa = PBXGroup; children = ( - FDF572872859805F00400483 /* IMG_3117.JPG */, + FDF139F02860B9F900C542E0 /* LightStagram.xcdatamodeld */, + FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */, + FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */, + FDC1D32F2863659D00D46D7C /* CoreDataManager.swift */, ); - path = Image; + path = Model; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - FDA707EE2858556C00C64790 /* PR2_Lightstagram */ = { + FDF139E32860B9F900C542E0 /* LightStagram */ = { isa = PBXNativeTarget; - buildConfigurationList = FDA708062858556D00C64790 /* Build configuration list for PBXNativeTarget "PR2_Lightstagram" */; + buildConfigurationList = FDF139FB2860B9FA00C542E0 /* Build configuration list for PBXNativeTarget "LightStagram" */; buildPhases = ( - FDA707EB2858556C00C64790 /* Sources */, - FDA707EC2858556C00C64790 /* Frameworks */, - FDA707ED2858556C00C64790 /* Resources */, + FDF139E02860B9F900C542E0 /* Sources */, + FDF139E12860B9F900C542E0 /* Frameworks */, + FDF139E22860B9F900C542E0 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = PR2_Lightstagram; + name = LightStagram; packageProductDependencies = ( - FDA7080A2858606300C64790 /* SnapKit */, + FDF13A062860BB7D00C542E0 /* SnapKit */, ); - productName = PR2_Lightstagram; - productReference = FDA707EF2858556C00C64790 /* PR2_Lightstagram.app */; + productName = LightStagram; + productReference = FDF139E42860B9F900C542E0 /* LightStagram.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - FDA707E72858556C00C64790 /* Project object */ = { + FDF139DC2860B9F900C542E0 /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1330; LastUpgradeCheck = 1330; TargetAttributes = { - FDA707EE2858556C00C64790 = { + FDF139E32860B9F900C542E0 = { CreatedOnToolsVersion = 13.3; }; }; }; - buildConfigurationList = FDA707EA2858556C00C64790 /* Build configuration list for PBXProject "PR2_Lightstagram" */; + buildConfigurationList = FDF139DF2860B9F900C542E0 /* Build configuration list for PBXProject "LightStagram" */; compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -160,57 +160,57 @@ en, Base, ); - mainGroup = FDA707E62858556C00C64790; + mainGroup = FDF139DB2860B9F900C542E0; packageReferences = ( - FDA708092858606300C64790 /* XCRemoteSwiftPackageReference "SnapKit" */, + FDF13A052860BB7D00C542E0 /* XCRemoteSwiftPackageReference "SnapKit" */, ); - productRefGroup = FDA707F02858556C00C64790 /* Products */; + productRefGroup = FDF139E52860B9F900C542E0 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - FDA707EE2858556C00C64790 /* PR2_Lightstagram */, + FDF139E32860B9F900C542E0 /* LightStagram */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - FDA707ED2858556C00C64790 /* Resources */ = { + FDF139E22860B9F900C542E0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - FDA708022858556D00C64790 /* LaunchScreen.storyboard in Resources */, - FDA707FF2858556D00C64790 /* Assets.xcassets in Resources */, - FDF572882859805F00400483 /* IMG_3117.JPG in Resources */, + FDF139F72860B9FA00C542E0 /* LaunchScreen.storyboard in Resources */, + FDF139F42860B9FA00C542E0 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - FDA707EB2858556C00C64790 /* Sources */ = { + FDF139E02860B9F900C542E0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - FDF572942859D39800400483 /* newFeedTableViewCell.swift in Sources */, - FD3F10F22858D119001E2D8A /* userProfileViewController.swift in Sources */, - FDA707F72858556C00C64790 /* mainViewController.swift in Sources */, - FDF5729228599F4800400483 /* Feed+CoreDataProperties.swift in Sources */, - FDA707F32858556C00C64790 /* AppDelegate.swift in Sources */, - FDF5729128599F4800400483 /* Feed+CoreDataClass.swift in Sources */, - FD3F10DA2858B334001E2D8A /* lightstagramModel.xcdatamodeld in Sources */, - FDA7080E285883B400C64790 /* addEditViewController.swift in Sources */, - FDA707F52858556C00C64790 /* SceneDelegate.swift in Sources */, - FDF5728E28598C8200400483 /* FeedModel.swift in Sources */, + FDF139F22860B9F900C542E0 /* LightStagram.xcdatamodeld in Sources */, + FDF13A042860BAB200C542E0 /* UserProfileViewController.swift in Sources */, + FDBA2141286201E0004DD205 /* UserProfileViewCollectionViewModel.swift in Sources */, + FDF13A022860BAAB00C542E0 /* AddEditViewController.swift in Sources */, + FDBA213F2862014E004DD205 /* MainViewTableViewModel.swift in Sources */, + FDF139EC2860B9F900C542E0 /* MainViewController.swift in Sources */, + FDF13A0A2860BEA800C542E0 /* WindowTabBarViewController.swift in Sources */, + FDF139E82860B9F900C542E0 /* AppDelegate.swift in Sources */, + FDF139EA2860B9F900C542E0 /* SceneDelegate.swift in Sources */, + FDBA214328620324004DD205 /* MainViewTableCustomCell.swift in Sources */, + FDC1D3302863659D00D46D7C /* CoreDataManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - FDA708002858556D00C64790 /* LaunchScreen.storyboard */ = { + FDF139F52860B9FA00C542E0 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - FDA708012858556D00C64790 /* Base */, + FDF139F62860B9FA00C542E0 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; @@ -218,7 +218,7 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - FDA708042858556D00C64790 /* Debug */ = { + FDF139F92860B9FA00C542E0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -278,7 +278,7 @@ }; name = Debug; }; - FDA708052858556D00C64790 /* Release */ = { + FDF139FA2860B9FA00C542E0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -314,6 +314,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -332,7 +333,7 @@ }; name = Release; }; - FDA708072858556D00C64790 /* Debug */ = { + FDF139FC2860B9FA00C542E0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -341,7 +342,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 8RN9H3Z673; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = PR2_Lightstagram/Info.plist; + INFOPLIST_FILE = LightStagram/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -351,7 +352,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "HIGHSOUL.PR2-Lightstagram"; + PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightStagram; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -359,7 +360,7 @@ }; name = Debug; }; - FDA708082858556D00C64790 /* Release */ = { + FDF139FD2860B9FA00C542E0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -368,7 +369,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 8RN9H3Z673; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = PR2_Lightstagram/Info.plist; + INFOPLIST_FILE = LightStagram/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -378,7 +379,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "HIGHSOUL.PR2-Lightstagram"; + PRODUCT_BUNDLE_IDENTIFIER = HIGHSOUL.LightStagram; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -389,20 +390,20 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - FDA707EA2858556C00C64790 /* Build configuration list for PBXProject "PR2_Lightstagram" */ = { + FDF139DF2860B9F900C542E0 /* Build configuration list for PBXProject "LightStagram" */ = { isa = XCConfigurationList; buildConfigurations = ( - FDA708042858556D00C64790 /* Debug */, - FDA708052858556D00C64790 /* Release */, + FDF139F92860B9FA00C542E0 /* Debug */, + FDF139FA2860B9FA00C542E0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FDA708062858556D00C64790 /* Build configuration list for PBXNativeTarget "PR2_Lightstagram" */ = { + FDF139FB2860B9FA00C542E0 /* Build configuration list for PBXNativeTarget "LightStagram" */ = { isa = XCConfigurationList; buildConfigurations = ( - FDA708072858556D00C64790 /* Debug */, - FDA708082858556D00C64790 /* Release */, + FDF139FC2860B9FA00C542E0 /* Debug */, + FDF139FD2860B9FA00C542E0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -410,7 +411,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - FDA708092858606300C64790 /* XCRemoteSwiftPackageReference "SnapKit" */ = { + FDF13A052860BB7D00C542E0 /* XCRemoteSwiftPackageReference "SnapKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SnapKit/SnapKit.git"; requirement = { @@ -421,25 +422,25 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - FDA7080A2858606300C64790 /* SnapKit */ = { + FDF13A062860BB7D00C542E0 /* SnapKit */ = { isa = XCSwiftPackageProductDependency; - package = FDA708092858606300C64790 /* XCRemoteSwiftPackageReference "SnapKit" */; + package = FDF13A052860BB7D00C542E0 /* XCRemoteSwiftPackageReference "SnapKit" */; productName = SnapKit; }; /* End XCSwiftPackageProductDependency section */ /* Begin XCVersionGroup section */ - FD3F10D82858B334001E2D8A /* lightstagramModel.xcdatamodeld */ = { + FDF139F02860B9F900C542E0 /* LightStagram.xcdatamodeld */ = { isa = XCVersionGroup; children = ( - FD3F10D92858B334001E2D8A /* lightstagramModel.xcdatamodel */, + FDF139F12860B9F900C542E0 /* LightStagram.xcdatamodel */, ); - currentVersion = FD3F10D92858B334001E2D8A /* lightstagramModel.xcdatamodel */; - path = lightstagramModel.xcdatamodeld; + currentVersion = FDF139F12860B9F900C542E0 /* LightStagram.xcdatamodel */; + path = LightStagram.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; }; /* End XCVersionGroup section */ }; - rootObject = FDA707E72858556C00C64790 /* Project object */; + rootObject = FDF139DC2860B9F900C542E0 /* Project object */; } diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to KH/PR2_Lightstagram/LightStagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/KH/PR2_Lightstagram/LightStagram.xcodeproj/xcshareddata/xcschemes/LightStagram.xcscheme b/KH/PR2_Lightstagram/LightStagram.xcodeproj/xcshareddata/xcschemes/LightStagram.xcscheme new file mode 100644 index 0000000..c33267c --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram.xcodeproj/xcshareddata/xcschemes/LightStagram.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/.DS_Store b/KH/PR2_Lightstagram/LightStagram/.DS_Store similarity index 66% rename from KH/PR2_Lightstagram/PR2_Lightstagram/.DS_Store rename to KH/PR2_Lightstagram/LightStagram/.DS_Store index b449b0fd88f7135dc082a5be48b0ddd64173a6fb..ac0f86bded5f263d8d8fa6547b236813a43ee5e2 100644 GIT binary patch literal 8196 zcmeHMO=}ZD7=EWso1{gJUr8(LuUMW&E*)kk;@Gpk3le!}qVy z_Ikoxb4z7$Cwl$~cF6roZZ_-nHgdIe`ZY_uDq#@>Gn-HwZRd$w6}J5dhv^~WZjtP`|E4n~BF*vg2m z2$h4Q<4Yj6F}ec(0v}y|7TAgYp80yU>}mKmU$%?YT0H)hjf{rI#>3%gcrtw3+;Hn= zEmzyDW^$FA{OX$P+WFRbF27Q=>Z`FMi>_146&^f`Gz$KKS#fOF;q#aG_%NB6sTLHq zwmMJdmz8$(> z*h4SWI#t$hFE9UGPKxQ-#;T(Bs`pE3py|$i1A^{vNkNO4atUG|~2$IJwzg7QFul)Z+V=nQfD36FqBz$4%h@CbMWW&r^{vt=ucdG6~~KY9c_ z0{??N0G6%aN+5LS8qn=+p_o1Y`mk6fBwS^qF2QZKb+8B(K zaXsIAf1GaH-{Vp7{mB*O??|1tmy>v1-&AH@Kp7dmt08f$n>%xl)>*5zO`ncDJN;VQ z;yTjRolC(Pd;yb-1e@wla2Fe4#zvF$XO=2g0r}ei}b99y1Jh_3hx%j%-mZsujOpE z?HA$^p4k{oq1i=3d?gZ7XtR;qtiO!kY2>ET*pH*%qtQK?fDYp@D$HpKV=wuMJjtvh z7OhOTh-*C8gjw|*Pi})}D04%qzM8h&6J$npqj*PI_lz1Vl--fvK85Gs9(^zwa)L}B z=iSP+Gh*}V0VR@w$k;?YKv#=(1777@Ya2!FbXzmmI1%JW#3H}8BgQcB? zZ)P@dgfqE|i7{s8vio-D?%nd3+%V+k1PTn!5 z8J$u>BNPjBz#RDN4)EGNpceIT-B5P@PN{*MuH`A+z?Mcq-- z1*cjazJFdGzqZQp`#<7OZnM9gzjsuJ?g_4Q(K&|RYw6$levamylcKz=-sg|E&O-GT z8Z%B-TFY{CbzaE)O`$Y~#sTKCL3hh`j?Vc)bQa)cbv_M`UR+b=wN8b&E1hMz>pCBK zJ}t^QfIXX|x~FKhIbaT$14{?^`w*Zoh8|Nz`E;O?BLJ|1v;^9+w*muB07H+dA~Fc4 zRG?CwKVmqgBOmzZLXWAU(#grlc#j|1`4fth(UA}2adM%e)#iXXu@F4b)q&T`Mq^R9PhOO$`uL+KbI;B1(n~9rNLYAA&La<1>69J9#chR Q5cWqvY_Q54_*DnK0JhVl^8f$< literal 6148 zcmeHKyGjE=6g{I+gBGT+5JcH85XB$Z#8?QX3RsFJ8={hRgAWvJw(~PAZLBOTw6*dh z^cw_wJ$Gg_J7z_RAR=>N=FHCAJA3Zg%uEJ=svJd&KnXyRMX)f=D#v78N}mnco++Zz za~$FT^Eg2hTYcWX!z-GRGWY_O|Pp7?DZzgfqP#=BzIwDT0)kY_2 z(6e}TdvjWwy(@nwDjFcFyPajXASB08;r=7}%%g)Y_K{%M%|hJr{j%IwHYOh~4fotR zO~q z{UKlx3@xSx_13{kUjc{(c57o>?h+CcSPU(u2021gCX{GGmAzsp6VCp?`h^x#gC-ox zUOtq4v$8i7rQgo^1MLnK8uYbSz$@S?Fl-)6a{jM;e*bra{F7I}EAX!rP=#u}T474| zZ0$=<&f0)wlSNGYQiD2#l|7DiLyqEU7Hu30q(KZVrUuzV^M3@i48HOT{Hg-4MEKfc diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/AccentColor.colorset/Contents.json b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/AccentColor.colorset/Contents.json rename to KH/PR2_Lightstagram/LightStagram/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/AppIcon.appiconset/Contents.json b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/AppIcon.appiconset/Contents.json rename to KH/PR2_Lightstagram/LightStagram/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/Contents.json b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/Contents.json similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram/Assets.xcassets/Contents.json rename to KH/PR2_Lightstagram/LightStagram/Assets.xcassets/Contents.json diff --git a/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Contents.json b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Contents.json new file mode 100644 index 0000000..ff8f750 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Swift_Logo_RoundSquare.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Swift_Logo_RoundSquare.png b/KH/PR2_Lightstagram/LightStagram/Assets.xcassets/UserImage.imageset/Swift_Logo_RoundSquare.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff40953fab249fc1984a3971eb8ebf1ca02f99d GIT binary patch literal 31385 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 literal 0 HcmV?d00001 diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Base.lproj/LaunchScreen.storyboard b/KH/PR2_Lightstagram/LightStagram/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from KH/PR2_Lightstagram/PR2_Lightstagram/Base.lproj/LaunchScreen.storyboard rename to KH/PR2_Lightstagram/LightStagram/Base.lproj/LaunchScreen.storyboard diff --git a/KH/PR2_LightInstagram/LightInstagram/LightInstagram/Info.plist b/KH/PR2_Lightstagram/LightStagram/Info.plist similarity index 100% rename from KH/PR2_LightInstagram/LightInstagram/LightInstagram/Info.plist rename to KH/PR2_Lightstagram/LightStagram/Info.plist diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/.DS_Store b/KH/PR2_Lightstagram/LightStagram/Model/.DS_Store similarity index 92% rename from KH/PR2_Lightstagram/PR2_Lightstagram/Model/.DS_Store rename to KH/PR2_Lightstagram/LightStagram/Model/.DS_Store index 0b8855e162976bc02ccd11d18a47a0c9b8dd0aef..1ba47a7fee42c88b0fe700d1cc17c4a81126ca3b 100644 GIT binary patch delta 260 zcmZoMXfc@J&&$fdz`)4BAi%&-!VtVMW<8@UNJNsshar<8ogo7x3dD&(b`g-wovg(y zW#O5VpPZDFp9EA0)W_fm#Cre10LUVsd9n`^pB#$?L1lB8cvMao?!0}}@Ce9!ybhZD Vfq2Clj0&3*nY&mvvvd6A2LOKiJs|)9 delta 258 zcmZoMXfc@J&&$HVz`)4BAi%&-!ce?1W<8@iNJNeyhar<8ogo7x3dD&(b`g-wW$
    >Pjj0lud_CIA2c diff --git a/KH/PR2_Lightstagram/LightStagram/Model/CoreDataManager.swift b/KH/PR2_Lightstagram/LightStagram/Model/CoreDataManager.swift new file mode 100644 index 0000000..0228ec2 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Model/CoreDataManager.swift @@ -0,0 +1,100 @@ +// +// CoreDataManager.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/22. +// + +import UIKit +import CoreData + +class CoreDataManager { + static var shared: CoreDataManager = CoreDataManager() + + // CoreData 공간을 불러옴 + lazy var persistentContainer: NSPersistentContainer = { + let container = NSPersistentContainer(name: "LightStagram") + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + return container + }() + + var context: NSManagedObjectContext { + return persistentContainer.viewContext + } + + var feedEntity: NSEntityDescription? { + return NSEntityDescription.entity(forEntityName: "Feed", in: context) + } + + // CoreData에 정보를 추가하는 작업 + func insertFeedToCoreData(_ feed: TableViewFeed) { + if let entity = feedEntity { + let managedObject = NSManagedObject(entity: entity, insertInto: context) + managedObject.setValue(feed.feedImage, forKey: "feedImage") + managedObject.setValue(feed.likeCount, forKey: "likeCount") + managedObject.setValue(feed.feedText, forKey: "feedText") + managedObject.setValue(feed.uploadDate, forKey: "uploadDate") + } + saveToContext() + } + + // CoreData Framework에 정보 저장(CRUD 중 Create) + func saveToContext() { + do { + try context.save() + } catch { + print(error.localizedDescription) + } + } + + // CoreData에서 정보를 빼내기 위한 기초작업 + func fetchFeeds() -> [Feed] { + do { + let request = Feed.fetchRequest() + let results = try context.fetch(request) + return results + } catch { + print(error.localizedDescription) + } + return [] + } + + // CoreData에서 정보를 읽는 작업(CRUD 중 Read) -> tableViewFeed 배열 형태로 전달함. + func getFeedsForTableViewCell() -> [TableViewFeed] { + var feeds: [TableViewFeed] = [] + let fetchResult = fetchFeeds() + for result in fetchResult { + let feedImage = UIImage(data: result.feedImage!) + let feed = TableViewFeed(feedImage: feedImage, feedText: result.feedText, likeCount: result.likeCount, uploadDate: result.uploadDate) + feeds.append(feed) + } + return feeds + } + + // CoreData의 정보를 수정하는 작업(CRUD 중 Update) +// func updateFeed(_ feed: TableViewFeed) { +// let fetchResult = fetchFeeds() +// +// } + + // CoreData의 정보를 삭제하는 작업 + func deleteFeed(_ feed: TableViewFeed) { + let fetchResult = fetchFeeds() + let feed = fetchResult.filter({$0.feedText == feed.feedText})[0] + context.delete(feed) + saveToContext() + } + + // CoreData의 정보를 모두 삭제하는 작업 + func deleteAllFeeds() { + let fetchResult = fetchFeeds() + for result in fetchResult { + context.delete(result) + } + saveToContext() + } +} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/.xccurrentversion similarity index 70% rename from KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/.xccurrentversion index 18d9810..a5d2ff1 100644 --- a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/.xccurrentversion @@ -2,7 +2,7 @@ - IDEDidComputeMac32BitWarning - + _XCCurrentVersionName + LightStagram.xcdatamodel diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/lightstagramModel.xcdatamodeld/lightstagramModel.xcdatamodel/contents b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents similarity index 71% rename from KH/PR2_Lightstagram/PR2_Lightstagram/Model/lightstagramModel.xcdatamodeld/lightstagramModel.xcdatamodel/contents rename to KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents index 4a57321..2d96ad7 100644 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/lightstagramModel.xcdatamodeld/lightstagramModel.xcdatamodel/contents +++ b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents @@ -1,10 +1,10 @@ - - + - - + + + diff --git a/KH/PR2_Lightstagram/LightStagram/Model/MainViewTableViewModel.swift b/KH/PR2_Lightstagram/LightStagram/Model/MainViewTableViewModel.swift new file mode 100644 index 0000000..10f8023 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Model/MainViewTableViewModel.swift @@ -0,0 +1,17 @@ +// +// MainViewTableViewModel.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/21. +// + +import UIKit + +struct TableViewFeed { + let feedImage: UIImage? + let feedText: String? + let likeCount: String? + let uploadDate: String? +} + +var tableViewFeedList = [TableViewFeed]() diff --git a/KH/PR2_Lightstagram/LightStagram/Model/UserProfileViewCollectionViewModel.swift b/KH/PR2_Lightstagram/LightStagram/Model/UserProfileViewCollectionViewModel.swift new file mode 100644 index 0000000..22e45cc --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Model/UserProfileViewCollectionViewModel.swift @@ -0,0 +1,14 @@ +// +// UserProfileViewCollectionViewModel.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/21. +// + +import UIKit + +struct collectionViewFeed { + let feedImage: UIImage? +} + +var collectionViewFeedList = [collectionViewFeed]() diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/SceneDelegate.swift b/KH/PR2_Lightstagram/LightStagram/SceneDelegate.swift similarity index 86% rename from KH/PR2_Lightstagram/PR2_Lightstagram/SceneDelegate.swift rename to KH/PR2_Lightstagram/LightStagram/SceneDelegate.swift index 879d7b6..477bf1b 100644 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/SceneDelegate.swift +++ b/KH/PR2_Lightstagram/LightStagram/SceneDelegate.swift @@ -1,8 +1,8 @@ // // SceneDelegate.swift -// PR2_Lightstagram +// LightStagram // -// Created by ROLF J. on 2022/06/14. +// Created by ROLF J. on 2022/06/20. // import UIKit @@ -10,13 +10,18 @@ import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Code-Base를 위해 MainViewController를 rootViewController로 지정 guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) - let mainViewController = mainViewController() - + let mainViewController = MainViewController() window?.rootViewController = mainViewController window?.makeKeyAndVisible() + + // TabBar를 rootViewController로 지정 + let tabBarController = WindowTabBarController() + window?.rootViewController = tabBarController } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift b/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift new file mode 100644 index 0000000..14d5dd7 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift @@ -0,0 +1,141 @@ +// +// MainViewTableCustomCell.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/21. +// + +import UIKit +import SnapKit + +class MainViewTableCustomCell: UITableViewCell { + + static let tableViewCellIdentifier = "MainViewTableCustomCell" + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + layoutSubviews() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func getFeed() { + + } + + // User image + let userProfileImage: UIImageView = { + let userProfileImage = UIImageView() + userProfileImage.image = UIImage(named: "UserImage") + userProfileImage.contentMode = .scaleAspectFit + userProfileImage.layer.cornerRadius = 22 + userProfileImage.layer.borderWidth = 1 + userProfileImage.layer.borderColor = UIColor.darkGray.cgColor + userProfileImage.clipsToBounds = true + return userProfileImage + }() + + // 프로필 이미지 우측의 userName + let userNameBesideuserImage: UILabel = { + let userNameBesideuserImage = UILabel() + userNameBesideuserImage.text = userName + userNameBesideuserImage.textColor = .black + userNameBesideuserImage.font = UIFont.boldSystemFont(ofSize: 17) + return userNameBesideuserImage + }() + + // 피드의 이미지(newFeedImageView) + var feedImageView: UIImageView = { + let feedImageView = UIImageView() + feedImageView.image = UIImage(named: "UserImage") + feedImageView.contentMode = .scaleAspectFit + feedImageView.clipsToBounds = true + return feedImageView + }() + + // 피드의 좋아요 수(likeCount) + let feedLikeCount: UILabel = { + let feedLikeCount = UILabel() + feedLikeCount.text = "Test" + feedLikeCount.font = UIFont.systemFont(ofSize: 15) + return feedLikeCount + }() + + // 피드 설명글 왼쪽의 userName + let userNameBesideFeedText: UILabel = { + let userNameBesideFeedText = UILabel() + userNameBesideFeedText.text = userName + userNameBesideFeedText.font = UIFont.boldSystemFont(ofSize: 17) + return userNameBesideFeedText + }() + + // 피드의 설명글(newFeedTextView) + let feedText: UILabel = { + let feedText = UILabel() + feedText.text = "Test" + feedText.font = UIFont.systemFont(ofSize: 15) + return feedText + }() + + // 피드의 업로드 날짜(uploadDate) - 테스트 중 + let feedUploadDate: UILabel = { + let feedUploadDate = UILabel() + feedUploadDate.text = "Test" + feedUploadDate.textColor = .lightGray + feedUploadDate.font = UIFont.systemFont(ofSize: 12) + return feedUploadDate + }() + + // Cell의 화면 구성 + override func layoutSubviews() { + super.layoutSubviews() + + addSubviews([userProfileImage, userNameBesideuserImage, feedImageView, feedLikeCount, userNameBesideFeedText, feedText, feedUploadDate]) + + userProfileImage.snp.makeConstraints { make in + make.top.equalTo(contentView).offset(10) + make.left.equalTo(contentView).offset(10) + make.size.equalTo(CGSize(width: 44, height: 44)) + } + + userNameBesideuserImage.snp.makeConstraints { make in + make.left.equalTo(userProfileImage.snp.right).offset(10) + make.centerY.equalTo(userProfileImage.snp.centerY) + } + + feedImageView.snp.makeConstraints { make in + make.top.equalTo(userProfileImage.snp.bottom).offset(10) + make.width.equalToSuperview() + make.height.equalTo(contentView.snp.width) + } + + feedLikeCount.snp.makeConstraints { make in + make.top.equalTo(feedImageView.snp.bottom).offset(10) + make.left.equalTo(contentView).offset(10) + } + + userNameBesideFeedText.snp.makeConstraints { make in + make.top.equalTo(feedLikeCount.snp.bottom).offset(10) + make.left.equalTo(contentView).offset(10) + } + + feedText.snp.makeConstraints { make in + make.left.equalTo(userNameBesideFeedText.snp.right).offset(10) + make.centerY.equalTo(userNameBesideFeedText.snp.centerY) + } + + feedUploadDate.snp.makeConstraints { make in + make.top.equalTo(feedText.snp.bottom).offset(10) + make.left.equalTo(contentView).offset(10) + } + } + + // View들을 한 번에 addSubview 시켜주는 함수 + func addSubviews(_ views: [UIView]) { + for view in views { + contentView.addSubview(view) + } + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift new file mode 100644 index 0000000..f08ce74 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift @@ -0,0 +1,253 @@ +// +// AddEditViewController.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/20. +// + +import UIKit +import SnapKit + +class AddEditViewController: UIViewController { + + let placeHolderText = "사진과 함께 적을 글을 입력해주세요!" + + let imagePicker = UIImagePickerController() + var newFeedImageView = UIImageView() + var newFeedImageIfNilLabel = UILabel() + lazy var newFeedTextView: UITextView = { + let newFeedTextView = UITextView() + newFeedTextView.text = placeHolderText + newFeedTextView.textColor = .placeholderText + newFeedTextView.font = UIFont.systemFont(ofSize: 15) + newFeedTextView.delegate = self + return newFeedTextView + }() + + override func viewDidLoad() { + super.viewDidLoad() + // AddEditView에서는 탭바를 숨기도록 설정 +// self.tabBarController?.tabBar.isHidden = true + + imagePicker.delegate = self + + view.backgroundColor = .white + showAddEditViewLayout() + + } + + // AddEditView의 화면 구성 + func showAddEditViewLayout() { + // AddEditView의 타이틀 + let addEditViewTitle = UILabel() + addEditViewTitle.text = "피드 남기기" + addEditViewTitle.font = UIFont.boldSystemFont(ofSize: 30) + addEditViewTitle.sizeToFit() + view.addSubview(addEditViewTitle) + addEditViewTitle.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(-25) + make.left.equalTo(view.safeAreaLayoutGuide).offset(25) + } + + // Feed 추가를 취소하는(이전 View로 돌아가는) 버튼 + let dismissMakeFeedButton = UIButton() + dismissMakeFeedButton.configuration = UIButton.Configuration.plain() + dismissMakeFeedButton.setTitle("취소", for: .normal) + dismissMakeFeedButton.sizeToFit() + view.addSubview(dismissMakeFeedButton) + dismissMakeFeedButton.snp.makeConstraints { make in + make.top.equalTo(addEditViewTitle.snp.centerY) + make.right.equalTo(view.safeAreaLayoutGuide).offset(-5) + } + dismissMakeFeedButton.addTarget(self, action: #selector(pressDismissMakeFeedButton), for: .allEvents) + + // 이미지를 가져오는 "사진 선택하기" 버튼 + let getImageButton = UIButton() + getImageButton.setTitle("사진 선택하기", for: .normal) + getImageButton.configuration = UIButton.Configuration.plain() + getImageButton.sizeToFit() + view.addSubview(getImageButton) + getImageButton.snp.makeConstraints { make in + make.top.equalTo(addEditViewTitle.snp.bottom).offset(30) + make.centerX.equalTo(view) + } + getImageButton.addTarget(self, action: #selector(getImageFunction), for: .allEvents) + + // 가져온 이미지를 보여줄 UIImageView + view.addSubview(newFeedImageView) + newFeedImageView.layer.borderWidth = 1 + newFeedImageView.layer.borderColor = UIColor.black.cgColor + newFeedImageView.snp.makeConstraints { make in + make.top.equalTo(getImageButton.snp.bottom) + make.width.equalTo(view) + make.height.equalTo(newFeedImageView.snp.width) + } + + // UIImageView에 사진이 없으면 Label이 위에 보임 -> extension에 설정 + newFeedImageIfNilLabel.text = "사진을 선택해주세요!" + newFeedImageIfNilLabel.textColor = .gray + newFeedImageIfNilLabel.font = UIFont.boldSystemFont(ofSize: 40) + newFeedImageIfNilLabel.textAlignment = .center + view.addSubview(newFeedImageIfNilLabel) + newFeedImageIfNilLabel.snp.makeConstraints { make in + make.centerX.equalTo(newFeedImageView) + make.centerY.equalTo(newFeedImageView) + } + + // 새로운 Feed의 텍스트 입력 필드 + view.addSubview(newFeedTextView) + newFeedTextView.layer.borderWidth = 1 + newFeedTextView.layer.borderColor = UIColor.black.cgColor + newFeedTextView.snp.makeConstraints { make in + make.top.equalTo(newFeedImageView.snp.bottom).offset(10) + make.width.equalTo(view) + make.height.equalTo(100) + } + + // 새로운 Feed를 저장하는 버튼 + let saveNewFeedButton = UIButton() + var saveNewFeedButtonConfiguration = UIButton.Configuration.filled() + saveNewFeedButtonConfiguration.baseBackgroundColor = .green + saveNewFeedButtonConfiguration.baseForegroundColor = .black + saveNewFeedButton.configuration = saveNewFeedButtonConfiguration + saveNewFeedButton.sizeToFit() + view.addSubview(saveNewFeedButton) + saveNewFeedButton.setTitle("저장하기", for: .normal) + saveNewFeedButton.snp.makeConstraints { make in + make.top.equalTo(newFeedTextView.snp.bottom).offset(70) + make.centerX.equalTo(view) + } + saveNewFeedButton.addTarget(self, action: #selector(pressSaveButtonTest), for: .allEvents) + + } + + // 사진앨범을 여는 함수 + func openLibrary() { + imagePicker.sourceType = .photoLibrary + present(imagePicker, animated: true, completion: nil) + } + + // 카메라를 여는 함수 + func openCamera() { + imagePicker.sourceType = .camera + present(imagePicker, animated: true, completion: nil) + } + + // 저장을 취소하고 이전 화면으로 돌아가는 취소 버튼의 함수 + @objc func pressDismissMakeFeedButton() { + self.navigationController?.popToRootViewController(animated: true) + } + + // getImageButton을 눌러 사진을 가져오는 함수 + @objc func getImageFunction() { + let getImageSelectAlert = UIAlertController(title: "사진 가져오기", message: nil, preferredStyle: .actionSheet) + let getImageWithLibrary = UIAlertAction(title: "앨범", style: .default) { _ in self.openLibrary() } + let getImageWithCamera = UIAlertAction(title: "카메라", style: .default) { _ in self.openCamera() } + let getImageCancel = UIAlertAction(title: "취소", style: .cancel, handler: nil) + + getImageSelectAlert.addAction(getImageWithLibrary) + getImageSelectAlert.addAction(getImageWithCamera) + getImageSelectAlert.addAction(getImageCancel) + + present(getImageSelectAlert, animated: true, completion: nil) + } + + // 새로운 Feed를 CoreData에 저장하는 버튼 + @objc func pressSaveButtonTest() { + if noFeedImage() == true && noFeedText() == true { +// saveToCoreData() + clearAddEditView() + } + } + + // 업로드할 사진이 골라지지 않았으면 실행 + func noFeedImage() -> Bool { + if newFeedImageView.image == nil { + let noImageAlert = UIAlertController(title: "사진이 없습니다!", message: "사진을 선택해주세요!", preferredStyle: .alert) + let checkButton = UIAlertAction(title: "OK", style: .default) + noImageAlert.addAction(checkButton) + present(noImageAlert, animated: true, completion: nil) + return false + } else { + return true + } + } + + // 업로드할 글이 작성되지 않았으면 실행 + func noFeedText() -> Bool { + if newFeedTextView.text == placeHolderText || newFeedTextView.text == "" { + let noTextAlert = UIAlertController(title: "글이 없습니다!", message: "사진과 함께 업로드할 글을 입력해주세요!", preferredStyle: .alert) + let checkButton = UIAlertAction(title: "OK", style: .default) + noTextAlert.addAction(checkButton) + present(noTextAlert, animated: true, completion: nil) + return false + } else { + return true + } + } + + // 랜덤 정수를 통해 likeCount 문자열을 만드는 함수 + func makeLikeCountString() -> String { + let randLikeCount = Int.random(in: 0..<1000) + let likeCountString = "\(randLikeCount)명이 좋아합니다." + return likeCountString + } + + // 업로드 시의 날짜 정보에 대한 문자열을 만드는 함수 + func makeUploadDateString() -> String { + let nowDate = Date() + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "MM월 dd일 hh:mm" + let dateString = dateFormatter.string(from: nowDate) + return dateString + } + + // 저장 시 정보들을 CoreData에 저장하는 함수 + func saveToCoreData() { + let newFeed = TableViewFeed(feedImage: newFeedImageView.image, feedText: newFeedTextView.text, likeCount: makeLikeCountString(), uploadDate: makeUploadDateString()) + } + + // AddEditView를 초기화하는 함수 + func clearAddEditView() { + newFeedImageView.image = nil + newFeedTextView.text = nil + newFeedImageIfNilLabel.text = "사진을 선택해주세요!" + let clearAlert = UIAlertController(title: "저장되었습니다!", message: nil, preferredStyle: .alert) + let checkButton = UIAlertAction(title: "OK", style: .default) + clearAlert.addAction(checkButton) + present(clearAlert, animated: true, completion: nil) + } + + // 화면을 터치하면 키보드가 내려가는 함수 + override func touchesBegan(_ touches: Set, with event: UIEvent?) { + self.view.endEditing(true) + } + +} + +extension AddEditViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { + + // 이미지를 가져올 때 UIImage 형식이 맞는지 확인하고 newFeedImageView에 출력함 + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { + newFeedImageIfNilLabel.text = nil + newFeedImageView.image = image + } + dismiss(animated: true, completion: nil) + } +} + +extension AddEditViewController: UITextViewDelegate { + func textViewDidBeginEditing(_ textView: UITextView) { + guard newFeedTextView.textColor == .placeholderText else { return } + newFeedTextView.textColor = .black + newFeedTextView.text = nil + } + + func textViewDidEndEditing(_ textView: UITextView) { + if newFeedTextView.text.isEmpty { + newFeedTextView.text = placeHolderText + newFeedTextView.textColor = .placeholderText + } + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift new file mode 100644 index 0000000..8b3878b --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift @@ -0,0 +1,79 @@ +// +// MainViewController.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/20. +// + +import UIKit +import SnapKit + +public let userName = "JKH" + +class MainViewController: UIViewController { + + let mainViewTitle = UILabel() + private let feedTableView: UITableView = { + let feedTableView = UITableView() + feedTableView.register(MainViewTableCustomCell.self, forCellReuseIdentifier: MainViewTableCustomCell.tableViewCellIdentifier) + return feedTableView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + tableViewFunctions() + showMainViewLayout() + } + + func tableViewFunctions() { + feedTableView.delegate = self + feedTableView.dataSource = self + feedTableView.rowHeight = 580 + feedTableView.reloadData() + feedTableView.flashScrollIndicators() + } + + // MainView의 화면 구성 + func showMainViewLayout() { + view.backgroundColor = .white + + // MainView의 타이틀 + mainViewTitle.text = "LightStagram" + mainViewTitle.font = UIFont.boldSystemFont(ofSize: 30) + view.addSubview(mainViewTitle) + mainViewTitle.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(-25) + make.left.equalTo(view.safeAreaLayoutGuide).offset(25) + } + + showFeedTable() + } + + // MainView의 테이블뷰 + func showFeedTable() { + view.addSubview(feedTableView) + feedTableView.snp.makeConstraints { make in + make.top.equalTo(mainViewTitle.snp.bottom).offset(10) + make.bottom.equalTo(view) + make.width.equalTo(view) + } + } +} + +extension MainViewController: UITableViewDelegate, UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 5 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let feedCell = tableView.dequeueReusableCell(withIdentifier: MainViewTableCustomCell.tableViewCellIdentifier, for: indexPath) as? MainViewTableCustomCell else { return UITableViewCell() } + + + return feedCell + } + + func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { + <#code#> + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift new file mode 100644 index 0000000..6573f1a --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift @@ -0,0 +1,210 @@ +// +// UserProfileViewController.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/20. +// + +import UIKit +import SnapKit + +class UserProfileViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .white + showUserProfileViewLayout() + + } + + // userProfileView의 화면 구성 + func showUserProfileViewLayout() { + // UserProfileView의 타이틀 + let userProfileViewTitle = UILabel() + userProfileViewTitle.text = userName + userProfileViewTitle.font = UIFont.boldSystemFont(ofSize: 30) + view.addSubview(userProfileViewTitle) + userProfileViewTitle.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(-25) + make.left.equalTo(view.safeAreaLayoutGuide).offset(25) + } + + // UserProfile image + let userProfileImage = UIImageView() + userProfileImage.image = UIImage(named: "UserImage") + userProfileImage.contentMode = .scaleAspectFit + userProfileImage.layer.cornerRadius = 50 + userProfileImage.layer.borderWidth = 1 + userProfileImage.layer.borderColor = UIColor.darkGray.cgColor + userProfileImage.clipsToBounds = true + view.addSubview(userProfileImage) + userProfileImage.snp.makeConstraints { make in + make.top.equalTo(userProfileViewTitle.snp.bottom).offset(20) + make.left.equalTo(userProfileViewTitle.snp.left) + make.width.height.equalTo(100) + } + + // 게시물 수 + let feedCountLabel = UILabel() + feedCountLabel.text = "1K" + view.addSubview(feedCountLabel) + feedCountLabel.snp.makeConstraints { make in + make.left.equalTo(userProfileImage.snp.right).offset(45) + make.centerY.equalTo(userProfileImage.snp.centerY).offset(-10) + } + + // "게시물" 라벨 + let feedLabel = UILabel() + feedLabel.text = "게시물" + view.addSubview(feedLabel) + feedLabel.snp.makeConstraints { make in + make.top.equalTo(feedCountLabel.snp.bottom) + make.centerX.equalTo(feedCountLabel.snp.centerX) + } + + // 팔로워 수 + let followerCountLabel = UILabel() + followerCountLabel.text = "1M" + view.addSubview(followerCountLabel) + followerCountLabel.snp.makeConstraints { make in + make.left.equalTo(feedCountLabel.snp.right).offset(70) + make.centerY.equalTo(feedCountLabel.snp.centerY) + } + + // "팔로워" 라벨 + let follwerLabel = UILabel() + follwerLabel.text = "팔로워" + view.addSubview(follwerLabel) + follwerLabel.snp.makeConstraints { make in + make.top.equalTo(followerCountLabel.snp.bottom) + make.centerX.equalTo(followerCountLabel.snp.centerX) + } + + // 팔로잉 수 + let followingCountLabel = UILabel() + followingCountLabel.text = "1M" + view.addSubview(followingCountLabel) + followingCountLabel.snp.makeConstraints { make in + make.left.equalTo(followerCountLabel.snp.right).offset(70) + make.centerY.equalTo(followerCountLabel.snp.centerY) + } + + // "팔로잉" 라벨 + let followingLabel = UILabel() + followingLabel.text = "팔로잉" + view.addSubview(followingLabel) + followingLabel.snp.makeConstraints { make in + make.top.equalTo(followerCountLabel.snp.bottom) + make.centerX.equalTo(followingCountLabel.snp.centerX) + } + + // UserName + let userName = UILabel() + userName.text = "장경호" + userName.font = UIFont.boldSystemFont(ofSize: 17) + view.addSubview(userName) + userName.snp.makeConstraints { make in + make.top.equalTo(userProfileImage.snp.bottom).offset(20) + make.left.equalTo(userProfileImage.snp.left) + } + + // 한줄 소개 + let userIntroduciton = UILabel() + userIntroduciton.text = "인스타그램 클론 겁나 어렵네요;" + userIntroduciton.font = UIFont.systemFont(ofSize: 15) + view.addSubview(userIntroduciton) + userIntroduciton.snp.makeConstraints { make in + make.top.equalTo(userName.snp.bottom).offset(5) + make.left.equalTo(userName.snp.left) + } + + // 프로필 편집 버튼 + let profileEditButton = UIButton() + profileEditButton.backgroundColor = .white + profileEditButton.setTitle("프로필 편집", for: .normal) + profileEditButton.setTitleColor(.black, for: .normal) + profileEditButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) + profileEditButton.layer.borderWidth = 1 + profileEditButton.layer.borderColor = UIColor.lightGray.cgColor + profileEditButton.layer.cornerRadius = 5 + view.addSubview(profileEditButton) + profileEditButton.snp.makeConstraints { make in + make.top.equalTo(userIntroduciton.snp.bottom).offset(10) + make.centerX.equalTo(view) + make.width.equalTo(view).offset(-40) + make.height.equalTo(40) + } + profileEditButton.addTarget(self, action: #selector(pressNotFinishButton), for: .allEvents) + + // Feed&People 버튼 위의 Divider + let dividerLabel = UILabel() + dividerLabel.layer.borderWidth = 1 + dividerLabel.layer.borderColor = UIColor.lightGray.cgColor + view.addSubview(dividerLabel) + dividerLabel.snp.makeConstraints { make in + make.top.equalTo(profileEditButton.snp.bottom).offset(10) + make.width.equalTo(view) + make.height.equalTo(1) + } + + // Feed 버튼 + let feedButton = UIButton() + feedButton.setImage(UIImage(systemName: "squareshape.split.3x3"), for: .normal) + feedButton.contentVerticalAlignment = .fill + feedButton.contentHorizontalAlignment = .fill + view.addSubview(feedButton) + feedButton.snp.makeConstraints { make in + make.top.equalTo(dividerLabel.snp.bottom).offset(10) + make.left.equalTo(view.safeAreaInsets).offset(100) + make.size.equalTo(30) + } + feedButton.addTarget(self, action: #selector(pressNotFinishButton), for: .allEvents) + + // Feed 버튼 라벨 + let feedButtonLabel = UILabel() + feedButtonLabel.text = "Feed" + feedButtonLabel.font = UIFont.systemFont(ofSize: 11) + feedButtonLabel.textColor = .systemBlue + view.addSubview(feedButtonLabel) + feedButtonLabel.snp.makeConstraints { make in + make.top.equalTo(feedButton.snp.bottom) + make.centerX.equalTo(feedButton.snp.centerX) + } + + // People 버튼 + let peopleButton = UIButton() + peopleButton.setImage(UIImage(systemName: "person.crop.square"), for: .normal) + peopleButton.contentVerticalAlignment = .fill + peopleButton.contentHorizontalAlignment = .fill + view.addSubview(peopleButton) + peopleButton.snp.makeConstraints { make in + make.top.equalTo(dividerLabel.snp.bottom).offset(10) + make.right.equalTo(view.safeAreaInsets).offset(-100) + make.size.equalTo(30) + } + peopleButton.addTarget(self, action: #selector(pressNotFinishButton), for: .allEvents) + + // People 버튼 라벨 + let peopleButtonLabel = UILabel() + peopleButtonLabel.text = "People" + peopleButtonLabel.textColor = .systemBlue + peopleButtonLabel.font = UIFont.systemFont(ofSize: 11) + view.addSubview(peopleButtonLabel) + peopleButtonLabel.snp.makeConstraints { make in + make.top.equalTo(peopleButton.snp.bottom) + make.centerX.equalTo(peopleButton.snp.centerX) + } + + } + + // '준비 중인 기능'에 대한 함수 + @objc func pressNotFinishButton() { + let profileEditButtomAlert = UIAlertController(title: "준비 중인 기능입니다.", message: nil, preferredStyle: .alert) + let checkButton = UIAlertAction(title: "OK", style: .default) + profileEditButtomAlert.addAction(checkButton) + + present(profileEditButtomAlert, animated: true, completion: nil) + } + +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift new file mode 100644 index 0000000..b578917 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift @@ -0,0 +1,35 @@ +// +// WindowTabBarViewController.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/20. +// + +import UIKit + +class WindowTabBarController: UITabBarController { + + let firstViewController = UINavigationController(rootViewController: MainViewController()) + let secondViewController = UINavigationController(rootViewController: AddEditViewController()) + let thirdViewController = UINavigationController(rootViewController: UserProfileViewController()) + + override func viewDidLoad() { + super.viewDidLoad() + + setUpTabBarLayout() + + // tabBar의 모양 + tabBar.backgroundColor = .systemGray3 + tabBar.tintColor = .blue + tabBar.unselectedItemTintColor = .systemGray + } + + // 탭바로 ViewController들을 이동할 수 있도록 링크 생성 + private func setUpTabBarLayout() { + firstViewController.tabBarItem.image = UIImage(systemName: "house") + secondViewController.tabBarItem.image = UIImage(systemName: "plus.rectangle") + thirdViewController.tabBarItem.image = UIImage(systemName: "person.fill") + + viewControllers = [firstViewController, secondViewController, thirdViewController] + } +} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 009c162..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pins" : [ - { - "identity" : "snapkit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SnapKit/SnapKit.git", - "state" : { - "revision" : "f222cbdf325885926566172f6f5f06af95473158", - "version" : "5.6.0" - } - } - ], - "version" : 2 -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/AppDelegate.swift b/KH/PR2_Lightstagram/PR2_Lightstagram/AppDelegate.swift deleted file mode 100644 index 9f11cc1..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/AppDelegate.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// AppDelegate.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/14. -// - -import UIKit -import CoreData - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - // MARK: UISceneSession Lifecycle - - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) - } - - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. - } - - // MARK: - Core Data stack - - lazy var persistentContainer: NSPersistentContainer = { - - - let container = NSPersistentContainer(name: "lightstagramModel") - container.loadPersistentStores(completionHandler: { (storeDescription, error) in - if let error = error as NSError? { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - - /* - Typical reasons for an error here include: - * The parent directory does not exist, cannot be created, or disallows writing. - * The persistent store is not accessible, due to permissions or data protection when the device is locked. - * The device is out of space. - * The store could not be migrated to the current model version. - Check the error message to determine what the actual problem was. - */ - fatalError("Unresolved error \(error), \(error.userInfo)") - } - }) - return container - }() - - // MARK: - Core Data Saving support - - func saveContext () { - let context = persistentContainer.viewContext - if context.hasChanges { - do { - try context.save() - } catch { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - let nserror = error as NSError - fatalError("Unresolved error \(nserror), \(nserror.userInfo)") - } - } - } - -} - diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/.DS_Store b/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/.DS_Store deleted file mode 100644 index 3d88b1e20ca88be7f03273d3b5633ecec33bc93e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5T30?B3_Dk@VH(@l%6~(NsR~3eSz9m{2^&VttT&eB9A_SkK_aR&CF6$ z8lgcDl$kL5WoLJ?{k|=kED^cE^R!RYBcce-*x5nTU_8#gW}Oh>K_}0c(Sk0ipbT#I z7Zl*V+oyykxNfPwe{(uPO!sn5PZ(Wfcm3g{$jdk11^NY8mXDPRhi0!sz>{ovt@allGZUL9!U2mtINEQWjewgP$%0ONp_ zA|f!SsX$G2;fUch9dRG##Q`ftO(!QS<2hkv7fvWnR!7{+baJtxwWfe6u&Th8c6(g^ zuf9M3uO?Z~6fgz;l>)At4$}cBh1$ACj%%%lkKk-PuTos5;6_R@=5i@MfQupS`34vV TtP~M}*@uA0V2vs8s|tJq^ZajA diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AccentColor.colorset/Contents.json b/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb87897..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AppIcon.appiconset/Contents.json b/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 9221b9b..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/Contents.json b/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/Contents.json deleted file mode 100644 index 73c0059..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Image/IMG_3117.JPG b/KH/PR2_Lightstagram/PR2_Lightstagram/Image/IMG_3117.JPG deleted file mode 100644 index f56c36a97eb0f4ffd39d0268c1a76065e39c84e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209022 zcmbTdd0bN6*EfvWJehf^nU$3`X-YX(nl`HCah~}IikQ$gKAX)-3_@1u&zJJg2c|Ok{@B3~Qws1Iywa;E_ukUw#_u7}Wub^Gm z&99k*WMn`fOW+5zHZ61iYPi2I2xM&y(gcA(n?W07_JTG5J>U?~bs5$F^c`f5gJl1G zeI4+oE(mx8{RRBF#`}ZT|NA-!6bL;3X~3EP{rtbrx~Ft?&z&+ncgo=4X@heH`segd zgFtdGK%h;)QR{&>Prs1;pR>svf3f~QeUlfv{_O+D$=JP+|4-lf#qR&~Z>7on*Lh^t z$%4{f{QLU)v%31A^tAu2pZ>r4um9(|r%#=FE%V}2m+by zlW_&fsvfb}2aN7I(7Ju=%s?AY8yM*8pWe656twxzg-#isGT67y=zssmfugjJBDJuhvrM!%+yv$lRNDUa=4Kn|>e?JC1 z07JQc!^TaUw`|=89DoIGf{d)}y7jUfHvIXTGBJOKdcFLH-G@$J+^ArGd(+{dzjPm_ zz1ggOsqTZK!_bn3-ksn_Ted1G?@`%%ECp7g942{m5J$L!aRdWl=Yu9hwbc8rL zySRFJ`}q3Z^$!Sn5E_OIkBEF6_vC5(vxLO-ml>H^**Up+Z;OgcO3TVCD(f2>u}!$< zme$U$?w;PhkDrLcBco&E6JI7N(=)T*n5?<)^9#J?m7l*>`2ykZKXw84_P@*m9{K4EtYpQ9+kM>;7%B>(9)uyF&>Hg4Yd zr)}Q4`QNtnzuWeI+s;2t?muk}I0;~>?E3ZVHvzx9wr$zA>;H3GqX8~rwnhPMmz4n~ zldL?*3?!Vq?PFxU5ABiPyeW`5#n6t5L!y}01Lhb`n@A^v?yX9c1Pic1!bk#MgC4A5p82-L|Tbvuywd17T!;x;9TL& z=slx`*u?v zpKNEd1*v6E>k_`xRmSrcHu*fu>b+o$gHxrD_PK%P7X`I zjserxK(KjFM;EIcZd}ag;YR0gxwSP35PMuDj+lr?i+@jy+^TS!G1&*dW<@)F=q{qo z@P2Zcr(18v7|G$D5_eqQJyh-0{_K5Y^Gnu`;@NN;`ovq&EOicJH|3Cd$Koi z4_H+9$vs)zJ3j7EyV)ykCD6|YxG+nYSI>9CD?k&WTdXX38%EDXUAw=y&^I?1#=!Fl zZB#TDwdy!{f;w}qqVpssbf)^!ik+3)S#L^J%Vsy=3etfER(`Bk<*qvJ?)mDnd8_-w zr(qBAu`bRyzMG_$k4eh2xoYZpKchU1 z?S{RzO^*4#4`Vio8Az@+Or>Yva%%fwc46X4@x>yS0Q)yi*sb4Qt|+3W|5zKqje9#2 zL^RAkes`Q5gba!Bc^imH-}HDnIjHJWP%!bweWGj@G*bi4 zU{KrL!Wf*yxwxc^z$nI(Hf4im=&sXKx1 zK|Pn$vjuX{kjBsz6BcX6Xf8I&X*cKoiVVzMlJ@p>)vnt0FYdV?dxMWeeRo4Tn#oC7wIT2{%jqiB17uuntyz8bz9) zU6J1wO)QL(jM?I)V>$p_a?WK zSK!nYxKwSLGNwCP5uAgPiv|Zxk3>W_WKX#`Z3-5%CERI5b|9-f*(xbv)@&Erxg(2j zhi&nBnB*fvAvGWXA9?7Meb&>xw_adXu9MtR>?F8l6v6D8AE)UH1Xpen3bv4># z^sJAMpW_tZz(qz&BiXHiYAPoFlK9ey02gk}!Q5eGq;+$tzEA`;lq3?tFl;0biEDR1`v8YsYG=Gd49gb}J|s$q8AAI(|= zMKK5In8*CfS@ii|;4a_igEy=%&F88-){J3#;N8|h`vI?LK3$hlq=3n$>38hv+cD9T zVqr&LY+AAG*)mm*kAbY`X9(Ei%%TNs1aeq8mxN`7* z*t?t1Y=n3N3R3MWnR!!eBis4=US4UDN%C~ZKo}+-QONX#<2!!9q4^!`zwdYqR+(;r zy%6|)$fK8!RN^f^?#hB7+E>7Qbch@m!pkq}_tEx_KqZB4DIM{_c4U5Q_uu>Vg&`BE zS-A#k;Nu{>vndA8+yv;$xG@#%77w+>#dojRcRp59Gf@e+<50AqvSL8 zrf;STn>oIE_h`bhi?iW4 z5aT{yMW}?>WmpFBg{g(&LthPAB?Yx69`~VxqMP9MfpI9B8z@y2Hi_w(aktg{`e7&N z76#L)PtNsqYpXl(ygb_W>J%(rO5fz;gnqK^In}lzS3O5auvRh zgo^z1etcTTDtAW87rkxBZIt_L`-reP+Ne~3uoC2!TXKdk9?n2cRWiUNoWPB>11AXb z(66w_&a=>%JEr4YxM}JKS?$^WYQLzbtpxwuAAEh|2jE1)A{)9~?fHOK9Qk4*%S?VD zGBrV`#`OH8>&Lw@M;G?oN!b=dPQ&Qd@}2suSOY1pyQ&>^xp}l&-LXZ|Gvw2i1+gxqA*O{W zN!~WTP3-s}6s~r&@Mg!>amexhI3=HK zuV`wvh+#-0ENK$$>l#BfhS}2-(^u1=>|C zuYul2P1IgeyZaS$V*k}w<7~t4BZ#f9*H!i7VZ*tD8>7}hA4;2H80-zchnp;t+>ZLH zX1IuI@Z70s`V-X|nG+FJZ&k z8X!A&qqg*%b!HhPv9H5Dvi!8nawZSLr#?vsmn5^xqeKUTWLurlMGiJq9!}DHM@!~F zpj^#0&^FX;8^l47;&s5QxC5K|Hw5d&zY(ONiHRmiUep@ac1G$KDGWSdG+wUl9zNO& z%~^+p`$@rQApF#9wsG&fSHvmw2~WD#+`2@$yfri2d{__13Kcp@g|(i4)p8H$FLZy6 zK2k!vc4XA(A}Zv-;yV1JGT_6h?LR!05c|HD}7_YB`TR!={-sS>&Sgcv34m)|5A>fn6+MaEP?k*QxDT~-oh|8jndQ$ow zZ>{9Hzr-fK#gT9#d^Xp9v)KKEov`c!aehxkt8-ov?yew`=?B{o3WBK1Bj4^UxVrpf2F^kw zQ6hu5pBYw(EhGNFO$rW9sM@_yw1iLU@pJ#A9eqfrzt7JWK({nZ(+pKpbfv-mBJRIMI3nx9CKB!e%1C5TRl>c}+|7)J0>NV2;T5Zq#S4!- zOzNjhRhpt1lGGpWdlGt<^LHggwCU|1Z%0g{gE8w5n(HIrdW zltj5B_D0_$_?#Sv-ygb^D|ET-2%Q!&9^lBHSLROG=KOSMyc22EWhU>x8oOsSRs}bR z(XSl(7Tx3E>#r;+rIc|a9Y-oS%Q-f>g47}arfvHEPP~0ox_|x%bOaPPqm5uelgPlTLpK)lU)7zL zn|*LD_RS1tZz??!ZHYS(qRrwIzgl21lb`@ zDQ61Ea?ki?@oJO5d+Yo#C)Y(iO`nJtx*ip}WQ(fsITD75)dFNYk-z4S$o}{q`om0S zFk&X@dzZq@O+cbWR}u$K7A)dxJlSm zrig6O*!|!$rO&FQL$E-yZ^CNH*50!_*^7k{NR%?4K(BduxQFpDP^W4FGR)~VGP3E1 zlVZPfDOJ_daV|Re_suWkEVU<_Q|am?nP|{Uf$6RFpkdU6ZZNh zuMG(YZ~C;3GATw{mi-n)yi-Uto`9ETS) zd(i*E&2d!6^KLJ#=(TZf2Xscdg2H;1Y}xnH>7;XmKYyd)$?~FO+IW^Neg(B7Qg_^R zesI5BwW(}BIkf!KQNwHBaArLXNXbtifj5}BQ^f7&mVm=7EM|>K;oREUly^jzXPcO6 zM#Qld123|JMaxA|*^aMNOgXpgxdI;#>MxVju4YRriMyF;?G7mU1-i#?>Vk|*F{SM} znvY^Y!y%3yB}Di0-&gh&XrxvDeCoe*)V^7Xwk!s`mm$e(|NHDWCtcG6Fj8sH{i>q2O*JA8qXLMQqnU6Cju=@-|TQgR3KTanWG5{peK;99k>33F9EpBCShd!y+ z7`nkc84i++uYqQqm}=S~T{8xvqqt|eHP{X5Q*yMYw=O_@MGP=tW{+oR_|(txyU?ZQ zsea`!rDfefN|-pFX>2Gau#Lo9-)0;C^4pV!UV9oR+-t{&x#(@e)pZvj~E6d)O|DD3o?FWht6cfbG{BhEHzmG~>2-hJp9JKEPAw-aGM44P?Y$TIw622YB4n?# z)Ubbywe819)qX4UAeMCKmd7#0^HMdQ{sA>yp|aBxr_{Eg)*3F~iKQ+5btU^`!dylX zS$)C7*t&U%ofvV}FHP~`CK%kBp@%|pQh`ukseATb_@}=1`w<^j%a4Ul*9a`Kj-AA&eT&`9!?qbl zVqc{{n@mo5C8pv4K57#7Tp`2fIC?;yA7T6IXRUHTURk%cZ=XBfU;jsh;=zM8G=^57 zuN2(QcVgCr57-17WT=xk1uaW4jjO5M6xJIoq$ zP08@ekZzuszWI9-OhX_mlX@B~xC@?6Y4xjIKVc z{=~SCUU$gHu2#ZbZJIzQW@L9p>1Pg_wk>&P$4qCmzF>DG3yaTAeX#FXW$<&N$5tGA zY!sNOosp;GTt56z@VMp$+n;cv`Q91hdIHS{F&%@)xB{M(?<{&#`Xi~Btlj-2k4`_| z&CGPf1^TXmI&M0B{_tf5+HE&f{IWaCC~vG&*}v5Hf;l^>g}`GI3@I3Qiy^5@s%@&3 zwW|Q*?);PvWl?HK%eB0iaS2NBh`#Ng(Cd=iQ}AM?Zsvjz~im zlp|qdN6uJfjPnIao=W45Esd$W7lvil|DCR{>ld=oHq%ME$?3A?$C=8K{_p~HP}7IN zJx@f(efLF|q&Xo)vh-+qa`sltd{3!9^`di zeY!FG#dpd;VW5$_wd!dN@f##qvcm6RKQKRL(xG0onsREoi1k6@lg?qE_BkwaRHWpKBG{39$QF z?MkT;;K{F8-H7L=-@T^@J^V0TAmdxwn=n%>8JQ|rr$4I_Q(=)KnE2|`mN(J6M;$@$ zZuq;?nu-%MqF5s8DyOQbVwz~a-pR=o+&d}0Q2$qApMCB%StgZb$Yuab2!DW5PGTfK zx}V*U_S^BRwVB9jCR6&R+#NH2F7wfpvzVGu88}r9a0%M2?UtA686~T!M@TfL+4(lv zrHPv_S1SrHrWt7%HCSl`s)k%*voI)ZyK@s)u;cb-PxsQ5YmWGCH zsw=2xzcJH(kAH0ezaDE8ot*z%sDEavzcL9R`V`<^b(mMJzYqtYjgb~9Iywf`*81r4 zLq}ebgXZL0JUrY2I38=Dpo|zUI&1;GPd?3Npzr3=f%yBakFjX$AhpTi%gYh~V;>2H z<5BSfjH{o9WY(1A%rmSAPIv82E4tSGJ*@KD${)}{l29mbUY_4QW4p_Z`a$yMxcBWw z6OW0;kAq--#FfDzY}&qdxo}2 zD(}Y3JJTj|R7L*NPc0NN7R6(6Z`7Updxr~{(`j)9zEG|rf>V95Wo=lv>hs)6)ccW^ zb>s1JO)o-vT(Tf6uYK^F`l@=0927n-(5y22$DGl@h?11jR-&=P>Yt;}zO76M!^Exx z&oS?z0G9PRyQcZBpZ+aaUUWKCmst&A&Akq?{wzr$YL0pgxp%C62=S{ zjr~}DwMnINep$QI-EvzusTm*;kxQ7HgI>N5-OzXf<1Ys1GOm5aEJ5s_gT5LUSe}Tb2bU^hnvT z>$+zbNQ+594=AOjFFp3@D4K_1lmJ>a6-;izb0UTXN%j^R$Y;awG`;3orX!qz6pr;? z1Xz8GZdWGW^NTB`*_@=+8_&{OZsKxd0LrAPwM6SxT}p@gr`Y2QyQ$QRUMlpF{r||W z02F7BbRv@Y#@-m>x)%5QT^aaMfj z6)19aVhIV8LZ@G~*X8*!vyahqQ*!}knr3CI?0Ix4n)!fjx%hyjTXb#>w3E?_2e|H9 zogiFi7T6kyEnr{6XX~h5_Z3yQ z7t3N@IuO|at&RlhP@M61w@>UQ%~a^;M?prGTnFwprKM0^W<>-6cWHd-Me6=x1K1Pf z$ZS{wIO%G7*c^&TUO_2QI_>$-pNWq^ceqgIO%E4Zq~Cw%mUZVMr6ktZk;Zpy660Zy zA-k47I9uJ_|WvMz^7yGa*aRJI_TmE(D%08L{mE+VL?DpV`wQV?zCLo>8Q1n<%E}!bRf#g#>l{(F z1Q>z7iYqrhucDqpT1)1hsacPZZ1@-7E)VT>Ig&OJTv;jZr`~KDt9eE|El4gqfN1EC zbn03IJtgd_F^LJ1WKXkQXSDSjXl7q@9B=tias9q2h7D{0wsBk?GN6>rD`vI`<-7NmwXf%(} z)jFE(w09Kw?kz1M?J|>CMMdiA;zVx2)L4Lqioj&a|DGqTWxX{4VXV1!kZ8Of?MhVJk413HGMiOT1tE~UH z4Ajhk8HZ%mxLhAj8`&eOlk%wI?ShI>7;l4#@l1j*+^}2UeqVIgohGI*b^(7Hv6=%+ zaaeuax8nO_aWS)OR6Jb<#(lmDu-xjGo_!{7fA%4>i48r5Zd zc3Q}C56!+qTgk0Tw7ocyafY`05j7t$cYo%zzquLBbpL15eS)se$Rhu9#kZB6b*&q= z5*1Z&flv+y0U$o#<}&i?^TY#-wx6}tXM6z!w7E83ylpxv1W|D<0HYrVho=4US2w0B z2~A_3DN~DdIIrL~v)I@}Am8>`#;89oR5WFn}^Pa`!kuhN!rA~Vg@TomQ4>AY^j_ehJx zDmZ&DeP;FSqPiCAHcq!!6ze19)2WgL@NRAO`vF--4(IcKEh^0SD>~dE5_udUistQ( zpgEFvSNRg2YS(B)RDp{gDVb>^Jhim06s?U2ooq+j*bXyS?_lPxHSVthocp`MihaWB zdb>(;R0}k~5_wCml`$urxEY%9cWIQ(<2(JN!_$VDfwG#MKh;HVufs>c59*Lb4FSZe z#Qwf83%VItdcGci2y)$|>|~Krlw21+td4iN>oDB+q4Ph6oG+v`&_uw>=^Jfc>XmWu zLj?Ki*_Y5(A6xo6hz18B_^8Vh{S)IBpKnWdL*pqn)vJtiXL8g-USgfND5P|Q3M7?D*>iYTh?Fl^1TvmlZh z{_yvqu?YNCxx_K z(R985RgR{lE{5>ZCptfer}uxMd-kIl*PcUlzV-fSft<~CFib;6FZ2_P0N;)cjCHXo zYy@f|IO~`%BzpEQNlZ}>+eE9vm28?+>0(tD09n>IQsT=;=$U^KpRDG`E+J+h&|DYH zqf;*{NZbP%Wr{ly4dNb5wc)G<)++2$#i3ieE={#$VDU8~@nOTs8mWgv+B($xxo|f! z&h5UV%Vg?OWhEH!dmm)zr zsK6eLWTTVGX&I_GLx%L22;0)5J`f${r3Y(`zPI?|wD)>Nn%JyM3|-ng5X^rIQ;Ykp zH$C^{7kCS$^o<&M{pZH!4Phxsz?=t?G`qNrh!$I&P_X(36TcYD{u2zIuz=+ zbbQLc9(D$yK=!H)Cph@ZQY z5FeU^k=3d>FgjpqzHH)V-X{IBbY7YoZCLiAd|yhHtB=qH88c>1j+kh(y>z-UHSuJd z^~{bru4gfo1&ud%N4HQAL^=!fI_O9W!=akv9jDzVdp!Cn^NOu^+%;#Wn)*F@*m#)%k+ku8;31CyN!9 z^Aj05+-YF3M2HBqT2DFJnX*MK`%W%ZBluv4{ zFAu$v-FeRRO)X66H}?G$?uKS_9}$D&u%${uLSple!K|Y^L2AjbC=@nabQzbYw|d@0 zvo!_pQpg27ChSiR2YbA}8XW$;_V}`hK!ox(q*V9y`q}%9E7G<#v^4Pf)^N6=sBhV~gAref)emGYj#7F(C{qb8mzt|!gwJ$ZfIWh02Ti}za}oSN*}w-H_mBw6t+Unu~~ zosc+^izk%K$+zqJY%iJeQbEO$8wA{0eC?)%0^Qc8I>zg(dW!`|BG#X3hYf7YrmzNV=(}Ky8V>VlBw7 z5}#d3nYml>;Hd?r`f!nMXFq`+KB~tSBF#jOi(i3=P_$I2n3~!kVJsKwi*MJpqIbDWfBQUuXOHA+iCzi4bQHGGJJt?rhw96!+o0so6RK_40&)HLkYOv-hD~f4$Zk zh!NEUa0*;7{cT3|nYcIM%Y|?0$9O-paMDA(^+7S2CvWGehL14egIlZaG1$h2+-w+1 zF>)BgwM_VoJ<}}~F0ED^t(a-wX;sugyYkX~T^KGWiH}3Qw~iR8h}ao-r{n;lJ`B23 zddfdI{P{{(B+I3kK$HEaAG23yoF?INQSCRjHu1eK;X8Bk&<&k%(Tz3Wa;4sUUrf;0Fn;2IUy{?-SyH)xdljtU`^^GwjbkjpW3YY5Iv^RBmDAMV_%3yC~pSWzme8Ml1 z|5SCPvdiNQ734j=X5P%Wh?w~UM!dfF=i+;~J3YfuADSLwQCr*FyN@4np1i&6dbS9d zPXrz-z(G*5C(|r`##FaX0Ol$5N1ZKe87Yg?QjOTArTd5CZUc%OwpmxYA4}z-`}|u| zx?Stq^5~4>ZKO1Yo%bz-tHQL`876@`2lC(*T>D4Gt=!5kJ*s`vPho5rH#) zv|e9lQ5@t~rlD=DJEb_e#}@)%>?BDRHIpiK7FI+}eNd-8P>YwIud6>je{R0{(WUzR z>=kug9lJFU-e&mp%ap;jQ31)~sY*#(+H=~7W!$t&HVYwb2&~OZ;-|jT`5yGK6^)TS z%*=j_4~Zu52gO_QC(M^mze;@@Ezg|#yMKV(SotlVh?=BHdlwe6o~q`L^#^s87wH;) zA?=$BbeZ4)KBg=JlpaahqyslRNJx~WCGnpShCx+!NYN}#fa++n}xfe zl5Y4O$hntK>q|#%&EweMa8{c_Wxy^*HU7-if#GZLB9;^^*x~aezcM&GG0r{WIiqj< z-NHJ$D&`&IuJI{3atjrh<|6FEotB8V_iy`vBkj+tzb7=Tfw~G+!y!?sKQJPXAmoX> zEwgu(qYN3edbX%aaje5vssznyxqAtWrt_ayh#dEfGWmd(=;47$B#?&7{($Z<&z^zr z9$4LBqRE2!q@-KAg!NYubnD@2x@-g=Q+Z(Uid26D+mDAWX)lo+ zWVEOQGKD5k97Wg;C8t9DRIq-@9&`KDPUBw2BvOf3nONV;eiREu!<-t<^koPwTSCCAY6?f*vJlk>dIT2(WhU13;we#rCQr)`Z+2F77 zH(TqIZZ-##5p#f+-&qe64b%%4aYTYasKxY|%4iGwY1^lUX7bv%#%lNH9@_eK4uI@Y zk}T`S*=-*?Vx3nGjFdJal^ILPofyroquyo_u75%CK+1>O3IMUF`YCS+9 z9J_4LTaZ|fX)Kn<67X15E5i^7PpAeL$Al`4TMKkmTSf!p=II!U}!bJVv?@}XU#R#)D42}uq zd*m2$r%N_dX}Yi84j%tpCBAy}P1TQ=dWWrb8@sgeTqDU(d=MY@cB}dB45!w}O-YVe zn6}}}`0e|-xnZ(+-(S$&Y(d9&*YB@t_q+lar9(XIFaFc${ZT=wn)8p^!qqhEHN}iY zKuw`Ae9Zf-d+N@m*!EDKeB;<%MK0XWQJp!(UNK~#IW^;=vF?@<^$u4x&+tBr6%(CG zynP<+pCCT&=om0B?@`6Zv95e|;w+%ODe-zGD670&CO$KA&)b^QptWl!w`Fe=jj^OT z_v#*O%e8!PoIdS*o4Q|>^FQ^Jw?&U!9MOO+yyj?Zl{zQe?3r+4rlUHv%6bD{t#Baj zwc3Lk7Mx*3_XhNhj(L}q&O%k(J;3p|TAPhMynIsR=*E+=h}BqVUR!JHe)-WQ)Yd?> z11zEF_U@+xR>2G-AbFSdsX80;87j~HZQaw_Xtk3@#(~8BZm?)7sx9-wnSA?KE+e*n zmCp2w2o*D*=9COGo+ihGB%L5qG2z7P8lU#TOA|X3@y+R96{Av!TU47GFhF^N-)gw< zqcr4GR4@P8p)mvSQ#r4_fr$gw?+Zk#A*lCFO%x8Z?OJlRI#ci_tr64Hym4E_^Upax zcL;_I$u=Zu-o5nuFS93nrC2qEn)1r=AF7%kFL59-_&+nMsrg6kgGGQ9piI|2ouU2e zg%4d;J$sM?D3=AxT3Zvhb`|oI37hE_ez1+N%ZKr{jmm1k@+TGgIR^Y3uoPQd=FRqH zAw9R@hFR84D;u+JJ;}T-uB#Pq3+7O-yQ*Hdc;8AMYda-*+bgRxi@T-P&0fZ!LJ3Jo z?BCC_(oD%qCSe^40-vvA!v^vZH315ASS0B!+wH`D$S`rzo03d?*Q4>AfqaliFo+19 zBb#x$MbU3fGR~H)mXM|3A3&tSMWlL+-dAkRuJ4pLeJshtdLyImAsKVf5dZ``h1eRtDbx{@z2 z>TWPa=>c?rdvP#PK9zE^hljs8icNub8eP57^?P*Xx*f*whg&|8gcoGbX)Z8&u9Sov z?>x=#82SZWtesYcZV{L=t~Faaa*EQ`4`r6-SxVuRWU&@bO_L22&R~KEZ;VGX9?NT4 z(2k8Z=7^7pu1tn6_us?ueDhaf9j46jS9r&4N%oU?lGs{J2dSKL`Z}aL( z)%%xNFQ`zJj1Ps8R2-`*+e)9F?PU9R ztZ3r+9S$E!^G%gza&6I1z0S0D%sZ_@TX93uLlV4e;oi{p;?zT3nhh~b2x6KsD6-D` z9@pX>-9O7&F0}qmkxSCgN7@JyBKBTs{QzrJNBsUK%mVH)EC9dfBX@(Y6&J%J zN;AW|^6{zxVtmI+bPK(jpM%0W+ia}MKHWF(X(~u4?JNTNlKcGchn&|%`+MHjLU}y zBN`M96qzxvihVAf7DQZKLiP48)%LJ0EGEDdB5_95NoB`YAsPkbnfH9)RjL3rsTRd@ zO$=#lNsY`r-b^$h&`q!Fe z02<}$0y;h)K#qlr40oYeB;;vznj;c9N-*X0al4v<>KCSKAd)oJ_4nR})DuhZSgf

    `-C*FAXJ=b*Jd90e7w574~WpfS~u@>qnSUM|cA@{&-(Q~dPOs~euYMaE9V$!O#02(MP3tKL34ZN}6h zvL)O$rPi-kIuy#6dk}5O+O70y zzYoS4l`(*LxZjlhcZrTycrWk#ko2%Y&p5iIlS%h>1mtGKL2MI%YT8X*!8&(yZH~cb z26wptGJa$>G2W+J_xh}=8?0swy6VIfVOE^{4Bkczja&Q^uI@Zu6@6N9j5qbt*eV$= z^dRuYLI-Izp0NE2@%qorX1LFaM;n>AJC43v1*+j+$XFDGytN$KA2+Rdz>6V9lua(EZP&*~96k{H>y{-UgfHHM&GW6`p0Tmspu|_*S%XG zC@c&H3TVzqV%(6}dxSJ|J_%SxAF;WOPe!xg{9XP1c8ZX#g+L;j3Lt$SmG!ae z!vLkX6TPnLxHk-S1o^PVe6S5Dd`*3bg-WtY9nuppGnc_vl~&kdCUGw!)w)C ztHW#xS!~_%yvGAOCKt|nRjY2)Ln-M^owio*TnIbAI<5g+CK-d9$;vzT&ev}EQ);WDAzMg@X91%8 zyq3uy)6)@Zm%ra{MD5sL`{KRe?mu0C3>c`E)SEFfiQjgQ@aZjlS8g@Mm2Zy8nF-?Kb5)Etiu6 zRqqRT zL0R`u4LD#If(ORsM(W9yw+hii{8UrHXB=rm=IF`K1}V$L{X5y{@vFWFAhX}**|8H+ z8O`!n9cGz;XKf!oXt(=baB}Dtz+y}v9CAIedB+N{$s`XT%OS$+0AJ7mkW9a~-vsX& zmCo}TkNICWqXQC$?)31m3G2M>^`oIMeE6I7mGxQ;frxBD*c`A{C{cJtDj^5@8Cu=EO`?gCJ+8WGiay7V_X%y|9?0o^YOhOC zbiFWSZcD~7eW}u6wsdu2CN1NRvjDZ!E9z5|tI7Kv=0f?Ew@)q0MLw3pm~nEKFtQUn zZ%St8A*R<)r&z9B0dRf?wp8F{y);mqYst#H_YbkBsg@*N&{8VT@Gc^$_xIQs93d;b z`piOGkA~jm%D-ffv){>Mk?Mg^zT+wzD1N?=L0J`pz8O0!nt&M1$ zBi6U#wcrSjxXKBEMP85Po*)jst~OEo>Y{Ir>NGt(y748(l}h=sD+6B1x9h^Oq|2Nx zIHCheVp!8zn|I1Kw-@rjJk96)%ew!uD{5c5`7_e|5c~fxdG(Yux%b5DDI=amrxAJN4435kG!hrfF?u;#fcT@k!3BQ*!E0 z{hb>`sNywc1MCqq`lIugBlGjxHyiJ0hAP18qYu{A&tM?k}zRiX8PBFkDf zarE+L^I+)RpMb1-Td3SKC#$`}1V1&G1UROyV?oTI-R5_=He2MVgIT7(8U<=!_nX-B1PpNH}gargc;J4Wh=5mQ?8m ze#a`CEP0RaUG|7-4u`q|DotYCQ1idPi# zwmZ7I<)NDHQ(-Jr^n*$B$TSexg!}K#e%huMx?h4f7dcE}z7}R?P9W&gBU61$s5PVK z#vaQfT6@yMuVTT^o2De zmrYqycoczu7uR-zMB}G`)x=kZSxX`FxQnr)19g8L3w~k_2WF3I7~8dCERk;$aI<*O zxPup3&40Yx_^%VY(V>@6U!b{!#{i6}XK3FZ3`h4WoyO)LJ%8g0tn}yu`@PB0RW2%S zYoL8oZlO*mbMfEFbH_Bix5ViSf0$2xICpKgbi zQV}tUeJMmY0paU;H)K0(gU&6CR$s<%TleNC)s4*7hfS1^wFgE0)p#aQ0H;gAS?$;S zx%)PKGE)}2AZFyA87}*Ot%B%UAU;q4;e+lUP}3wH8$3JptTucZy3gZUb@(a`-etk0 zXnBiUCRczZvoB1H?Ukwz15%mcU)81)4oe+q!zyB(h2C+gqGKpPTCYQ7bH){(nL7w< zw$uFi%52!4?T3sn9zq*a*Fa-{!abNlH#k2#-BE#fGez2V@NTJUlftqX{YUS^PAprB zi&bwMZ8T0I{d9ZW0+!E_Z*f5fGCiu7Ibm?dlOUpnxA$JLo~z)h%G;I2s!O<>SP10m z6j{n8^C7JjRy6+evwd_^YwKXOU7it?$JxMs{5=%R0q(SP86VA9oT*4t$mZ3?`+6YQ z_6_GMAm7-IPJl!%jP?9(LzBGpMztWu&nvV>do-^8gp)>L#{WaoxyLiz|Np=1>gp(+ zof57qA%r3nq7#aoZOmzvvo*`va@gl8l$=s*IbS)SMh-I!yK*c;IcGBqO_7Zu+uGs! zz54$C?{M4pe!pJN=i~W!+@Bi3v^Go%(~+?{Ip9>0YoBrc$DZCe?^}fRzJfaJ&bWV2 z2a7ayi-kjERgNJ|$>};YnY}?8~vw+2B zgcM<2q5s(^JK|-?X^`S&=pn^Ypg#-Dz-2AQs(dz1b6=3m50fS)`?!3vodSm&gq#SE zWDQ#x$!!Q`2gV;_tIEF-=l&c+mDx31H~BL`qZYEwh5*OkARE5Gul~yJo!k3uOB6P6 z;-NNSzSEia*rp*O>C)%Sj*nzb3z9pVi0y+1uf4)N>_~RR^~T*epUF%G8nha?2)Cb3 z{3U@3x3Vg8;U;Fk1T7^nO0mEUtr}e$VG(s%8KF#ZtuQj-%>096|1yYbnXozMbmBJ>Dw=-(zB3Mz_FgeI$0ZpRW6wI1ho+#XV}CC^T})NwMMAkKzxMO>Agof+JYaak)*_%!Jzd!Bz#yCrlyDE<*X-0p!Q(8krn@D z`0mZT`$CsNPLzslVJytG^4&*s+m)|*bTE7tzc#noDf3*x56=7BEQMg{XD9hdt2v07 zYv2PdfZEMNZTg%X^qP7dpedzLmHfQ?gN1X2WfLo_`!5&rZKvGFvE5!A> zl_~9h|5CAfp zy)_`FU;3&I!z6Gz5A|rOmV^>VrCJ?__Q_|}fum-PB3fBUJR>Tpj$pDka(|{3bWEMs zyy#ixvIj`j0?pWF+bpz?hsOJx8=3{u3=iwX%*pIR^M3^-qM`UQ7`nSWzNF-PC`oP4 zp|`FOX5jNvD0)894;)k<^P(sYvVGa=uG{3jz!Z3>S)i4Fv+i}?MOro;R83}vbiw50 z-o6{mY`f_9oT%Q)`Ic<&{j{WykC~1%7apdQ(8WSJVb7~NnfTFtrv8b$Zl4kQ4)%9< z&97O6^#*9noN{RZbVlLNyW zJuv}ys@3O0Hk$4WCd@ynRDJsx*oYYGi#Vrs`~gdIg9VA?gFzj*o$FrpFCG2Jf8x;~ zu(s;}Q#}VYe3hb~oGC&^qpX{V>svBMcdRxvU6Rj{v~ z`wp1|G#MQtwHX>PxbY62jlA2%@nOrEElu^GJZz4gc5#tZk7YrTwT!4Qpswol;7XPT zM)xyTy9^_U_i7Y6&OJ_}xg+#2fV=Xn&0i^cHL1Z^GtOYsix-F9wx0{m{r=!wyq`0j z1SXpI2zoBb@O{jm=J*Li>yYr&ns5kzmIBiItD;fHT>P z1&pvY%(rXp8Zt^xe<(QhJHibL9(>4d$h;Se^gX*$&0w$6h@7CWOtE)GUKWK@@vJ=0 zu47%HrUw7f?_i>P5Lx_)^nirvKm;7SIIv)fSvSQY;uccQ{P?W_Y4!S=OcI@op$Z5k zm+pbX>G)lwp_7evzf{Dl>KCTp(k97Uk~9pjx}Y>_%u*fgUmcAy@8BE{(Y^Aq`RZOi zq=f}vnZ#dwAH(ngvodz(a{L9dg#Z@T5Qo5IYYW*?!eiw(86T=<%t@StgV9*#T zB)N#nsDO_lz*Y;Qb6iA!{-x7#+KTnf6+;iF6FMA%2Htlh->2TG{}>i%!X(e5&s^sbw; zY(M@C7^D>8Kvrf*A<#-UH6y?O?n2oKMu3noL6whjH{4Sy+#tz{_{GirzihBuo)nI{@NltM`=i`16VHX>6kQNe+bU8^KxPy+72Eg>uM#GnE~79Tcx8`Gy*zMiY|*x6lWbt<*# zY7+8!JBtSXSV-eLJeY~OoGtVAa?igPO>_RZ#W>{QN;7t^5`9(+s_XM)tSeC3t97|I zvn1Lvz1AsdkqayS2B9m!Pv+BD`9c8?{+WmZ5GpLM(>>+Tuy(@bX>&~49y^ZI_GHYH zmn{3&vu|JWT0rv)W{0A2QUpr&Rp_Vss=Bf|SRJnHy}W*B?^7QYh)?27jysB@p$S@v zXoA1}lv-RdPeU_CDut!q&uEPn6t|@X|6*xelQ519WS6QCZD;>(gMb`?;OkQTp_jR8 z6CTUWqN~B_v?vDieNz#bSdw)FaPay>7HR$OC+cPsvGwDTSHZKXGb2o3AY?)gXZFHo zJ`KcfS66sTJ0@uAd=Q!e4T0q8K~&Y%Lx#ucSaWRfTS2v(9-1c)&07E^{K;J1rS3CR zy4=o1Rtzi1+FkzQqI}2OCRr#23CC9F2PF%$Ltd`I}RgdX)h`dmkdnPYM6H?IY@f<{7>Qa8;l!!_QkeaZAzJ zL4DSM(}KA@sfBr?NVnH~gUm5ASObkm%|w~}^{fqzL2ZxGbK#6bv#!hP5z4DDiF23u zFiakQi0^cBhLv)HHwH6g^w{I-qqKG$9B#3JlJb` zuS#emo??iw?U^Hb_DNGClh|V$>YksBU4MmuyS$Q)@G|1o6|1}>=9w=hlCtCP{SAS+ z3-F{ht%vqmXj}Dek3PJT-MUvpm4_wzJ~_~#^+io9@z=Kuk~nzfLD7t?b804({qqtb z^5g1Yt(8=%G852;z_Uthjs=IIgL=%|vcaWcLu=?0$JW*d4F3aH_Jm?VC}nI5m0PEA zg}H5unI}F$<#Gt+xIwy}wyB?eB_m4204<7Nb(YHTkT*1nYqOS|S%>#&pfNKa8*qT} zB993NgP7h){lzdNN89{qB7>_o585u^02H@gzURnPI-et%I8ExsNpRM_4A34O(pQ7 z@G~fo{n*T`d3L^Kx6W?r%E!F#@54-dVU2^;AX}!Sh5VujvdT8jbQpvop?fFugX`Jr7m!^AXQIU~~IU?GO&uvIu#iGCmP0 zn9N!URd80{%oQJ9rvw!pT3bd=+;3Hg@6M zDZjHb%2C546yU6YG!R|twKO;VVBFRFUs{{mBM`5?%;g<|SfFqy!39s*GM0PYuYWDw?@P!5C1C3?wE_jJ*{yxgHP3@+dr6Z&Mnk)0Vu?NNQWUz@tgwE?1 zg_b2Aw4Mc&lrHt3?7GzRJ9abSxGszP)wG*MyT|G1`Vsy522GyOfknP>PtA5GK(bWFUD0QwsCZfmsltyOSj3#3G{ZnyLzaRUJYiI z!5xmUA5)d;9;4qSPOiy5DO|Zc`Y5t;js%OsbkH!=AX~G5L0ywUf#A9$uur#MjJ^v= z^^ckrRD)zI4PXna(ZQ%N7D{p%k6!=kGLGyn+e(%P*CBvtVN~dAu$$j--RSrywFbBa zXXwB56Ag0I!FScQG)!V-9g7haC2(eRhYj#EOgT@|b(AOS^y?czNS-jR)z=2kDd9(H zfT=NosEmn5iZ#9z><|5K$B~u0oTC*wQS)M_(F+nak%ha`!$PD!!tOp-s5#XxW|1=x zM)f1)?jA(!&y#<(u+`0HRE4_V}GM%Zffd- zr)KSqV@?E&M!;U`X!F?`UE#2ZX=ca)Foy|WIcwk!mUhUBV=zq%dCUcgs;)h}q^U(M zsY&{?egFD)mugTB39Nx4d)ZUpSI6(J@*?Ko`2>}Po%>+`i8C^hGF)w^oN#RVza0Ve zJ@y?OTylgp%u!|3CkgTAL8g0Dz_fU0=PM#7oaX8Dq?28EK!shv?JLm!epQrrK|!Zy za}^l>9=7|^{%)~;>Ind1yle+&1LhWA_ejn(yB_b_mi`|}X#A9_m&_Mt+wl;kNJ8mSA-^*97ldV~4q6qLr^T+OC7w zlY4nFy)s7ndCTG$j|;(urVk5J3S*|zzls*a0QE!7Dc#y#?n`QREPw#5yP!l8_>eKn z&P$3<)&)J^L+)ob;r#ZOW)hd|K;{BT$acHCZ}#VY71ulN5P8p+A^*;nMa6=k$J#<& z^uV0{SMKdw;exo!%+^fPb!x~)YNFGiTbfr51(~@=WF#QR4=_Adb4d%h4D&BKsHN+JDSh-i__2hz`vIKOJ@4LRKv_HCW zWNyUfke6%ri;YXKmF08%nlt0!BvRzGB!QgZ(mil}>*np13-!{0Mv1wf@GX-s>#kKd zVL&b(?=BT)=rq0>+nkws2fcgtF(H0!kgx`pH~*>?7YFPKrSsro1)+`knwG=d+bWuJ)W@D)=FHC;i-Vt$cRrA! z=z#qhHSByOd)RIl0!OtGa)|G`{MNRuzy-n`KAe@+rR?R}G;u+RU{JAL`QD}{@~VI= z!U-Uw`)=hEyxE!2-H5nD)}7PJMab2dJTu___k}>jKO(FwWweHEy3E$2*?{{BL@EI<EakZm9e*nEfxW@OUpD0RCy4o_%#lu$zvm-OgXx> zKK#4*uUirN_`;Xo*nqopR|Rw4_2NXLS&x(K%ggDc&(IfRL7}y&4zd=dM`x=sokBA( z0wa0y;13;fn~KO=F%8KpV)e1rSYsqc@iXc1IWxWBPqZA+gzsk!(0|lB;rO(Ey6DE)U^Fx zV-8C=!?WJoWnv`}iH~{3eY4Kx`?3f4WSpSln{>wdlX-YIX1BZ0tfAG^jI&dsjAZ>- zzpP|vm3(2&Nm-+~9-G-ug8?uXowi}$ckjD(9z7L90$Gf_pFBIO`o;=&zsZ=mbL~6O zp)N|g*tItyW=zz)im-OB?)cw-JH8C~PZf)1EYv>yJk+Q2xJxxTyv?jxxHF=l zA=!X2qi1Zugd$U`Q$&DQ*y)u9yH{nIdp^xhh=p%+!OZG#+8%9qLJC0fye?t%El9+? zis)3fm%mGXqjg%MDR?p`eoJdJn97LJ+SJ8|-)U%GiD^tN(P3txG3#=1{}ia}tlb!H zTEAT=h2=Uw*DTI{bs!kf5rA`ch(vVxD7bWH^JHkY2u$r?D^|r)7Zs{bYaYKNIYANHDR6Q0RX%|w&8@ff=@m#U7Cqctw^RB#X;lZ)3g6jj&cI4!s_BXkHTc#EX zCECb~XE`7D{S(*i6B{+o#>YBfBy;xtP94aYr;d=i;5?ZPe9-c#Kuhpz5;IJA=MAb9 z3xC?AHC^~wI#ilHTTANlE6yrg-$SRxe-^{E`~3Lic0$hN-Z_ViO{IWt#3c}QQ8a=QS?>3B5XF# zKblw^U6kG&CoQnZ?l7Hav0raK!p^?eYtq#Im0HYyASk`Ifm2FameFN0G@AYd4cQ{Re)2|5}t3$C{(ZRqD*v3OvhiS3@|QyXu%cKd8HO8Gb9zj+av(eKj{^ zcfse&+7`c!Ouks~^~(q)0_&V4q0_Aqd|(}RZof$vXT7V4;{@e3%v0cd>0SeOa&0Te zQiX$*3#nsZq9Xv{nFwc>f=gBoskS@|fM6vbk5}rM$LxlEGx9jKh@8MVdHl9yAwz*{ zW#f3jEh=cXGW}*z(Sg=Uj8_7ms&dx7f7E@3g(2)Dl*~~!F-=XuEXuEGZ)9=4*4iI4 zt7i*k8peaAf3DK4PiFpe#Za$>krNfS0WXDy_Vx+Ww;Eo| zdwXq}(cqMqX0*R2MgsgqQngdENzvTpLw$uN>vL7>eN(;qEYZaCj?kN?0o+D*8o8s2 z7`(=wR(RNu(X@>iTeUk!|2^u`i}wMxlnn6mwz+0E^{%{{}i{b@4B2n@3mp zU0m_|fv>QuibEM;Jeb#3}{1AI_ny~i^$MA8mj^d)-qxB=xqT zPg-qt3Q(|=pn}N`UsU*D$V+Z|fF(jf!0I{uWLS<*1c9C!kj6QYbE1d-)EcEwlzsYv z21$GN?@dh1e><*~B9x-Z^VZ*!+5`CJj@9Q3&jeAkIu|t>xVITkZ#M?n2Wn~mXf-bV zgMF`(5rLV(`>ThA<`?;FeK@{?Z3kQs*4^hC&G%oMZtkXWF>ARiq0Q*qmw?SEYZSkf zB-Nhy*d)(6mAL;qH~ZIIN$8F!3~i|O7FLj=y?!F#`#l4L9>Wp!c^6QL3?JN?_1yfyMIvt$vlpLtc4~AS=Nbn&YTTb zxNeEvl{RUWjou*-IOCJzwK@68c(<*;D!S24iDheX#S4KCpY(k={Ee}13znmg3|f$f zmF*vk!zv6-AJeU;JEvKd=xHxeN#vw9PHW}-H!C<|J~e)#OeYBx(lS)B>!$U>0aK;i z`U_pM19_lQG98~HV4g7c3opz`@RaVgkP&$iqRFnw!tbj^tq?!E9QV*f8&YHo&@6@+ zull{l0R~HF&3XaH#bD119GKvaZ7W+-x^5bTSrEgSVpIz2q;%doZeZ?QqV`!|8>2a1 zbCb;MU{nnf7?(rhJ;_la^bJDHg>y|sJ?r@mW!r7(8#*%>`_@G73Bq33@g{}Gp=@wk z$2J1&7%1X(==IhDpi=$GEL$J6uuG5M%Zr~jZ%x1Czv)~v^xMYFwhl#&3(Ir~(pj&g zlMvYO%SC-_3Zp&aA*sdj(Y(3=yRqPkF_ur)MDFFm9f!MLgVWG+WQf*<945Gf7}Bs# zO4fY7vK+vH@VNhWot~7AgEiM!JUTwBjE+rAzf4BEu$zp**N3igb8K!){h+n(pVk3e zZ~0N*{EAt0)w^+FB0Do1E?~rA5@PWijT!UE+Rmng^JX%AN=Y6JzIv(u>A2FL(+TmK zv06pW>-ifqD=C{Efeyt@Cc(6hZ*EXQm$y^|D%XGy%Ynffe=@B?xAjXvZEna-Tkh7G zOYK~Ir;_70b$093*4HO0sV(y#x{IJVpzisDH#X`(gZ zL(*4y3zLdn`>b;hcD}J}-0J?lOOmzpuU4P6pI8G-j^K&H5E96{YPo7H<&T z(G|^lkN!d=KK)1DJru}79Eel4Xi?kU%E8F&0D=nd0Y&x9oLg@VdavJ?>Nh?R6v)a` zJdanbzI)MOn_=0W*PnZxm*h7HDe|1w6mDU9X9+o8~eZ+?kLl11+ET2RhagaYe z^}UVRr;lFn*J?JHq!GotHm3ZY&61DJ{=gh{W4L>{uZ+s75cE86U!~GspuoXq?!+ZO z1^WiNE!*}tIC3*`gfPxE#PDvhygU)R9VllZ5t{<8G2m(E8-Uv{NLeXn?qb8S#~JP6 z0It;h12w~NpL*5QNveKg)=k5KXB`o9-fdKP)C2%2Qf)AYZlUX={TI{{S-01NjHVNO zI@51xjG-SY%(`WL>}Iffj;DU#U~g_LvPRogh1IIUd@;au|#pq}#PW{{vUJ({EFq&(|Quth;sGk|U)at8I zZX7L_{ojtyx8GHRcv&24qN`pRTNiaTrUQs{L|geq7nV$k&~m*g0IGN}eS1p&X>jcD ztz5rbcrF@w@(4&xJY)I!`l`TSi0bTp*E~jf8HIg*j=cjj)LJhe-L*L2 zqNvKr-XfOVYMMEDh40XVx^RE!P4%klbj4r|;SDAQ8R5*c-FtWW1GeCzpo1YIim6DR zj?GJf^{vtS3o=fhhW91_V--Uie0lx?fY7FROeJ&ImqL@bu|*3go`q1NJ_x&Rsmus+ z$=Q_+ku!S|#ciqbBA0u@~e$uq0Zg=4bxY|!CSh)iQMDj(rGj#E!4L!bOnpWK{7K)TxzNYWZ_ zdJaUMalfBJ0w{oO@DdV1#HIwdn%(wox=?bW?x-xzoU_>P z89!Jv*-yaH4p^;k5?FGIO{NL!wFXA9`<8aizIBN=ybHt^@NR&gZ>C1G_gh2c5<_qu z68IPLeYU;j5Xlnf`gx>7Yf7@}y>#DcnkMLu8^W>h(2GiI7XIII498TO}^>NV#fZXBd;{#@B5^eEp zcYtIHN-Z0VUDC^;;PP<=2`Pc_`-*n3qzL;Dqo$k22EdDG7Fq3(Rq7pcqnno}+52MID2~KO7R)Gz@&mzcCDtY; zvN)9c2+SAl*Xs(2{aVu38thJ3yaqPcdJvuAK}8yVPi}81Jha9fqJBViuo85A4!zPq z^2wZ!j5N2bn^}j>uP;@VF@Qrl_~5dHj*?z5CWrk08{FUUPHh7h-Bi=dYTUlHG%i0N z4?lq1+7pD0@EjJi!5sqTRXJJSr_KG*r9)F8weGn}S!Q$h07+AE-f*L( zT1x#)kF1}sMhS2-N6+Mm*0M35ovq@RJ@N;}%o+xge%Ppaad4?;k!1x~gRI-}u5pL+<6(|ox?gJ za6+hFUVLk|_kK9t$}#hoMlBhf64&)WXZ(`N+p9{I@oQq;T0xODQe;JNiB@8PP8zI*RTZp z?pWKG{d)HEF@=hu6e230p?80g$tSw}8%m>J*4Pp){!5T_`j_YyRR65bT<|VZl&LM3 zCm`kO`$PFS)S4WGOtL)N)|O%5z%JXSc3IC&U*5KWCxy3zF9@AG)TTf&+ zvHW zUx-_7L)N@Dioh;7t`-^cia3?sG`5O`?qMfI&JF_Qq}mh;W&rh- zk2+E-O3`+>Sj>X;nrw7B2YCxS*EeI))8>NV0Lqzr@ET9jc{X0T@Q7jj@#qM5_@m`p z{WA4~3?tDR_u+U#9l~zG$R=ooVbeYlVRzIw)7qT*ymkmUw{*Cq`}jRN4?PB+3a@re zH!CRLY?wI4Y&YiqP1Gm?`%QW_-TLGANE>bLp^1i zAoV*3`j9Bg_5zcnMx>c?*ttxp92`jeokw*)%X?R8%ULo#1#!L8n)F%ESo+#;kUKQ; zmJTk$CbdlYJLYeRI5Y^3{ygzgi_B&k_cI|DbdqQ-3-fPvap#QGcCqn%S6f`M(CXt4 zifoE%ik{xTmJ}0XSn#}`nANLwI>vp?uT`Um3bZ4XNOK`WY;&w0%VCIQwN6Ny&~O8g!v=`-ATTvLPKyU-S{P-H2sQg-5cw)G^C&gcxM5Lu)T-SQTvu zx&vi!(seCdY)ZQg#8+vX z!2mOV;+53~Gx?`S)nFRj+tH*kGr?E;mvo$T#zJD z0x{6}n`*iGABdJ)r+z@up zuHJYUSE?=LT*C&_l$G)Y8aeqo<{>dPZd^NBsMgH0-VR$&r9ulTqvsWbSK|&ujo);C zpL>ZI3;~u67l@#S8}BygAb~Z3aP|+(D-tUSc^#XdUX3cp4Id|MvryY$brW4Q-$F=W z4*IIBDb`fR-UcR|M=SlpQ_CSu^uOf2A+4T+)r_@sC^lOv>+6t*H@k3O<$HtI55{5G z7jwE}08?J@y$u}Z3p7v`PXF=ad1xVSUS|(2$ju?Y_4G}PTb>mf_zgkW2LY_=i=Nqk z6P&MOi^vG*J-O1eUtUfxfrp!p=VG39e0#?&IaWWR>Iq0Iku6M!tdgeTu!H*X2(NvR zJol6;*#0+vG}cXk26!OobG`BCs`uTINl7A`DBPpzg)!@-h!$Hy zxVJN&70RS9->=69>)thf5bsH81LG3mp5T@CpK|uR(r7!D@#mH)Q|Um{GsMSX0jdc1 z+PKN4iAa_oe8D;A8n87jX+k?*Y{w2fNqs_Qi;6_8!tpn)kiV5PDYD&P(SH4XzMwVF zh+}jRzUF?oUfBq7hxk3eQtQ5p@++hnhyiuUK;%^B1QXZm9ueTBnS9v7HTVw}NSko8 zv%8@DNES%0uN>6-XT7ka9h2HjcY2rR)xRK@e3el8X%OTxV#zw9A2-TS(W|cy1~sI{ ztKSr~*tpHD%)#(id>q=(SsOrp?Lp8)3NF4sZWQVCwXTQ ztWD|UpOOxssIYm{L?Dj&zc5k05aaP02?m{uleO{3urY;!<;%pwD=*&lvU6=-@11=M zQn1{v;7J4hR>V)wUZVnh?;VY6a#wovz?Kefm#>!7;K|XX zZHgwrrlMUC+1VUBtfjZNw|?5Q*_%5cIc0wW6P`R+L?V(%TBh3Rg{A}Ja0giB!jurR z!g8rgQ9Wxdfj_l+ala8QeD1B0lBjraBq-ubG-Yj%oQo(r8rP^YVJfhYy0RxS9`$R# z9H3abw4=Y;fZY^n);6x*w6C?PZF|=Az^5W7Iso*sdgx1aH_O*6KRuVyx4q6xsHme5 z8?9``%L0q3cJ0DQskS!YDT6~Kv6{_)IrOWMQ-OJNPrO!Yb(C(zhvsFB^ zDcBsI^QdAD3AS&FZM?9jI`2D^^KhU5UNU_w{{(j-a5S}yq7-S;!C2tgT@z2Vr$f{1 zHPwB!7nhW{AHd`Izv*uw$r~W4$z({Io{AQ{{TZBx_-uC2BRT^%RT}X6#l;ghwWOt> zelHQRLo19^EtB`9{rHj7iW(iu1KjgVnOkiJo=JU>tcL6o+Y5YjTbFtmMn^mwR(O00 z6A+Up7&cn-T<@x>adWTbKD_)z_qsk%Lf}TbXxyhRzO&W6nz6%H#~Vf~PGpzKSy-BT zSV}_b&zdTMdyH2mX9))1%&d&thAv}Qil|tYZ_J<2Gb*r>TL!{Gfb5}&`h20{jcE^b z*XU>4^Nv~G+8_>W2(0A9j7Q`^yT|R*Ps<7yuM(q!b;mVZS1P3;;c&GpmS4!<3 z)b~9zuyDEBar=43<_%%{^n6~=&(fCmsr(ZQM}|yeEITn@E9R&)8W4C^HtUrOAG`n= z^~4E6;7hx%oA&5Y1SM=Tse-rV~8>koh7R*fR0x&bteergX=7ok!K# zN#?F@bLK9{4+qK(q0nC#NKFGqexEJgsAyO*7#;sI5|tjhgDy$sr0c{xEu>l3RDidH+~?~x!;nC1`7pp>Co z5B~X&6YtMyH_wb`7bf}FdYT`>Uc~}~L#${4#2}r+D0?WS~>cQ{Klab=KI-!m|#BnGpzPf+M@i8&9$f0 zpn(Oswb}Kcl zq|87Y>N-GwZWWnjz7BnfGH59835JvfN`3jQg*ZZkfKfshmtzRt(0HBof*09Uo7O_h zXYn7o010UZ~RODPNIxS~#_gsl&WrWYq_w*)Ef zVASv?$m;+pee5zcuFK;=N7~7A0M$bI6h_y9n&gkOL2 znAfHJu7Bxb{smEioMo=*@}^qyT~J~r#H$6FDoy`Jv^ltNBmH)D(;A9igF&|t=LEII zts0it(2Nb73wP^M3CBuplEX8*&M{0gQQ}A2{#Swu zTQDHSvF@8YGNB!zl=M)t*1xCl(3@PxtJKC>qiVLVSk(qBUJa!MmHo*icG#0%T(<6q z(@r$M)cg+J-k5QHG5FE)zSH`zeBy-Gms4Lc4FNwLus{g(;_>;?Ps(W z5#!f>-wmz}AAJw4m{A4SNgB6L+u2U5EtRYuqD58%dZd-+KC|feLbaHA`EPf}s3ScQ zKi%GW2P#G0$b%HbbJwx>)q9x#CO1;>+6$Ym*nltlyTZ=zV9%22G`Npf=IUEP@*5AmBA}f;==++Z>Xo6kaqpdj@asVz*9U&Hssc{yf~jT0oP~#n7BQ1 z)b(0rEUTM@`H71_+4rlwEB76rbOlRZX4HZKc?`tRI$f<)KVF8vZMOk*EaqfZA{Ekg zx6NJn-;Rf^msHfl6il|cw{@PnK%-6^y*<`wU67;Vj#_VIiB*8zRO9=x;;hSy^-aK+ z1^YZBG>(;yCTPNH%PlpkS2({~VgIE&jMX;)Z;Y6DjXyIWXf!c#)`D8jM`oTF@Zm6& z^?P+~jt>B2k}}elCe#v|v0T!W4?R0?^yz+ZuJ1D(JA3>j( zwoxf~@}d=4)~MHZJ(d7Hmm0T_8f8C|XZ$@BlBJu#hZKSRc|gO^6)g$KJsx2N;3}U} zeCG=d>A$CZre7Cm#RPTChFJjEHL~ZayvMp{U*~u;4y&g@ddXdk^!qhea6y5ov-`Y% z^acQ+Xsf)9G4ViH&I2j346G|v)$YWcewZK;ETP|<`cF|F;uoZkL|me~7aiH>Win90 zxE11E(x<#*<$cHBz~zKj-s#}LHqDVq4lku$Fs@h}LB z<;_pp_SjKfa{|oIKY()8X|K@IW?o`xvgDSbhPj;I$!eyPfHCJ&mkST*zQ6jqwY|07 z{o*Kg(rPmaq9s}r<%z0SGR`No*#%D_S6!^eeThA`)S|`EO$`#zJjrWCdF!>B-5TdJn^m;E-^c2psN# zZ-ceM0J6TO6{z%dBu3HKBouQG>rdtRUIc!BK+ExGi&ogFwdjtDj@YvwSC?+&>Q=Y< zg%r)x#qlgeOnzf(TZ&k#eX`?jJuKF^VPmFVEotr?6B0|w$&Lc?m{y`d|I0$dk&=B- z;C>o(yqv0_4y+gP+5ts2;xWaY|LsWZtmIkF3v;umk(u`*&YJwL9~hi@&vgb=_0DOf zFN1_MTc&`(XY9NF{bEoiw+&sQBRV6}6Icoi;I66YvNIb(5AuR(-TG2q**7EAmu1Zh z5lz-HSJ=QkejtdHlgBGUaa>pro}BeQwo!Y72?Z9Avt`<-aFakzOpn5t)7&|7)vo=SDR`ra=} znnH_u-^`-lKQPqAMj&a~@lY2Cl|vk)5F+abC)sxAU#~JPadaL=0K(8ogCVvZA;7VQ zGc@cGfl1Ab_^_ys^&BOC{ubeZ+5-p z8YyF~&Cd3T+qe*YvN1Z=<`^w$=Hy!i@A@?d*bssBg&pk;X*UHGP1d>jooflg zanV1fvMnzccIPgrHn+4I|1Ww5a$3Mxm-4`8hC}2Y;@MONfMTN-;MxzEOD0bTC%u(tO)#~tRN={vKoc{BX?->P zy>HI%q8I2)EcAsG^cGb~ZO9)=+q9~!rGYgIU=Q$*4=K5TF;73Tcl{#It_NR2%nNDF9tox>kw*_|)(X7a#g#edd zO-^{}Z|j?`A6I`!THA5{SQ_cR=o20qrT#J!j5`9mzIoOFfq1|r4{Jg`GP*a{>p&AR z*VAgzlA01B;nTHruM%vloPlrG6rbqre*L&=I7BT;>1vY&I`~mr_yIh#Bsde;T0lG{ zY6&lXpNXqpW}zy~5B#ZV^E>%n{N2tjFj8o{#u9TXFW|T~)bheh+Wc4g&rA#ZBzhHkZgLs2}Kn>ejYHJnhGH zmo9x(dZ_llSgDD669>+{X*-vI&+R1WCqr$h(gJ|m43m%{_G!#x)wP{77+SgEfJnRF z?9@UZms0WFh>+SVMg1$+oRk>9Mrp`JbqH!6*{6o+D=QIXL3R7$za6ZMj~g@nbui0? zrPMMx%tPH&U*MGd(zU!9(b1x z_c8Lg5a!n&FwXj7;B+DN%e%<_c=qIMOIg&1miNBzlDPH-{2IjGN{KEoPJHlvvG|I(81~>q$0n ztWh7-#kI$$J*K?=``@X5=b0LXV-8ur&Mvb9U=W#cp$+`2xSnI7yIMKt0DNNpvg%js ziMvf3K8&-exTt+$np#7~UA|D4{VRB4sGc@`_=XBPbYNl0s;mP%p*Xsi| zMYpC^ZV5HZXSFM$!Y!6E9nC-~d1!E$8^3wiML=L!8DxlW$H%4CoOqc998q+RggqxJ zMQat;!@2HX$;(}^F_pc0wi+4PbRiY|C5TegG$M{VXMgd})z~<6Ih7ah=>(nBG7;2N zlE?qKHb_yTY-)fj4|xs9GMfMxtaUnEEo>~D2G$z2O%lM?)zAaDkbkXLR@Sd?ztMquYm{!&ZoFByu5AkK>hCE?O|E zNqO`9TG&ZUFZizvpXwhv!izWDM9x2&yYt_U-qj6VHcetf{+AIb2$OsPp%h8FATZIC_Mw?X#n975V464+0NRgt7eEOBzfn z{+rtTE~(@85?W9K{nVG$F8PW7OYQJyv+7j`I-?6DrxVu7_mAz|-0iWWwvVVYEFQ;5 z9?*XHp<8fSwZGrpxcJ$}f`4{U+AuskW3Fz{k$by5U8mPY5f1k3-1m6X6HcuLD&G@P zZX0DzH}&>S9c}!Kck2V%<1>5M)&GyA^NwmV`@a5+&e)MrL;RW{8xA#*MmL_5ad|kx{*pK@j2TGHh$l`8!6p@JP3y zx@%y3jBl-HSH_i^z-HX(-@hOyR5*JZbCu!LSN?9yBJ36YPR>Erc|ow zFZKe^t)sX=;6Qp%U906mI1rO+xte=q-O`Q|E7;ENulmO4b<}M|W+oa6E$5t01~zyS z>yz^F{=fKTpF=Bp$^bPD*$k9i_!qH3tv9#^_0@8DoB1Y_4| zO)ph~f=84L`UvFjQg_R^^cGH9eQ&G6k5MP{8gaUs_qiV2Rp8=cyKGY{R@yACJ= z%_L6QD~G$Yjhvsw5os{kMM|-mY&uZ{uzTe>u#taK^9}+S4fk<0W`7I{15>XZu>T{? zYa;O%ba4i$_vjYidQZ%ImYegpHlJfn1qj;MKii4HCl=j6&fPDx*h`}>wtfSu;zT%B zs3xHQ6H4qR0qhnqB9^OFad}oT9Xp zZUnjSiTj4l`Q)3lyibk3i^LOIUB?L=92>LQa(CS^3MSm^ga?fNhZF4A*$7y^BW7QURpdsd~hhryMJE&pe1{6-*L?FS_&L3plc_oWX?sJ4| z067Fu<+CL8|iue*|3DXR?R2QpvUK%3rvDBszBW{A)%AB_8Mr-%~TY31Mjv$L$= z=6mMH=K;TKjP%3MfO9~bBe?|Q_Rop;hmS{1R3^25f**~Z$=bOnKM6UA`m4P5K{CTP z>~Vl{f{w1HPI2+C^6jILnMri`=>?L4sf_dXs?-daiStU%t0u)sBGXU7f*!gQmzfHPD5#8sO)Ue~fzPmCHgGRY)PdA@$jGaJFLz}nH7oUPCdj_9 z91SjgP`=2#u_vyi0lTiF12(pX6QD{S8G2K_RGAIO&n*WAH;lFAC>B1qNlEKky}!2g zSRL!om66J4_SO-7*5-YXI=7amrynETQC>N=)!F(-6w_%S`b)CefhHR;!RP4i@w+k> z9GyGx?|Bnn>ZHk^e3$PyIkzY^ni1lA^}b5oHRm_wJKq#~pn>d=YVcN+v z+iAlD{?$92BVEElV;OegGkPavS8ckHS1w)}rLVt;R{ktwwaYOv9S#qxhN;CKaO8Rk z>Avq(F9#+KByb+8NMxp{ns=M_PIe59tS&3(#1g!;~i(&eY z1ZbI052kW@9!WnH=|r>fQm5l}h5Ai|9{UqV#+qI-QsJJ-Vbm&bwKxz);nv$&m8O;@ zA2hYJyhFC1PlUMht10?d+8Iy=Tm zjv$#$8y!^@)YS0u znWmDRl)`!CfsDCJ&EETdBsCCmfF|dB;Qe>W-x*Vjb~O?3*VpWJkLQ!eia7Xjos>La zdA1xc$P5b~9nitOx8OYHSvC@TCH;)OwIxn#&uR^AUTkR<6{8H|KB?1tJ*uaL9ky6+ z2gxa*aktaV+*ea-&XHV7T&N#L`xJZjz4<+~paXEGH%iMNnlserGe*h^X7L!GTIQWk zoz^r^>eFfzdz{1de!m}2TXe_wRzBY5KeXtF4nT|#*O)p7oJz+wPa2+ATxI3I%Q zUFxRT@)}-}J?Fzm*(T{K|Bkc#>7U(LrbjP|;O+CsCT+^WwV85W)1hW~HV2@5Hyba7Z8K%OAHiPFL*=D=F1ZF^}rj2Na zZ321ah;V{M?G<%(t*UWSU(o{216&O%GP~!VV`@~bTA^WlATJbb|C@$pv4i^b|1lS7 zywhTS|CQSt32fWNFU<^2@2dpqYmSCN(o7Iy$p85_0Xk;9{N1c5q;P)xD7Cm05P%-# z-rS#g-1~0JVTP`0bm*d61rGt}mnFWILkaku2Q0N>DhXo*ga3Z>kKVhocI-+A-8ip+VQKI=n$ABu`E4tpJ$dMeQZ5&OqH8q@0Cg|c}tEm-ndh=p)yMX|3!d5JL zKi3`FNg4U{Vadx&ayV2tPh8625OnzW9$vOJmt%_!K3~xM`PM`?HEq*(9C;R!?(j== zT*Y|Ni9o!15QlHF_foZD80Bn+(e&m`w^=v7NII3PepBb55S|zcTI54^`0>xpbCCSk#DJBXQkJg_^mF#9U`KJEU`9s7tNiP2%5 zuV zRZ4lZ_2K6ibOj#2pk+15Pb$+GyqLZ9b*#xEV+!Oz#7O`wi)e5-2}unF(irKZaidpF zhVMN;`8_1rJ7Yla!+_LowH9}effx-hNMs6+jxsC@w*Ev@-WMOCe0j-wvHBEkoYf8} z5{&tQe8a93k@-tl24CYwNsxq_2YO1~mSHbZ6+h35AK$ta^X%^0BIjVuz;Xhfz{^ZW z;8xkg)`w%)SF$Kb>BDoQx1#B(DLM#ZPrsF=?NAE%A+K^%)j;&7(eloUXY-$N)ZOGsESB{*5hV zfe(6;ZECh*?^f0UGf?olgYDb5iQZ*0pPKlIc{2slds`2iWpYkRkpVD;fgwo#bi0+) z7-$XC3eUOnYX0JoN3{xwB>0v9a@Zrt-wnxG506$Ad2}>|v8|}b%$UZf7Bm#jyS%#y zckl#(KH?!sKLkeXbxn>jAcP>z~+K=;lwPYvF0IivN@s9gLzCu(3=KyjI7 zISA!0TkF!jF$uuBoER?$xEuK&&vRShkJhLW`PAMsou*VU*`Txdhw`w6b_CL5E+jGy z9P{|cA@U`W9(h6TZ$yEKk0G zoqyqNWvuuxv-dmWwhfq;gjo&iGOm?{ia$_xPv%e(`)|c1|xvzAX^h>ewOeAAIW~+FH*@qMn)^U3+@H&9KV0c)4^%vI)Z4% zI_pLO%s&nqOwW`8{2~hp?gw%EnrGU%WG^tUWBxw$lY9vEQejiEVCX9F4E+%2aFeie zI#E5QV{|w8qyl!qt9KI*)k-N2woi%h0zZN8r-$US&(yc59u2UyFWCtR$;3#EC5wTb zKFw5*9;_B0d26+>t=Glom8wcp%d2a<62LIS5f#N!kD@3FYpHS1ia}d8_WbQ#)9@A6 z|AxZj+i?4aS|5$ZyvoIRM26^>9t>YRdC;i0PR|cWmf#S^I@lu5O!^ADhU`)~OCs~k zC>)St_I(-8!Y@JjJ>#yYG>NGYppYPgaC!Z}MjOa0ou zb-E5F308~4GYk_Wg_o^tP2SS)$Nf3};e2X(x+5P!=YUOi02*;Fzs2*60y->KhKcj( zz2dxrPY@k1@g>ej2>)5i5;dIT+Ap(z*#0rr}Mu$VT<9Vm2^auMVz zfr2A`OK7?ekNREpc8L=5g`G(;_@-1q_Sx`>`W3fl+Ww;!581nJ47$zT4)8|NUu0j6 zleJLvk7m&2Q$x$=)`PPD&U=4k1Ryz})kj3y_%RN?8EiKiKvh{UTZMyQ0j*P8=*l{j zPo;`++G{bL$lY{0|F#uP;Vgc)Q{KrEXnL)qe-*KZ0rsjHJfbERzf-;whHsX~EwXk` z3MqC8xhvV~(WT~?yi0kVnKZNS)*}=BM9{)a(XswtrBw!|s#|CnMQ4pzfBBXDT#$qm z!^e6FX|R{(x5rx!&oNIlD)g28Q13wbDFc#-TT--nP3pAy?hqbj=y6@vRy}j|c zgMQL`{;8VfS^hY+oNY`;kjK8&I|q6P@o&zCpj@IMj$fyazjLDfxFWJ5fz@#m=uhGb zRfE#aPQR1%X}2oIo zoVO~u`ka>PEMEXmPrK#__e3Yeu_9tt#B-~a8*|q70*@6c7*PCfdTmnmYre)+lodPo z%o^A{w8I+!tKJWg9pBXU!mSk7&v82nY?SL(8MaCHe0e9To|3rtc8t(L4!5m*WCz7S zHHyA)Pn{kKJa<*1VG>a{U9t1phktA|;ZB?Y5Hgk)w# zz_Sxzy1f{6x^rrdR^hJevC=M>np*C%syH0p!a{$q9@ITTyVy74GMxlC2g07Xj{ux{ zGl*7kS_@hA@XGHBwj4q;Fd_N0A&;0SFr#$pS0BP4i(W){J?vPS@ifB$xfxo(U_q(w zDQaC~>(RN>r=ONAMknBvUW}}>yV^!qV-mIQ4HeR!bmU(@!8lP{+uBi^xg?6~x<_1D z@+yxo&(6_(Qn)ltm3ckXWC84v204>`1W(i2ngNXT_|!yM;JzV)Wmzn*uZ+kQ)=mdq zU*wXT9+;f?y4+;?ZfwFo#*=ru_Rsmc!C$jugvaIV3>jiDyf@bsOl+N{EGX54fAhWd0x`rzLdqJ5O~czd2N=|YFN_wixq_Ettir)i=^@edzpp&NV4&NNi*pHgRqHRjHt%04($3iS<~(5 z_v7_tcwqhafO}+-BdD`}FY>vHRaW3aw74$Zi=`d*xJZB8e&Cw_MMsC$_i>82$1+dIVx1G>sI~O0{2e^B&&y@PAuy`g45AY?IMIx3jAK zgX`n06C$#vyW7fI_jHfPau?fF6PTl40QF|Sew)k8qv`Z$zddO9YiW*4qx~MrU(Vy8+FRBLclgEp>io5Fb$aF6*$Y=SeiWj|KicsTR9Ax11uF zl8>&a!D)LV++3?=Z|`(=9R%lSbh;UGU+#auI1++STt)B zi^-@hlvnI+Ms8BC3^~Vk1B_p(J26_zPV?5PXbV@HiCV^}qF^EMf>gzh>(G!-l11z>( z8$QvLAd7ghX1<~h_{ze0?gUw=hq{80A3n~)cHbh){glSUaJV;kYS19q3eAeIH_>6`G2vpk&!RJJK^~co zYV&?LcZ|lF93F4G=k0P#e`HI2_%+c0hjvJt%p8LM#f3De(Ms&w!L@tR+OqZ7>&v#i%x znapo-1AONJ<@1rsub=OC^*RqCod^a^;hiz7TT|vYFHBvF_})Aeps+POE~0ow)9Wf2 z6La})E}7U1QO7*|ytMMav&q@BY4v9RBwwqGCBCt8R(T^FXpE=wW9BVGedBM<^z%Gm}AcKc`g9Oct=i&EK*K z=m(W__3Nv3-zmROP^glTWp?>TDwBsly$JaOJA&Kev1;}p^K#@>*^=Ue|R}KAPF4* zwW*%I-~p3^b7^%F86gV&+V3WEdI8yxxQ zkKi!2Fnmx>^MG=aw&+FS^v-P9PzY}Sw^^J|wDb9tFQ|w>oaS6(iSw0dtqyoNi}$IM z4!42zP`@U zh{%gd%=g<|XSvo8c3eMx^dJ`aWWdxEP1X!}VhN1F#WlDwqE$6trYL+%pm5W9KKSx% z?VFM%H}WF1#{@YkC~47EUO3+}FdZ3T8CAG_#qbibb|qry+fqZu`Lu_oT3i7kO#E{l zU5<6XU2K(R-bdb#$YiTzwY)!`=p5Z3fIrEFEixoaCeGQI@KFLYX}-l2q=x6T-!x+m z%OdJNo`m*QkWkov>D1WdA4s)~-n{esPOry!y|t`n7n^~i~) z0iiY!vj~ULJ*6!5@+Eq;3*=HSw8kxld$Y-4?>{@i?GFeQPSxR-Kdi|Sd4jquU|u1Q zm&IoAo-VxzfWJZam+i1aQXVaTcH3|BSJdU|+80uD?}IMUIa&unYXIPk2UWs=)JG&g=q@Ho;glBB6w z+Y!W#SkKQN+6reK!j#UKk(=vB;dxy>ecfdZzg~I~D?egjh+%As>OIr7kmWxgk3mHo z+o)8j-ALAqNi#63Rz{CgMVerDVpN<#vFvJ&X}9C@@WaTbrZP>Z16Q7?D^ABz+S=+$ zBG0D7)6A}|pG31-`zVfK&5^pG3JjvMV^_!04nM4frL@RH^k$f68&`M68eLi4VW{$I zAnDEJZQZ%|is_(Bh)6=v#e=of{@&%IqB@?L$ca(vkCh&z@$@>9k=J**y)RevCyLi% z0IIp%)xLQKw8)Lf-P0PMKn{}oOy~^!ZvFGm+x_1Rv@8ov4SFR%BTnB<4ZAn;$W!9^ z#EKs5p{mS9Y8wOqsuXA6ych(sCZDo1K81VPqCNDkW++Or%0=DR{LKa7#tS zZj;Dc)lVBRDpW0=m({T2T@atON7GZdr3 z#&B%k%^+a5rcH&`@B12qQO&tmf(8SF@ec5q%j^LjJwV}^u5UY8@#a>c%ibfDd=pIA zq9u&W#RF%>BVfDvipntFOj~g(NhItH`~&2~3qk?y>t{v49@EWP(b%~!R%x~=UZ66> zYve+g%@^KYlg#{lSnap1>Uj#lD3F1k-#(PQ$2LB8c6>iUKkv?K?K-$&gA^$U_b=9Y z@IVuQ2@)7ElQXl81^N0}s1LdBMnjcv{zqzA<~c6oLK{zmRA<1r-N5}%SFvKxjQ&=~ zh+F#M6RrkQygH!E?a93xIto8CZq%g-*5G?gw1z97CMU0aJmdX1{%jD|$HyB3M!Ig~ z#K3+gLEDw=J5iq$qIsv(U-nyZOc%wpi9~K*dp=$hw5~vLtu$s`8Jxmj3a!69RAYE? zd$8IPnhfQUV=$}mp!W02GS5ar;(IURyrwE-<8I z!WE`*qp0CG#TK`o5>P7R8vVN1r-GWIXM?hz7S9IZS`UvN+z}ZWVN`VL`q&2tGhs^@ z!(rkx;4*<-jJ`lFha1bb-E{s_8z+y%V<~HVft4Y&7sQ>0 zDst$zRbANp>pv3kwbY!=Z9*wEuHBD`1J7QsMDfc?OxvTrd^Sejt#y4o zN8ixU$-&|mUJ_BKR<{sU%HRQ-?a!LRKeha#lb_^kxP=Q9O!tv9Tr0sKuS{`Mv|^Z+3M97n0>vd4;Sh7Up)1{D4SABrgaQ;Oc~=O7jYTwvm*pf72sN<_shk6(#4*k z6!P=``>lH|dsV0}I@~y9YjP^e@}N5^<9{p^M%&vr^}pXZO_UyC9`3t?_c$q?sH4TY zz4J1%vurgwNAgXOeZ2Rc;L|yTc^a5!1Md!4(KXQC=!&m>d4JM(_*v-0ge?5m3e_S; z6vju5r8L;|7q#9HTV1Z zcG>FXhG*JT(-wYQZK~ZX)$V2D=$pwwliPu)z!~phX)P1b5eG|-M421iJ$3)v^~UJU z_=lBlE=^&#uW4WNJ?R}2tcyB9?4jF^1~4d}L5>gIb@16+FGwvFT=oH3fB==NyqLAu zeT9+pK{l{hISbL|tt z=hAiy+zv7QJ@L8ALxM|&aiXDGc_@%Bh|y-!1S!>^b*o=nL@E-eEQ;28+C03GdXd#iXY}i)8!HkpR(dn^&AN#v)c)Q z;G?Mxj^g62J+}!RXMpZ&DjC>1hTG>C6g0VdFoE3se=;W{!Hc>H)`$9Aqv2CX1?O*) z{!j&__>XN5<{S>3^zwA{VXQ3*^y_G*>QS_fvlVi`=-wh;x@UM#h5XN`kn?6pZ}1N@ zflLsA>@q@IdW~3#HZu3)1O4CboeUpO2Ri6gxs1m8hKin`UU%~^!Q)?Y8HirYnb)gU zH!lAFl=WlFp!}t!naniJy2UOvu+OP9r+C^MEwBtzo$XNj40G43FSV9DO1tI}hJS$v` zfxA>gygk3hXC>KH7IpKlOWb)!wZ*lnv4CqtM-K4@rB|d48`W4nU@K;6kegS!{`(Ew zNnZeIY23?I9Vu&lF5zl(>Uk?5=11g1tF@fECV36bONgK~3XH?^jNG5&F$vk-@sXe0 zq2M+w!@BeX+^??w=uI9m#I4FzcTW<+4D521&!^oh2CSx%-SCR#AYtLW{W(RoLTl|Z z>%uXDE_jn)uXUw?R}cyksm)W?OcNjnbj2Q*s{v3X^7p)%M-~W=+C&FERAOoMO;`zt z5c_PKo?e&O)6>)Iy76f(-wv(<))&}>pG(L` z->(V>R3q-^Ba-UG3(`PX9V>>V*p!%h&K4k*7=Eb3yp|{O7Qcu6S(E+?_6qb^rVAB~xuUgqmokS2u8D#NA?|SYgo2jYN)ZxkH9B z1to)7P88R!>1>J>BX&Iu3>n7x)vm+m+ZpY$6)Hw-k0QvCt%@FO2h!1|6^67OT)0b0(E)iYfrxoWJGwRjat1^VQzA?g z#{!IQdVSPcifh-(cqT<}=?0GhX*sILh4a&&T~Ycf4!OH){uUE#5-`lV6Ym{&+%KO> ztho<{Vav_yj+q|Cc9n_c(DaYZiKHBU<_;G}K$}lbb;R)Mv|Peg*mcits%+MCZ6N2f0aJE{$T+ zQa<BtqT3>V((B8xQKitTOU)( zPE0B0T#edA)2dB8yvCG+W6r0%t($6wgV(K^`O?HM_>Y>{d3T*b&*aZqRc=Xjhr3n4 z-Xy-ZfLP$sBv!ZeM z%Lk>UU)H1OEo+Ms2+7^SBma8$PZ)5n)A;${X)DaU#)2G$jy!)mor}MDx%lM->jC0> z2-dEfY(UZf?>DK4fz=##-q%4Ii~Cp%31msc(hTgg<3f%Ph2IP)FNn6Vxb~)c+s>6mVGpa7)n>cf>W$sk zt=u*PxeV+J!k)c#@`8P2^(r8Btki+kA%Gq$dDjZ7{Be`(@0^xjay|4!+MVA8sX71s zb_odp2CB2mf8+<(@~@$C=j05wcnMjAHs-PC-YwVrMw%Ma)9+S+2-2{sv`}Q@`#Moi znY)>(tXg2=IguSmn?h;N+OmuDT*nXV4 z@=zrv*PM~!)vFo=OukrED*}@%ad&qTX(!yXDi6X9x%L^Ml$lDE85^l$}rEij_o|MaE0 z6=r7LsI|G%$p&KOWBA>wBuC7+)=7^&=1OCS4Wh|9>d^HiOe??J`#`4|tVG@_!!DsA zBBCLesv4c`j)`CB$^@E|fQe~ydMgX{i2?E{H15|=qD9r5%>n4YW~K+#)R*;)mr?jc zPaQ971re!)r9n`Qf2ozKjR*+~w{dcFZHB`~mUAi*Psn-V>1 zo|&29zR?iP1gSn;{20D%X)W7LwQI6)*<3&d?k+iyy|T8mZRe^RdOn5@N6A_paOP-YC)^1<$X&DQ5v{;>P zjjWL7-(MKjbtx+NpY=S*;8-@9t(Emg54oQBm^g{&dhG?Vw)CbWw32-!w$i>&CAfSr-AD_QR$L5qE2Y*t^3#Z|--}x92;%^aD`o+42r4FR+RP*r z#(a8X3G!G79l*85<>3edT;rvp@YQmoc$c8w?dH1mlsZfJ9+0wdeNq7&2o!TdaMqw6QXMCpO4NnoB9FLJa zznbq6cVII~JoZOmZ-C2}(?MCe+kuY^6ycXYOdg>qEm+xFkhmB^VzU7Ne;Srt`2cHb zo|=b@ov@0;#Y+W-{C&Mfti`^^pD5%dMFAn9z!Y4>wa{1QJ*)dZe5y>qWteVRw1v;j z+YdbKMOrl_jq{wFGjE*?@LpT;^j@P2%hq>%nC`MX@PjLv&HOGc=vifmJQrw|z`Bs6(NcH%RxxvqY? zLigp1ryDZ>sJ}RR)1-Y^OZmn9tbtNr3P{qSjelrZxbHpg>dXj_u^5$2MQ@M}XPo;i zaL`4A_hVZ$YfB1sL|CAc^!#18OQ#9UieY{u;vMnH+;#h|n$ohz%H7h@JzRWv`+q|v zx#M+Z#jcuda%+sn0Jsn+usN0-o{cy6R72oC7!{)!RnqW3#q@YI$mc9kdtK9D{=1&B zip!OVlNS>{J8c8d0U=ogKMwXa>>5ZXI_QTbNnHtdbeyr~fYm@y_+fY`yrLrY&BDLdmPUotmeVT>k49f; z)xiHTQm9gUg7toN6+Q4pLRCKF21wy5xY&};#PiX~tml!IFcX=k>c*h}PGt+8k|yVw zzKj0C%nPhB$8aWc7XJIK*+p15*cnJ@J_rQA;_9>0_+N;SDO%FlZd~}+M1%(%-BS-g zDMbncq~3*}!dgdTryD~WfF?0_TV#QhfHyZ7bKn;yKo__z07j!Ol|-ExohrM8VnY_0ocR=g2?yr?(Mw(IT!uyB(g86~Of{ge zwB3p+rL?gEtVY?NeOvHrn@8D?+ug}b=3>9 zY-UT4q$)SvG-yBkF++<$Y&Vemoc`yNnz9DdrqYjeESgRTDmU?VUVZ^f;ZRkBz&*t` z8hWPV+LD5DNC5Fk1cneMG@4-T12?6Z75;q*n4lN+JK3E=t45Y?9Me@>x0E8RD=u}B z_>5!Wf)a#d-qh;<6=UuQ>${e&wP)ABH@^?aGs#h=0&Ob481q*+r0wt{>mto6m60+< zSH#H@O-4=s9&xrsYS^M9Je=Xebr`2(y`2SbJ!gk2HyZ@A?B99obBzw4)p?a zFVZ(4u~e(5%-@kdQF*q zBO3D!2n5#4ejK~pTVKKapb*It5q^Rr)a%PG@Jcd_=QlCpypz=1D0+QrAL908LTd?j0#9}Tr)W}`LWg1oif{LRF#r{q$>?3LHvR@ z;z+&A(K(OoOn3J^sLXeV6;h8-*gyhys3Y$fQ^rUF>iBCG3v3 zc)U5A>+Jw%)meq!-oKm~^c<6(864em1srI;cV;Q3a&2d*g50Hb9KEZ*ucDfpf+u0O zVf( zo#brdQ=81eR3N;Vvk-M6=^EzLcc`Zq{2JI8-1HXUz`^#YX*|_aBCk|)Ty{0e?Ar3< zhveO}XU4gO@=Yyj1%8UC>-|JdA~w2rl!G(_)~5P=`Rfg%&(E#f1HJOU-?X{fK>at% ze+N=|b-o`vUvZ}~sY!gjVyT}hDQAS8T70WsB_1jByHla%2ichsXp|EDYQJkGp#vHZ zUOD`jiO*_GY$^6IAN=`j4VtbYQbFZySYlYAd)f=b`X%MHF$4jZ)(zs+v2f3EDzBuk z?*R_+UISW_Y7*cMcBJtd4P?+AwL!y2pU(}yEpgy*6C$FQYk^+A9&En&f98q+d}pPb za~pay{_KG36{FY5Sq+Y83Tt5jL+}Se)zw^JLtI+>Wi%cEzalqRtKWqu-%7S83NP#` zFHpzq`J2wssS;61I4Z470@S4gvqugF=0wak=Uh%gi>C)o}O-zv(OcUmcR zHZ(lxIH=b?Wth28bb2Wa7Z!O2L*R_dlgAKvsDZW^zH5DuL-@A)UiGQ3Iz1`}B&VU(AQ8#~5-(vU&9J16PUrCj zKaaU|rrn}qKAuc+zO+yK->>?MB`|?yVuRvdA_uJD(E1HTtli7emZ{;CTHmfTJD$gp zPNPaLK+k6&4}e{q&tmDeN2#gY2DU}O!9M-9#e;vwW*@>dpG@fIfGEd>5)!6&t!})Y z_8Kr)SCrR}Vq%6Xoo4T;yd-Gk18+N+9xX1%69g?v_oO1(a{m(WP} zLW0fTtj&0++?Ma{UFtMh7B^ign@>h1Yc}R+jSR!Ol)}y+!97+h`DuHu$G%cl1(>RV zpc3cpJ#_bM=aeVit$Q!=2Qn2T4bqG%g{Kes95FM~$}1kE_cWlp{@K4U$cw-$%R{l? zfWpmQJ!tSoKCm_=V1A_Z``cV)#f8PAEg^3+Rcw==t}VV>DZZ@cKKQo5(=GZ6??#n$ z<}ve-587(suYA|iSM@sDi;gNsRms|4;-%*-RR~#Ug|w)cKjy$?Pr;^Q`?I%K^Ibk% zWd8lautFxhYVAn&**WT;iKK`!rRByR(K21+;uwssFne|$xb1_}@8!E!kXE|3xF!ax zVAXS~|BydH!BXRZf8Wp_|LDL#FhU7wsaWkfa9=By5Ef-kUua8azg;VGo>?vlH!f4I zLX}ls-sRwcQ9*!hKI|Z1i+Wr>8)KllU|L=AB!n7X+aGgbSSZt(q4%?WO?9H>hJNn} zqVQ&ebuSChwCt5}52xRvkASw)_V3KDQRG2g{8xLTb|`6{VZ(Lt6j-yGmU!`@CqLo>9Hq&c5lNy9|yP>X6XYb=a(e=*s&;v zbBmz*13qGFVz=^hL%nHq^;3n zeOYg(SN74xjz;w;Almiy$Z;`^3ZD|9rwZ(N)`Y7oqDR=&M?^cp%#ic9HGLvsPYJA? zMOwd$W0oxhPyDpmPB-p+#fDY39qOr6+rKTtS2R?jq9ePxq$jFJb#x)JQJ8JB? zF~`v5%`B|vmO@b{fXznla6@Lmaz*4Vi^;^b5(~2br~6af^4k+nPp{|RnppBuylAS= z0{Uzl&wom$MFu)sN*~SYf5mEB$E6ilF5M}PT)kju#aVY?Sf;!|pJ%Lr?-alyK{HjH zkQaR)^}4_0%KoH3f_M17S)@qO5hlPY8zg3s{Mq6u9Ohnjst#g;r~=P<012@Q0FU2$ zhpH2@i)XqwO!?O}msNzu?JvQ`sPOHmZO7 z{A(w{2ba*$xzJ8BRPvkzF<2Q;wGeh4+jsvHO_0BAhCF2Bvnutoytd$Tk%r|=*Mp>; zy+>Klr5}>HC7_(eeK^Q#9$ILaIu~r_zChkcPOMpdIBuAG{YPVBo(~6nF3_XwjUwS* zl(hli8b^q*C6FKwH?1Hq2j(1hRn{jCKlojM4H5Q`!@!AmaQGZ`A-i|qRsXK>!-cCa z@&RWs15J0CID>wbFrb5RaB!nmbHFpXRO|Ic4)Vx|#nuZ-5RWHu@w^64rG5Oe@^Dkf z)gAGtQ9MdUy3eLaq`5 z6&R>x{NzLs`` zreKplR#UHV*adq@a(qw)~}A`a9^wQqk72A&DRJr)yQ zDIxbYe8oQHm`2bOu_MK{+2WJ~o3s_U+o-0jceoCt05W_Cd3 zA2*3!#m1EGv6hu<{XltqV$vL0v1+s{CxXnLYm2 zLmn6Q-)~8L+?u<`>XCZ|AaCo@>EW%gMX9_wGj%t)Tf<7BHo6E48LOj)ay`i?14`wG zqHh2u4xV|p$`taO#`**pUN;V0k4Kvn*(J}>s7}b(NHJ{o=)S7!MUtWW4j54=9=CXv zy+zx(Y-Vn2x_D`2x>bKK256Vo z;h@nmQ{Tl%VZ_h=W8p!g?Q(mS&t>*!j9>SdC_DO~csWkb<~y1UHpzN=-ENg&9@&D* zxwT(W%g>%8aT34D@e6nCaz6mzQtws?F;=INPxc;z;k?U60 z5C*HL-Q8)+jTO95{?k1RahC&$oW!qDOnaizKf2^7_&*wH_;?{cA`gYq`xB9N1VPk+ z_Sa^ml+zduI1*AjE|nv*Rq{XB%l_SVFkWsiD3j?Rl|(WgHR&-a)*tP#Lb25&34^lh zfya`~sv8&4C5kp{6}|XOzGH9{OEZX;>W+w1a>rEnu87=u24WI$e_)Qi>3Pv?26)LaDCMN*gBenkEti!E9 zC0B*+hbD_R=Be_p@YNhVNQrF7@BM!qoqHhD`~Sx~r%v~qgruk>xvpFj@$E(kxoqxs zatmvgJGtz1alajM3CSrW=2DpDww+wFxr9tMvqn>4H_A4OXywneyse*#Lpoq$USGiK5rZH8~wr(M35@7`p;hWF(%gAZG z8M({uAGO@4n60N8KTL*nCenb2#+WOf!Xz&YCnjnSxD6Ww*qg6ZD#O`p367U+#s-V< z3S3`WP-Vby(73 zYlyCW;R6P~hEdyb4|H6NIaR?!$3Z|TIP4bOpM~|?$S_548JNbZm7?Y;geb(-!6u()mww#X$h6}gNd2j@KbX9}J~3A3r4$#+u7N`JO^u89 zbx4@F>rSI|kkcxJLJ^^!;m?n~b!yPCu{bbe{*c=>ftWkPHL9&W>DGj8Ys3AWK>z** zqqQk)d;<{VZD6G3{U%0`Tlfq)obY1aEf9e12yrz(B2rqg@A9?c{t9po&DR5X@l8A@ zHFvJjJy-*s_VdrL3o6{_)jV_$Z)8Dbn7ys#xMq=w`kVmZ3;u zICvdf=k}_8Y)n#h|4uk&<}eT0+aA>F8J}o0ce%amGXs_lMR$zWyHnYpBCKs`rw((r zZe`H$6<-M15JuS-p8-V$r{*irf-Bq>B%GtEFE315bClghYpmnbgexqFJ}`rE1CzL~B`75K-+zU~LZzz-YDuA++`A+An^Ex6fgRnwR{ zeV_y`q3&C|@47ep=6_qZP(IUR$%*E?sVO97J$MIgcV3GDnq9L8pwDEo;vPB`YfJ~1 zPIdEBv~^fFfxJOYJ0spBGvQ1Eg22dJ-(yt13R#vEP{Mb#lIw25bNtR`Dlta0WgS) zUfpXC18J9#_f7ko9wX&Vhc)%|w_Ist0Wk(iI)%C-pPuZ#cH<{%rze=E?a^IjSQWM% z@%qXVtpFA-C;yY}d{*{tNaRnzPd`I$J^nlT?V!><;tkC@r5NIfbd;jE0N% z_;%dZQ_SJGu@xTB-IBo^hUNVFU1?y!Go&*CK>Y=-0D{mYy>xst#bpiL#KuHd1o|K*D>q#B z$>LdRh}{V{_HXo*o4Lgi7Sf0G{xIq8qdyQ#-&iq!yU_nik`qA$#(yFR&&3{KTb~ju*i6o~Io|#XRGh+kO76X}!w;Gt zhX#OY2#TXi-n^y-3jjetj6&v2M3+34?aCWgowHx-*fa_BNMp63W`yVPr9o9E;Tv072jZwwM^&n&tZqG#3)17?J? zlw}3!23|0;PPt>Sqt8`^m7Ax%rCIZ$lt)@F(u;klxbjQK%)ohjhX1`0C19$l2WgVg zm5||gG*^{ytAK<{7e6sATm8-w^|C4fQCS)KI`$7jvw|JYj^~k`cD#*Pm$}-=nRgM@ zw#Oj%NGNI=`UB7H6s|7u1b)i!`(E^EjkUqFq+_!lGy^iDg zYRrfL^?X86zw1Ksu#3$4Qo%n#cokfrCiv&Njj>4OyFe&h3{ii*%A zcn8q&hKs3oUSQ8E9t<@uj6XV&+dINhx%N329D2TwtlaVr&9b-11<-K71P@}MU*M6z z9xV@zs|FQ^MbohR@dl2YLe6W3`k2jI{Bx+LrZwkCr|Xh#}bkye{7U$`RLtQfZD2#MID(?yqffvbp)7sLHC`#oFRe;wEHWCoW!Jka3>N@5;GTd_b=05T*% zJM%S1K7MS@Q^I+A&P)uHVmwOaSIoQ`OO>?V4RkxC_IGPFg-=MZ8a5&&HI*wb->C{-8x}B$*TCbsTf*tQJf_ashomZm?Zr&~RtO~s z>h@OZf{>ob1KVjK3R;q?rqFC`)}Kkgra7Thv6ggtuJ(!4NlnYrYDu?+8*`Os)l1kD zyuNO|y$o?FlUTI0Z#HB~x}c8@cVtW<*~_G>yc^|BAAgFNjMTT08gb*(OM%_=LcI zPLqqym1?=q7NqtV6M~XIv0XjOa`j0xF`$C`v@`b%I7yu+l09wCo5T|i1}EuZ-|?;` z=OK}2ZustCB3}FD-OfgLjNxMVrR{!AT`_hbn+?5w;fcdLo^fVW?jg_Y|9$V!581OP zC9kSP(G?L&Ulk8Br9VQxS5*$jO;&WWC6%)Yp09e1)4D8pdgLCZ=+b48!Rb2@o(+9^ zdcc4@oL!zlh{irk8Xvpj!+}sPHLVA-=Rn|1VFtPLC0(T^ysjo79Z z@$Hh9SAfFbl>Gdqzja<7g1Y;~6~~D8gs{LeDZ)vc{nJjaKJ=e_Yen@{asK1x0mZ54 zCeaWs>W-?u*d>;*yv0eu{!w~TSCv`)(t93m#2?5B zcuW5J6TdQ#1vFV{N(_vpUh4F1qu=f2SWc}P8 z5c8Fj$rwyKx;ChA>y5BfF7X?4bbx{ZFwTqf&qhD|Z$9Y^qLle99mV26suC}fEnTt- zDTMwtbo?SPu^Hach;If~v!5^Il!J=!a@eNzXU#^7Yxui=6A8c*j&)HBzDDdyoct)& z7{c}7GT!Qk<~}qJumBUGg{dFDgp_-?{S;K!Aid6s#RJB9AIt;x3de>Oz<6g6=lVn? zjg|MSu;_JL^xo-YC~IK$@4EW2HS`L-*M}zQ{qU8atIE4ZHaZ#jm=mbomtQw1s;?)+ zOX!_m&Wo2ck3KgxFY{}-&RinrVf&~B7nD7>Cw3-r=De|_3)esVdXa&#WdLi3IZvh6 z`>KQGyN@)^ydREap`F|&2Bc3=O|HS5s?UnmyOT#$U1<$$Fq2U;n_&bNvc3wv?dR_i zLDCo)L@heH#edkiU=P-E?S!64BQ3R0%D&AF>@w{8f!V>%P2NWvWtjiw*Xae)2?V#WYCzrFja_oVv87n9=K6TIs5^qaPIR-P)yc&J|>4 zkXaa*i{|II^N3d^Kg-hQp$W8x5NMILM^T8LQ3;JJ(ise z`^z(1td1y^S~?V?L|UukM?RBfo1BY)Q%U2q17ikj3&ZoaF;4ugZxy;#dtwDf#fgC3 z1`HJ?^lta#pX>LA9c~Xvupq`%v`lBnD`E-1(JyvTi$1Ni%o$T~nn2uQNujgQaxRr4 z%BbZHaDv#IA0DujLjX4lwo!6{=9yt{%{~Ef^g7b10NGzV zmsOwV+q&bdl{l1O&aT*?nNKC-uA zJqDaGfUzEP4t%4V%O9WUt$H=uJ?;sW97{90LLa)K3)NeA&auxWw_7Fn?0^|zZ-8zP z5k4oVgtTy1`+lO1e*SUMoBSkferHKO$Yc6u+r8)L$hM-@(7Xgz<3}+ODu>fLE5h>g z9i1$mbDN)40_)k~#P5<4g_FFfpVM$|*0NJm+DRZZDgDX{xPeZFCM6DMCJXUP<#d*# zNx%5=S({_cK$b1NCPcmWQRo1r#y}ZOmpt;VIX`OL_}%P8VnZ>h#8dR4?leuTt@X9# z=0p*EcYZD8K0v>tJHaq()vJaTXXNU9@rBjrLE0kV()_XMJUJu453zkfmKr<_uQSPt zuA5n!wmz~oJlRs11ZT7UB;3bGq+&#OF?*bx7Qucw0-ZT$(Gi|zHDhUUrx>`1e&gFj z=X>eb7w?67E}q7Vqw@gQoX}O68;+(oD33qAi;h zXOna~e_my;7v@yI&X=5nTLOF=sepsF05ZMMh$48OCEkVZ z7#bMxD6x^Qyi9of&2i1K&$+-4$X(H3Mz?N{c1u}ODxW@N_MLt%#zG(6Eu9{5RQ8X( zAb>uuWPu7$m}9;g==9u8o47Pp@0(z$Sr5=YqPd?piWY_)Ox)PMGh3Nbi1>b;%b1Z{ zx{cYm$gBUtOx3;NE4d{Cme|m$cqA_3kTFLk;;EW0tweSbdI^D3 zniEuFQ{~#NI>$~r{zLl5C-J4~25Ja}$++|Gp5mX_&z*&SKt4sF1i<;OQL2j}3-jMd z+`eBVl^uh3YIUpn1DKb67W z{f%xwWTNQxT9PSCKx+p_3m!9Cy|dlwDIE+L!v`7W4}%*a*m#qsJuSh}9Rt|Ye0$tr9GmD$uhVwhigWRm89{ zpdkQHZRhIru{!Jcw<4>A+X`ntNu39y%8k}~HyqN;WUDG|q$=-3E~~$_T`L_gDU&c) zKR0s3(d}_acKKRZ*kbxJy7}f4bPsVdlA4K9wViHVeqHknjmcLmtfq{Jwe!!S_%X1b z#hgo=)-YFoZH2FNqSPTpDl1U`7g>}1AnJgu`;zR1y+rc*vMv)mfJ^VAfy?;7I)Wf` zWHOz}2+;U+fj;9pzoS=ZSaDd8>{6{m#}oFib7MuaCS>f_k@0HHqfjv1`+f^{~->&bOZM4^n6CBLDh@ zI$sDyQ=)rS0g=&|`^n~nE#tU6()n7hD?ZMJu1`|xOCac(v0zcs|F)2@-Tm?!75_~S zaK#h{3NvTvoKff5xfrx8dZAlu_*MLrz3PBRVI5s9JNrI^u2p-&?%M0=rIfJYaEeZ|$sPn0i=tl#{Wb7Rr% z^YN_vDkV1H5+oJfR+mOi_9s{20^COF&S1R&@Xp1HH0c-#hS)U}5nePr5*DoUeEUr1 zxow)Y{vbpU^x+D`DOY|r({vCpBa(YPi&E8GmBMnL0?3FbP?bYvZ0c)Cv^+AEZWVQi zI*YvH*sD?kehhr3pXL+2_qw(MBSgkdVvEsN3NhxOF`#+DSvsoj_Kw9J=8M<6#^>{W zEj}&=rKxT%zHoxJHp;F-cl+~FuseNSN> zXvzSOg$CMK!yY9Y`v{iz^+^KfX7kD z?fF1J@Rr?FMj}ZMG%BG+7F8%z3ay!|yRd7(r%m*Fe;H zN50?DXU$-@sqF_5MVtT3?GY5~=G=MQe>-XF1`+6F4*QKLqQ5u-byRLelvbRX<2<;Z z_bg5Jop{f2oI^MR^b9M9~eRWi~d=; z$VrcWLlxiVHFU7EJtWop_tSrU><8Z&-gjzaY%8?TUim!{e%OyBRd%6-4;Kg0T5i(KfuAA(zlNqmt9}Xa5OKj=MDYy2$|^Wl|b0 zrT<6gU6%Y%u@)fK<9ORj%j*;y8Yo?Bk)NgO1EsR&v_X`r ziizd-n>~RV9Djt8Z+q2Q4Ud?GNzwVK(@7PcDRf_@02kSSxp; z!j4^sDSf_ua$steR)#>gQo~$s11mkc&w8OL%Z$OdFW=;pINHevkZMw$|bK8hIw~RlX6b zQwg&VfGZ!N?{}ZQLT8w@kIr@tlHjsRjM<7-g~vs6EbZ3i^9Idk$B>{}?B6#s?sZ{Cont=H0Mdt~9tFY4_S$VEt`}{rz zeJG_~U5O-}Gkgrrm9wOk!KWK43-EuvjTsgz%dc^%Y-a#yS6Rgx4+#>osA8y0== zBxMu2I^ofa;Ov2Q20LY`a+K}jh)ztY^Wp*JS+9`iN;i-To@uX)Z}pV5)is0p(3}X& zYpaDJ$6mUeilurk<$XVDoOAf(Bim_@Pv1DZWS}L5gw%Kqc(Ewc9Vr`}a2;~QZ8oGd zr84A|`p4Vv0`>oZ`56z718_?W2PtL!NqlT;F5mJd*XnXuZRYL8n=<|nYQk$(Px?tl zhW8-(G_gy3zsi3fSDW?)`YQ|Ai znwH;gBqGhdUHJbcmC(^EUtr&Hry~~EgJ_J+U$>1BKGiyQyq>B6>hcBp{jSoV)h6*Z zl{V4o<6`p(>gBQ(+|~#U6bF42aQ`d}@4M}^k-N0;=zQ({ghBYik2779H95yLTjOIc z2%&9lEIL<((d3}0G-)<_tie23rFf%NMbuK`twi1Q5H zM#AY}qk&?YA1&_0=(;CXQmdVG&BlR)SHh?xXx0bhQNy#gL-$FTG=36_;bC-9!sH!> zAioC7^Q>KoEe`-2gO5Z1YvFYYEe>MBVr?pbQ_MAnZ z-7;&2I~w+0U*O0^iqcD0J>5R6p2>p;8sBaMWzYlkzriF%+AWMo3UAS{gl|}XCsWMy zEtR(E%Q=N%3jy#OptvL<^+}a`bu<8lNd}y@e>QZPR_?BUUm&{{5G`Q=Hylv*0lGam za=IrDlD;DDo;*jXSG;jD8q_8$pjx=7`a%dxOwLjtSq~Tiw;+5t(U|MdufolXJsGK# zZtEjR(81pjKA)QDDxyig2A*fH!#PkWzj{RWC;q^2Ksrf^(TH%VW|P2#XFUK^Z-caA zfLd;BP|~Z*zbZGRqQ{c*MRrmmdB=BS4TrE+>DnHWu~LaU`U|`tN;1qOAClh)lr35AzQE{Z7iCrwkYm)O^b`e>+eYQDWZkTc62ueZHz(Vil-+LIGw3BK+*Mhk`*j)UH#snlp6C0ih_|b6s1^o{|NCdqmrY}2 zuAqAJZ^R043+0(^Vk9{lzu56`^zN1h{sQ=N9_TXnNJkMH=w2JK@DDKP(ymq!mz9AJ z%))j^P1zb9^OW%_V2<=x{rjgUEp%yg02BiO6wnRcFByNX-RYb*UU_4`t2%HngZXz7 zkP4?fJTo5$wn=9`bw%>1?CXI0c&qMAnaEN$7>>^ru-U-C#LI&r)#wl}O2mUM;WNIOSc!LSwcF0A`A?sgN0y zfV0Cqy8xJy(A{$C7HLRCj|V}bve#U@l74$0;oN^?k#9tbjc9)wx`B>v0uK09nN4cY z^1MMF)Hy`5F8oV9n!d)z=psl@e=<}em%7d~j(heM7qzW3PCQ%+NY|~|`&M_IGEA78 zkxbEWl2R`m|0dH1h`sv~FC$+Hj2StdaekG=js|wVTu$XFj6uHoh^SEXrjf(&9{wyW zeO4)_I+7d*%QXO<^mJF$Jmgr&y5oR5Y=hx)$h`!QtOxpBY8%;UF_8Q0Hn+kih=q{U zyiPF9{++%wp|v9%lR_b4Iz?lxn~E$$8Gw!*8l38?BqBz*(y_scgI#K0sHuoZZg%F? z+8etuT5)Bd2|mO^c6Liy(U!)!5RJ9`@?0lDFSn^zsvvOOk%MJj_eYo}cY_50Nv&RA zlMTlASZO3_or3c)K`LgX0`lVGN}F?GM_67(7>G3YmAUD_d8a^du&=#q5u?l z6Pvr5`Vi0sWo1c{&yvcD=S>E?rXXFmaW4cYO@k(AFNp7p_Y`yuSepY2plb~* zJe-;S<;t-lCC^P}B}Gvy5UPC@k5+f}i~u+jl`{JpmgBLgpqBZi~&?iN(>S^}mB zNie)^5RPa5 zzOZM9#BiXW^m(;)4!E9UC93S_Zx^<|llDEgb;Gshu}>r}A~8NWny?y;V@KT9T(TU7 zS@w!${rji4MoRsD-!ZqRQ-G%Y;1eiK#qGbE1vk4Yb3j%z!7VzOD|2c@fvhdWtU4U_Vo{@iJ3b>3d6(N zuUe2c0b%{2c-7}kJ(0>MC)rix2DZ+6od)eatvr)oCZgZR7PQ-6RdRlEYpSWRfpq#{ zcHapqDDg!4yHyXl#fGoi*#!IHqv)u2d3Q+iY2tEf5)GiWU<&f zs_$?mivB6FMc1`DMGgEUcv(0rgq3w_fs>$q8bbu62wmq#yrz|J+)-}Va}`APeyBE; zMIZf36D@mH_rEP=i&A+HqT2osW@+SlLx#?SNr9DxU zS0*om{Dn#!B(g%lX41UG>&4o+fwGTs4Z$kUGQ@~U)jV8oKl9se>VI2A5J}N%YUy=P z>ncxjpjx?2o@9#7k3mNfWD{?ClJC7Hzh2m0smx#&0E^xjSZ?z{)lYy8qKn{Q=;(NV>%HyTHW-QQ6_ zU&dje%A!;m5i5|k)K1 z*HI%unj@yCl^(SuJY%UVxg=m#oA^l_@$U2+B{%24z<4{d3@*uAl%NciVxOH9X0YLf zU{Kjy!xVK*rwk@RAD2Q2UmbC|&-~sP<;@l{2Za{I`xrm6QJ~ql22C_BO`AXMpe8AXTh-5iCB8Vxr$mq8ONtkhd zQjKs>{Lpd@a=+yq7^==31tT<$rCtG$NrBa3{${{CV^Tk-Dp~? zpk-BpOM5K+TEOI}?3GU3YpCd_TB{!O34Zfd9bwG&2UGm$Hu@@7;>Un`GM#{o-;1#R z6HH;h4t@%dYYh50G4n`Lit*fu=^g2)R?N=IhsRAF+~2rYr%dU3M(END0l!W{2IShtEEkll zwiZr9s1{ZmH&G|Fm93ri`onvqJqcATKzzv3j@NsZdwY6e@)u{v_k253qe@gHF#ONK z$FQ#8k?BZUr?lM9Z|z?A4o`W$1j1LEYA zy*XcllAA6gXG^W8qA8u9IFLn{2cMKr+%k1``4Hs`|oFRq&x5X8Uem8=PNThHu zHu|}(xif~VJ)}D%v-3&~)(Zawktii)p>m2z ztCi?DOpzY0>v}9`5=|U-$J&#Z-zRAzYUO_*+47$0i%R~8%o4L-dEhQS3y!%5IsrTB zrPpvnX9v_P5f%rr*%pk`AjveOzt$=~Ea=1^rPo~po?DloliS*n1e%2oVi!eSr<=pB z_+5~);L*i1?9T4hGyKGoIUC)g89KYEjcuDY!>h*K*!afy)(e-7tz^tKQucx+jJFYa z9`X8CXdamnU5@~bqZ8FrU`hF2y~{?AsrPI_(W;E4a!IVnWo0vK(##;Qtq)tr-2=I{ zZRF@wz7tTyy3CrxKyQi7@|CJ;1nIT}_|?azx^`jh-YC72IX%X_@um=#R=~pRHE(XU z_H^a`Hz7$B1oPr=@?HXiyJ^G9BUk9>TmNmryn}ZD05_m*zB>uC*o#+8P)B;m^Iyig z4sd3i67SC^#xt5dsa@3P@w*NbD_Qe#SBM12h}a?qP~GaQZEh8JLcl-4R`Bb~U@#*g zLDIxIg32%GBe7PV@hS&B5(|r&A506SYg&n)gwc%G&rai2>keh+cDRlE<+TRG+zQ>V zAs!kvb3jN8h}M-C24#hMnmzI;@t>-8-{R_y^DqAlOncI;(vk47h&Cl<1~;QWvOL0m z>ec@;PXy&`)ohax_+$6UxA<{6N$A*(t)BQ`Y-jSFvrn$P*dC+dkLr|8lYAnXoa0=d zA83YLeW^X+{&ZU16Zx+R!=$xDx>i52yux*+vbAUI~DgBjzjP18^%)kfi&94i$Ry||K?=1s!*XhO-vZOSLLc4HiAR2NTWSAp zE<1J9`q15k$>Z%R@zIMY!2!~mtBXPUdlN4wS5zCqP)IS5o7@|+gKsr^)K83JF+EDOyq3Cdk_RSCoBe~ckOId6z-6h^?hPN@M|7WwCbw3`9m58Q2S3w4 z^S*c3b;eo#L2rFJFbgy>XbO_h%kde8R?3o!yE%uu?8zN=SsU3schetd#X@gU!6JS} z7$GFLOq?>?(=(@=BJv>sp8qx{`LsN2A%OxH90CUBED0xa;#PqlM`?O3_>CYQG!Kto zl9fbf_A=F>dG5|k+8TsN1!+w$>;2A(`fe`~pS8axZjN-&9~ICZDQc`(MQJ-GO8q=I{it@ z1>YCQr3%-*njxfTtlJXsImSy$U-xZXn97IDc_m^TVqIF~s1LU@O{E+WNy?^S)#coY zVa4Yc?oU+|pT?vJb7uF|RWjja(hcuVFLd2ia{ah(YhaF2LSJGgh$1#lH`AyInLIu* zvVZ2BXT;62B1_PE&%`8Yx!abgjGNf|X$Nl4IR!tw*>qab@*H5F6cG9s>)zb`D()v_ zf`?NMmbYYA3g6oBm5e|Co%&$4m1jsF!zO*bTL+}8e&>)=!WtFdODUIuwYTQkTd=L} z9*(^*6razua6Wq76FDqLRWvaL`EaF#WT9_0F`=t+M0LdM&TB3A`V2-_dGiaU!kn>g zB``9*BOs*8@t<8v!z4Ey{lp|~8UP4IjsklxOXb4*PQBz@gAjm6+|<8k5q^txxITg6 zL}45kXG4aRhB=23r#x#$m~41Sk^2$-mQY%CFsGXv^&(U8>~ zA6;Z|N7$Y_{7x%b?TM9)=EPz_HAyidB78EpR|P=N3zEiq?u)d}gTU0V*|5#1#}@dg z-r}95!9ELYc~?=AD!1`9A^OH*@+=aj5>+f=3a_JY#yV!?=cpbS;n{%s#=j1(x=ky~ zgTerIg}HXdcpVt;>B@!in+f2qqBSk;Q9*Gak-1KvPQM+8a8&cq5uwAWi?G=xsw)^C zi>8#0xz$o0*P*rj!<1!2$DikC5YwbS(-(w=ZB28idH6g9i-U9$!@m5mF;E3SZQ1JX zyg*k^C+O)5Ln>%N5+6)6W0=C|Dcku=H!SHgy@=g!Q*!?#$@zky87i8`DFb&~bjRSRhy*RqGajMwH1Em*^ zDH3gBFb=UC*U+-iLFb`@>R|<+)6-bat}(x3o!YH2Df9gYn_KiTT3YC4(Lxr8?bhV z8p}DV{PvX~$70WzzUMNm?P7x3?-(zkj;gi#2>_68!l^xPyv!J%@^}Y^Q5pqfl|7 zLeFrpSqQ0-M` z5bI^KynJM}^#2tckAIfO&!f|n28!kvZg7V~rhV;($HEphK{MM$1uuT~eBI+yOiqH@ zg1YG4s-&`uH~2WgkxS^CJ`@|s8RIskH=a&eGTHuJ=M^4|P-cW>As}}R_@AOlq8hn< z0bmrJpRkK(nOdJva)$jt(B^_ z4!Qr{w|Hnk#(w&e2pOP+OX}tVB>!!poGd9d$|fY2yBQC6!qP1@&3_DP*p`9V@qv#1 zwOEyFpQ84euP0i;QeE&aS4Q-;BP=m{%RJE}>>g8){TCwcL;#+QDN`1FWqSl=Bwk{1 zhVFxMWT1PXBCR_HtiEX=q>v_RwZ74#-@ZPY+7#O}$jE63dr?+)$>++*-g|9R`Nn|4 z10kIf-c5o_&pcCOuRdPjs3^NH9eq_>NnI*htKau(#NhlpQ+Fue;dHiSG5Sw}PLL(< zB4L+Rz`R@3aZrriYHy3_3~-cL`|WzRQT`k~65ad|pkBRqu==cf;+jgK3k17T#YoF7VamrP9l%3lruox3V z(0a}}ZLrb)mu$j5&VVWs4!_g?}v*s@m26Pw_}Nz0^Ji*BElfS@&HGn|EC(kacQ z=NG!*hJ`WB4|niFL5%q#yo25gSAZo&&^$UH zQ3o=ZbP*t~%M%kHi5(z25qHtvX|aHo489)pwqeXVll1W?3H`T0T~^n=P8>^!=kp_^ z6VunbCyPQ?jV%A6jJLF4HS7CfSB&+*sd7NPM}QA8xn|lw{$pbwvmCR96s5fIpuMmh z&nNMd?j|mM9A51D4OLB#Epx(sI$pYKFY<^Q6f};;A`oA3zU!g=_@y0A6Rf-Q(M}ne zr-|o`UVBr)dyKBt84i9uzwR`l;GMk{Aqj|8wspaIE^|v8{=vxGe(DAM7`3jVyd)%M zl|75$PsKoJLIAT>z&+CvT{K`i!9%nhWepuYy$G3 zx@t)9R?BYG9mcCk)@6vErvLGJ&lu^Y)dmDCiPK?s0X(zj_5urBuk?gFWLKdZQrFgq z2Hs;cp){|^8qRUKg;-I|8}U`1e1+rz#_g^5u)qHfcH!oZDmccN=0UE{)jgP>w^s3( zkx&0$#sW!u#dV8hat-|*e!kJ;jz9m>m@79PArE;;KUet6Hm>kscD5U)&390((|wKe!{O$)=+a5F+`VfO{tiFf}MwDeP55U(21Qs1YXTq5CHQYYY{bi@J zeYgm{oSgs{DTRm@38lfea#x?jXD-;XJZQ*(GN(V>y`g$g=vOp@LXV5a@qu2c6YiMY z13*T(JrV7RPhN9TY1+5<-BDF2FYyT85|HePA`({WLWOck99k3PLeJQIRw5nb4W~jN z8cWs&;in|eQUblchKdN^L|ERT$Hkqes+FCYxfHrJqA7L#eyd;P2D0bvhuPsy0&hx~ zokU=aYJFaGs)VF$?h0N8m=J*%U?z_jT9$Z}(tmHH{DtRfWT5M2?W37#0<@(Fpg8U!;++WPjgY^S)ng>MSW=}NsAX^?88q5d!ZN8n3ys1)V6c`35 zowFxvmu+frnN+B5fNI^7{M=vSS6LXfQa$SX?lYRRIAT^s6nZ8Uz@peSyyK3AQq>Vo z>CMo;o7u+)7D0I%vnbW2uaHH5xQ7qY^pPdF&@B0=*-G^g3DEN0Z@!?Wb!~>b*dF#u z(AEos3B_YtCe+oA)|(*K$N3(rOptu2xF^9%mLbJHXgD%BmlanDj?aoKORo8dA|t6{ zR$-TLqx3Ux1{|hEIlkNES5CQgL-eVF)(}@gxV@UdV%n$ z$Lwn0$*K_2agmM6%AAD;_s=Lkka7{h4%z5LK zD8#Y?-fde$bzw?`BCPkK7$aR~QE?K=zhuXD#v@xdc7@gLH*cX=9EkN5eIuJnQ6L(x z^LXr=SoY<(O8;{i!H(C0=7F(9X?N|_SAW~I_1l33kOK}yTAIRS74EVXR?8-6`#E)O zCLI2>YpbmmUz;>Dtp45+9=D-={`>T((r{^fUtqADtDrc%JPRP4*wbh;kX@16FPq|0 zRjqrwgZ~+%GpSb$z?zPAjAeIO?|xEVmmR!X*9_*a1HPk}A3%*-uTI)Y5>1$%ySF|i z4B!svU4pDP@r=qCG!+J_C(+_ovPD~CWj9&(Uw8Q%NU})+VEL{Dib&$?uAIcV($$Q| zarS11l-cs6Z?P@BfdZbB|}T|NnURp`%JFB;hWVoXfEg zcPc`NnlrnlIjvd9dA7TQB(%sOgfEhqLyp6+ayCZJ*=!3CV)9>H%U@q5n zecp%H>-kzW{_LgE_+no5q35NC)WU-kG4Ec7)M4oNW+Dvf-4oOXf~sS(OShwm$sML$ zd6D?YI%ifK4;F#Q7bamPi%Y}Mfc1)ktb>aNErH}U@Z0h|Ky&M*HzVz6iQh|4yBCRl zVJa~l>HNtpA|b;fFDjW}^^u+I#Ebx0CO30H?|QA6{dO4J+J7YXNw@g)FzT`&vV`87 zX;7nUVKF~-g7hm$Q`7@w3uY@54rs39moDx#^%AP<*TwJUvcp${PwbI<(?F}h3&?Bf zRMAo+%8RSZ!y;CdKHE#%7D~yxnLGZi5F|hE>_1Gx!f18>?Wj9|jLdRV`EP6uBjf3| z7>+;&{$BT5=hY+U15Ly&q%gXrX>BcU!_Y)|rmH0rdPGyNsl?z{a8bJl%dz)YXlN^8 zzFfJVd@MK2AVs8%(w)>BN?=GrJG@k1s3#W3ui(GTF;hIlaoPei7Di&;M zM<(DhToT+s{f2zI7Uj9{6M>&MC8;Hlc_mXNm!BQfpr ziSp2c(^ioJ&%}Ev1od^mx}paz6#cXQb+1tWAY<;G%$C=g8*9k zc$W3ro*tTMJh$y-Gb$rG{kgW$=M>>h;C}!!1GF0!#_sLD&1BTFfGy5Potu+Ut;!V4B0nA{_Y*#G>gLUGpJDTcGdchB2vvR zqVAQ`HCnUBq%Bh3>@X7kV%qTFGiugaR}YiAJ7pp!q`a@8!(h^u#z2BItXIGHKNd}zxF=DUj!|@&5Ec4Rk6B69U;1^_YR$_TF}^H-t$Bk7AaGSXwF}9YViE%&>c}gj}bS7+MQ^tQQ?l%4}mL~zEkIq16%L^oWa#nIdLiZ1h zl=jIse7=pVT(M&dwz)iC{KYMSbTiM!hOQAAWDKdUb=pnF@9Xpiu@@ZjIxyLEnCoPA zMrS@nR%w|)y&qKLx(;*(T1}Idl79sh(}5cGgKu3)fTa+8?h))GKRo=h)7p4&1AXb< zQaQ+90!42f5tJ%w>!m^!&PH9DZ6y2nja1s(vTCP3&+_sYAS_$_gXhi<9IAL))la%# zYhG;*#m6)UuA9Vxzm$CzV7r1Gj!_Q^1XFVRxp!>QNJk z2NP(uwYhdt4c-4Edig$JV`Dyr4{P2<5f4JPF2!pLg-PI8##@4;nQ2URvUQYz%*&Pnma(| zxsD7=m}05uv8D&52@-&b93T!s>kjgb9%1`_V;GNJEB`OxU>OC@mBz?>3&j;yn^ z3CeQV7NAG;E3rG1PN>+Os0SqNYX9hU|(NE#{fln|E-8cwU#Mr{L68PD5X{U$WQk%xg zbu?^sNTf2u$6fBA{6)?<*#qw*&);af3Z$6Cez-Y#aEW2;m&%OL{nb2jz@lji?&Y2Z z;osD4)+PM*nqwg8ng3Ik{(*0|R~iae20(yF6;A8~=nq!LNKo2El|5js-l4oemhBvk zeX-tY>pv-ZI{4j(T?~d14*YJlJo|p3p5?4rRxL{7V;D0&lduJ+bL_S`!|ifPt8AMoAwo>vPG12|dVvp>TCJ zw{^oiH3sLt90CmCR3Ik;oAjZEx;CUN+p9mm7l7W5&{*>m7aVi-WOnGANTFX z{qi8n&j_U`*KcbRw#3d4gRb%du)t_mU$)6O{jHTG9wE^b!o6IyKSJGLaQFbDCr{)S=eHbblXA`V7`n) z%s2U_A^|;19f;F!5e+EqE#H}3`7d!r~*VjQkc5!C!)l8vff_r3<2RHt)ChFj5%W-79jc06{3?voa zO2GdTB3-EtXE_%x(*ZyCBdWj6cK@ZCQ)Ji zPdMwPT;;uFS7OUxuk-45+h)wg=$cze_Nm?Nn@m+jW3KKev>vv{i1^%W<^;CO>*QoP zUc%Y;rG&b3a-pjnky+ot0@9p2Y7-D2jx}`PjtaY5<+aecz8U-w!_RJ>$&D}EFG?dV zr2m(F&$C7y*b=67+1vP?ZtH$z(nH5-{^YG;r`aWU_sAS_QrT~7m9pVr3imGnnM!-h zQ7qQtW~1%ui@);yI@;v86aTBOm`Dujg9lp7H@8_$6@i-pCYNZ0UyXy#R`UOz^Q-48 zLuxP*0m~I$dWN`T0WLBFRoWac3!cVzrDEew4a|Sz+g0w3*$c!s5<0m(W@=U7K(C*( zb~b%{{03M1xvp)=Quy(Ve02)#>M0VC>zC)ax`PD^k>$M86|mR%FBg=`m1>51Dz0`N z*NlIm>4~Y|7-o8POZJ-t;KMmUGmWX~U{*QmB;V-Cq@~##JSMR%5_v0jJzHURj$C&2B7`k14^kPR)^zbfV6@tC%N9k98H_2vYthguJed0tH8H zP~au>7i&vu-WjfRTTaxH+O&9ShVF5lty>9ZSeV!7*>x$))h3u#f9H{4>?&`_oQ z!fVea?YU&ui{ym8PMbQ%bi4A<1Bl(cNs$)I2L6YtGF$WdFwf zflBBuu_h6?;bbU#(_SVm)c8k8=qjHfNdIF`r!0e1CdAnH@|&>GbnXNeUh0DJx3E}# zP;RAQfGT5f5Zi%r4zGp|M25YKQ*O4f2}tty+&xexK!bZIz)*%l2>hRTRQ>npIs8_2z_hWqZO8LoOJnfnCRkr#}Eurd5dv zf_8YAoXl;sa$coOu6;Z$Q*5KE^tbT7DDR>D^JqP~KHoYcmF{UVxZ3U9+q{jBdQ~ID zodTZrCTKdY?N+iq-65sNy45;lOTQ4U$?yMcR1zPSlL(c%a;ChYvhVCFiPX0aS}u)z z8nRWW-z9fls1j>?c~03rmEL3B_>wkWnKkvV^87RluqkXt>Mz06dw)uNR+O#x)FCYy z%HN-N^*fE2F0F6l35Z=R=VM+vugpz_KB9&Hb}U-XOH#6b!V_0u?=u4IELPNe|6gcS zb=Gvno)KWfk||8RbO!dOR_)n87PNlxAdR6987eNgO*i=Gs?F;opIs}@@L@>HQ zh=|bESv8pkVt6cRoKveYo0pDrg3?8^3qJHS-F46@o z#mqbHT@$v&RElOf!-#KIz-dj1hvs{Kqdvm`n-iyMrfN>Cik(&%L304!`TWBIxzNLdHkMqc0+7bwg@45kw~_6353KDb z5dfVL0Fa?qo_{uvG&1WaYm3xWb{lHCT0ns`7X`?bWp{Gu0L_3UhQ8f>+9!{5YVhUP{a4|3H1 zhjhgl%|wl@x?~^b!?vzw^n5R29rz!W?>y_lb905(2JS4r2;$WZ=E2Jr@52;pOm3C@ z>9ce~K$nAxW*v^O64ooq(H;|#(L9M%zWj7<5B^qu|*O$YNWE3QtGUMbDQJ;fF72Mgx zD0Q2yQn|A?*#Yi+(DFn9nHKR`8J&9}lc0>B(0hYA0A3Q3k?85&&DC+fguhr&BhcR? zc_}WsRlFA!9z_8mDRNM{y71P>rj7hjm#e1_kq;K^q2hH-?h`Nrw`5J{T{Nzf@N|eFs#FJIl_uA$!BXdJgTG;LbF2fDm8pL)& zW;nPpq8pXVu@=BcQZ}m392H)A2cr1&6dxWqdJn`4DbCXfY>ux|#7Gq-=DoCD8m8s0 zyQuc+*laf4u{3Od;z@ber{{?6jIK329hv1;XeL#xO7SS6)dW(sJ3N&-yyR+a;<l+{9zTOS-yw@@x%$OmDmD z-jupVUWj2Dt_cnEssMllV5fDp?N58&ZPG(_b1II)1)|mQV`n7(FmHYv-sJoAzW;30h;i4c05+**i-8$OF zA78DyHC`u=IpSYi+?_H**sO2fLmKW23$G@%*)dvro17urkSE$)=fVx_g)Y@lo3u5m z`;ZpAuKCJ?KZ%5nwUial5AE)|8;l;`6^Oycal@m<2I2_>2X$zk?oOBNf)V3Ge4xsGD+9dh&497l%QGhhk z+nnHvhOEnq-pxQo+3gQfdB5o0miluXOPU!9eMsnBv--Wkt+=iba{%s+S_y*TUn9Zb zZ-|T+m2Ct-l9~c7#dHv6W;#G*O)216_N#{0{M?y<7Vn}d&G}lt-9t=l_WUFVRU!I* zyUCrOsSb>zOSpsn>lRRP-{*K-pX%*Q@VMiZULt0`qLd$;gr_$KJSII+tH6f_`EIv4 zZHI#`OGD$FvCwSq63DXWH@(Ep`sJeZEbi#22mNzl?HQF2Au!X2DcFjSB#sHg!amrR zM0%#A&L6_H7H24q9;QrcY< z*+np7dWKJYFzIzEZ|R!Ll==U9=w^n$446!bb!Whaj9z1!j!MXbvR#ookeTQW-wNsb zvnL3>thEUf5a~3}I{o=efs3jkS;ymAD_*8GR6lOO&}54HPV=f6=4+Qv+Il1w>3 z$QNE2vd zvUY1P?yWRvJBk~scZv2<_Z(yn)OAEIr6Xg$!La3W2^|XUoH*&|y06l1{GZbQc65m- zjkrAmZ42ljPyY~_#}%!j0^ktP!{~jy5B+~oMriD~SjxRC=3Re!{#`WLtd5vqdK?~3 zKQvZy92-}Eph9uW*Ci)n;0s<@>)E*N9?oG;niLs@Y`wt)+rR!*K$F! zYv>U}k_e_}2QclHGlb`-#w?V7IkC<7)}q0PFsz-Dc-c&}q;59Kx=tIPv} z)MX&P;`hxl9-E%!Tb8$0Hocqfl71`joYp<(NySGcuGI(`%0Q=}q#4}p=(Wqdc zQP|c7OCjo$Wpj0vk(vmvU!l#w@mz<1K+|Gv!r-6D91a|=#5{6Q&=+p2Z zY3^L_8ZG*gCQa*T&31_Tw{TC;lXS8H(zk!z$g#vp2Y7xAMXdwTg9WGh)Gg(OJbA|p z&nT`utqCA;0>|Haut#cc>tbv^_<_G+FZ^s_q607h1JwFZ=>SbD(+?>xW*>v>Rxr^1 z6@$POtBH+z<`xCfsZ4(HFG+j?5$qTabZ0C-tkz{sclI^tM5Et(fCc`8p{;8e5%uFXA^UzqsWZa?E{a1YqE0h%wY8B+_5 zGIzpiv?(v?nE2JDUldgaL6^bxyS%k$&Y|HlsT}grjtMrI0#Xj{OZCsO7kCW8GWC3f zMec4A0Ut{vvW35-rV|v?Q!x3?HEL;kNygGQSZKF7&XDI0W?kFx$c3m{5EOkA9&mh# zJO2;i&QG-uV)hd0@ay?Y-shTb)R!7&J{az`n?La#0RyvJ%v9mpUh8vX!xJ{g{%MQb zwW&Gp$Bx5f!ZA^vAq013={yfBulLDP`bkB6X4g3ZaTW_!3Jv)|=m9)kVwA0)9NM|( z(Zr3r_$2B3ItX7xh0qwNt)s$)<17FC0P)S1+&0r(h?W;LS|{@Y_+{(U=yG4shpLiI zWE^dh1MWRLY*5ooCh+oEY6wcQC;w|tst%TN@ng;Fv?ArTs!n(rrrr4c0&kS#`o#0b zA-3;pzAKSpOMrh48cAST8zz(r^j(%R%nqqcYJPih=L^es?0quNU_R~__}KYAYJ6Bu zsG|9fjIei^G_jpk-DH{X%6H6W!zcHYl`n^o`j1!9AlE$!n0N{2me$!~dCRn)=|W|d zWE15oOPos|JnBFy?a}F+Y}F%yWh}Au^}7tiiZE;0^JzdpmkN>!Y6}Nc}i|>#eta4(kRf^an7=)I>otN|7^2sby28vHxMz9i_Ja+U4}} zayhjP*}}N6O>Ffz4AQZVG`Mw}4MadCK`a_(wxmnb_2jgX{4|yWwLS`7rIhar5&$_RD`EizI|;`L%wSLOGcJ2?z$<;uS&KKhp`bUwb(z^-rfbpd;%fZViL%8zu_ zbL$FHV3ARMIih`XBAO{`E1ms4v-y3+nbHfdaN4;#Wk76Oo>Ix!x}zUvIdjR6oy27% z)U`TxdnzEV)%0n0-nwx$>On=zK*c&{UtuT6agD9BcX_)SGH-g1ultSVxb8&c7l-|B zQyB1b=&MPSQon0aB-$5{`NAt%IPf5DVbNzjns54h4pu)Kcc+n(XhZ^ApZmNU5{ zsP{U!BsMao4XF2~aLO*aKawr1l$#}#Gazd34lX58!JASMNK2pmPoyo%F^N6pcCvGdNr2qodBxtU{_}V~vRjb1IqGxw| zgjuxq3|9PyP>Dwl|AGTq*uK!c%)1|AKL{Q8*jNAUxX+pDwlQer$A5F*>25rKJL1H? zvM)EOcpdPxVP?h4m{tcbMc_u}-}90|aY1l}AYg4*YwQUl+4$@QR(J|zP415FF9E^t z|Lr*b?FkR-8=RWtBP_{YHkE3DCS*jXUC4awE$=6vZlFzK@Y#&5z#=8I&R#o{l7;-o z=plob8S2J*$GmjcHDf)L*&+F-#me6qNzu@+C?x(&%HwaZ0r^nln|ch)J#Np{NvFs2HSGS_ddZJd>e5cgQ*W*f zzFeQ+X?XLr5Qi+$1&-n>!#9imBSHW^ z)|7Y?1`>M9ms*sNk@#CycTw%dAO8hrTQD(FcRI0UW(PjHJ|4g7^{)AKdQ+oD+-dnY zRsHp#@r@8=Z#<~x!Q^6#o|U(278 z5btBCvvnoFQ&A=!z{u8D#hadlFNF0~>OG@iy>m(Zg!zE_Wv?xEC7@qP(T)0swm&X1x8MKo; zkkczxt6lVm5VbGRuj=&etC`8VdhYBeCN)NmS!o%1-v%7JQA{iJOy1o#T;^SM4CrsH z)9j0qwm(?tfN7;T6$_r z5=W%0dk18~QA7fT5lyrqtsmd4DNAo^D)TNr{+39Vi>U#z=jVFFw6x+aJ5}(a6o7xI zTHdzWV8k_qhp$r^fhqS9eUekNFb5@p7bbW8ET@^^EUL;Vk?Vq}hjb@j?8%%3(UZij zxk&R1nH{RK_8qMAb`>OHtNC%sy_K{ z!l{*m<4~ZJD{J&ik7{ZH73%Xzn)o(T5(|~^j<=6VglcBl82k+pfIs@=ipiPI!*93m zMP7O-1B4w%zU|4dRk`Kw{v8sAM&GZ&ND5kI5f~fuDia?^Gbyf%#*KH9Z%F+F2H zV`2*_>d&0QUg^fG1TkZYYJh5hiJz}>@*v(5XC)>9YuGP?t1zvddtf7c^>Q<|8Da%q zLU?{A-yN)8+Q1VQUH?M-PpP^k-NeUvEPKhe%tl>-K?g5=W6ZNOrtE6I=JTqpyMd9> z<8Snm!po9B`Gftv=|faw;#r1#pqCNfaOdWF`5{W&Gh-K0S?3r000GS# z#1SI6&ZrXAPX6&16o0#*Ogq0FRVxEBVMAN0AXonS5??a+P730ViuIXd-+gATDz`eXm2n zAa||dJ5@X$#fIMFJVmQ2DY`6ZR=_8-Ghf-ZCWU(5{0&iP4EyzXIrL&C4sI96F)h_P8L?FSc_@1_{&|;0i3UgniTr7FZ0~Jg@!?)8d)R98 z*(i?FWrKU8;_j(MM$A1JAdOm78}^$Cl=3?XeF^j`qE7<+3qV)ji-inPTX{j4t>M@)AXlvCf_r`1EQ>W6lFEtb!56oy`I@n5iGwPf&4o!Y@Wlgi7(&8ZD6 z!2m0lwF1nMu6OjFrI?txtdi#<<2}YrY>i!A>(qGWR!(vhxgtp2GX;hkp5)4l9X}w1 zd_E`WDvfD*uaR96e}5J~`tYgg^|v-s0zF$bj)2^JrNfN8F4YA|Z2IrZc8xqF{#M>4 z$^LnrZy>!f2k4xtb}Ct(d&@{trp;t+6?E+K&Lsm+v|ussL!**LApM@-z$eF|@X&Q_ zvWQlnRlQ{x_ijz7jXWLHTXDSfF9b{gCj7M+>BE1pkxwv(>m`sw( zTQD58*hyb`Uqde&RuRB@L*}d07{op***i z#gTMX3za7GmcX7ImZEn=rIkuM=)qY5KKpQaVdDe7`dY-+O#$7J`KhJVk`;Q$f2CThY|Ds>g`Lpt%;ZQ4M zi@}S_OJT^jCy&vNyHEOrvoMmXZ(xHW=lBB9b=T6&{1g-!9^9_VoJUP5#qvF*a6^Fi zb^pR|x~ZamO&}h;$hu2>sppc%K=u|xY*c7~P{C_pS6!R+JBCxNz+L|kcu>CYx`&8G zFx${>hVNZg_AFxOIdgRc_QS%fGEIfel>YOOhgfzWuMKRi=7^dhLm7@d+ftz^m&R9_ z%}lCur(zCA+O2#Ibnu@|-!( z0L+?6&nyyK_l8rR)2Gb4Y#lU%2dFzxbh*tXRUP?R ztJ5y9J}mZMzp?6?$#cI`)6A1k$8J-3rApb?-Ok{QlRw|POC2+`2PIWZ#4o~c^pmo* z|8}IY>SC>Yu=k%Dou|GKHdB(pA2i0mgy02xPOY} zfH-%OBrh1t^8qZ1`~ovds!NfT0;RC3|KA92;*j_>9F`#yq0Mnbq%9Bg55A zzm$Jf1AWSr(?-ojlGlb++H7P`GFmGz)nn0s_gjPe(s|nZgA)h#HE?+DaA`0de^0#D z$B%xi?B>8P2DD*-5dp~5JVZ3tqm858;(|${)PK6}cj~N0N8~nn2Bs5!d`)n=sE2;Bd0)fKRxkQ*2?H~_ zC=iwg19#z7imm9id}nH8?X8dDV-h;&DR+_?%;rh-@5hY7q5^v8;>9?xh@1S;F1P54 z{<8l$`HTrG2uSe4@nde|cqTjDyLHTryRK$9CVY)_?{c)9`BDEW1Mb-S_r3wh7BIN3 zR`uf}Rwu`A<<61NU9aZp)IW|1TE^y%_0NKJ0SpkXnVYd8Hl=Pi@dM|76Lf%l7j63- zW+g7KK6)(;jQ29}aY1K2KVdN~@1HL#KR%RhrI`4>{MA?D&W5~j7KI>k~upAN3=3=kxnzxD{Yep-~aid?QU=W!T^!o_T7)VKx8?6 zZw2Wqp9-}yU2Bh+*rsPhe_w=pl8 zi;k?8TF>e43A5kD54|x~M|g!-JpCA!dVw(Txa%aPLQEoD@MNePn0?a^PJZ6B;oPn* z3GSeMR7iDo161DmmP)pp{f4^2 z4f`$*D*Q;Leod7{bQgc9RoAKFIhxIiPuwy0NC5}?zTlRkV|hL^*b@QK_VFlW0reTe z-3`DjOG29=aNl2iK0ovbFf3NUti!RY!{@H|uG9&zEIBZ%Q;*8GL+Duyx4a-9C+lqQ z>le*apNW@5OACojNVf?=J&NY90QaG;CiI-5SV7w>+ut!|;rPikI>; z6Ifj2lP-!~=6k9wrhIAg5Y-g~9M=r#ksFRphIctlGmLfB%9vT1aA%cPK!=$dzSwCC4HAm=a&h&V0QgqbO2Z?RLl_cK|La%mHkGY^w*C~Kg!yIfpb zzk8|7+RRrc%?IR!YG<5 zGVcw&uXR6mGI1qSCiU!uKSh5E?>obbP{&Bit_8g=Ztxnudj#>t_5DF*4sUZS!Mp< zbyAU>)K%$Y07PMCc#tTshXqPJIWG}bz*A{|T% zncYv*iU2xdct}pJBirmK)_{wAZUR!Jx+#MNK8R55_!Z83TO&Ou3c?eW7@p$HK|-bz zg_ouYa93+P%gjApidC!6CY@UN5A$}nJt4>LFYkEf3kmlJPi@Ty5*j*t7wz`J0=ifC zE&5!Rq2cYw(=^m&S8l#?ezVWN*a-N&l!-WfVv!)R-t(7MboU2Wzy*{VHp1P z&1(-^Z;f83*?S$;VbxlDJwd*`ONB5pN^V@W|);L&*GhC6~_4B%z zE$)BAs}m_UO#DUI5IB-4HS?*jhN?`Y^;_~JM)A_V|5OZT+0(%9Mk{^Ii}(2-)}wjk z9)419Qa$*tVNwRnm^u&TLBnZat|<#L58ir2-P;$=!+sfhVkUc<`=^ta!D>sQOwpdT z%8EX42(`gLH`o&qJF)Hd+|CZ9%EFZ5g{Q|st|an>4!Ha5>)X!qK|pDOiNe8ruDoOY zGj&$Q&RQFB<`0D6W0{Z)z>dEf&DH?BTsxQkSuwOOGC0mn2OPWhy-12~dw6tE0X%qS z`@4;CNO@d`x)GqR6WeLBfne%2o{rM+2I;CAmWF!v#cf9dGtTqR4$j;#eF*P0)A}`L zovgCi{VvMRh}%MJj>2@a94BUH>D^;8;l>HOnUE@ZrHdrL+NXTU-?`et#0Xn#-i5}0 ze{C%Bd`v3<_+)n4dSZ3>&@vbDYy#)K*{Sr~a_aSfKL&O+$Y0@=v$(c{X8yBp&-AnN z;<*kjM?OfE`7h!fT&3UtrPeS816wf9Mj*<~2@4-jQ)&+#O=@bL)t0JR+{(7CXoUEx z75xErO(0Dh0K75Lje`l6bhYK?NkFH*_m!J_XQ+!rYi$_Ov9M_6~X)_SFWtzm(b| zXL`RYZ9f}9Kri8W(G?FAn6bAzDh~deT{w+&eV?-5CxSgC2b3{wzs6sy#}|@fM`a$G z?Fieem#?&lf00CZ`eKhpztD^~Ndv}H_jZq(^KX$yR$N;g&VW#lj34Zb-kq7ic~Q@c z7t{}{PUqRkC{Mh@KT|zzzTPWmbut`>fFX0lJ0aRnpGCn@SzxKi&=e+zIym-)r$E%K7fD-p){N}Qd?Oe<406A_mA0dZ8*hLfsU$xzTs=x&eb@Bo zkiE2Do2AYP2eS$v2{4_(=CoWdnRZ#aeDzeuF{MaApl!XfZR#DjCCxl0Dta5|a_7|ArJ+Nh2{`)|jEV}~U{ z?rDU8lut(zZbgtnFj5@Mj&k4RO$F=o)HfOzzOi9jJlruA* zDQZ^%b(ViQ{gbzvvIzN7Zu-`DS(D1 zkEB%<_rpg^S!&)ss@5jefSeN2?Z|J!bcsfLyDX+#Mu5tSx`5dg24|USAM$V3g)SaX zy{cK!RorRFwUVd=-{zf#7egKFNf9(2?uj0G;a1gV^muFT4WUCOK?}*`qm?yG76&h6 z8X6jIf?D?iB_Mx~&?@NVXn<{C1p%uXp$(o6Q3*JkLnb@!)~@IRF54U4;+n$wRnt;m zYTKs;9O0d9J%(0w(6v~N7-+_q8vXTsIwJ`kEQQxS4_>}t0QOipu)2V;cB|Kxds1RP zLCa@fbGPNEHnaMd^fk|S2BVFSA#d=Y?3fe~InEot4wsA^%nS#7q)mPLHfX^QTW@%t zKX8A; z)^Fhd9U^so_#md+hO&Boi$z+X1@JC}JAk(Y9u3}B_om!?Ce-2%wp23mjG?YO5Blj?k)1RRWA`c3Msp zG*(Nh2y0Vje4W6AAOF|a3b1GslIq0M_Pvek633??Rd@W0Z;6k&)jc z)GV7aq#0l zQSMP7(&!~2P6)xCSwvZ^;Q~U|@{On-TBWn{BDb#OmY?sEM*iB)QjU_HrwTQJFWSVEmv@ zYs6oS(up~sk`vY1t%k@zb#IQ|ekl9%9lUAkUSmpfD?taR_6#wQM56X&yp3v#Dpr2s zuvNnpT;LO{mVvbS!Xx;>Sdmx_IOd?*_x(}v2>qLjOraA4SyK|gg_dVB|M+|fV zcs8>#YS7MWqv_>`_VZW`^pSU~&@SX5l=0+0%_CjpbkXw^1%<3iA7r{ua#kBsB``gf zkP|*Z8Gkx+JcXGSMa+QiFVdb*C_i&X%Rj$dagV4$C^?Hca$w&G34ZD9+HBs|g05BY zgB(a^-*i4feAE}Vov2e*Nt?20jh31(1yLmYVi0^rWq|W=Z|2zI9Uce?SpnqS%eAxE zPgQ$RwxbM($DLD4&2jiQ6Xj(!y^Sod0}gbb~6nZ*kkGp*Sq~^vLhj0{27^9~uI5 z3bOl_fmP8yC#@YLwISQye?YcFEM;p3pnxUrIYqCgZxlK~y!q##?e&-5Z<_r#vhD1S zaD?ODCmU+N{q%c;PUZYGgALeHtx(<2rIe%z!_ff4R1XU&SGknmJc~g67uc8Q8qCpU+q%D!iUhbz1ivn63%ji3G^8uGgwAos(>t zZi$Jf=Woz0_88RE0Hw*Q_7;e9QuX(U1^w)2PC|BOM=n%gPMb>gkFY-x&kV;j_lqX3 zZ-dIOC_|$XDg1Mx?=w#Pik2KU}3N)?f}H_wZKsmMG%Loem-S-)RSuQRL5eo(6H#N{KAaQ$1fkii zi6?3|ykN;NQ>Lm~=j(2MW`sD-jbxB=K7B}k)E8mXEt{cZEu$XQkfsvOw5?bV5-a9w z{XEs~V2nAuJUs1rX5*gDS6pyzlOJrl{}<28w~{NNn6R2}SGf+clwk0uoCU+EEtgTkKrdLr-8{hMi-#X!M`B@&m6?l3OnOt9p)sI~_@jvh|j? zN!#w)v^5WC`_k(Z&`_!b7_>xfu`wPVjj8vjNg3}y8ht%?^E+L!#WhL$FvU|j>)?dv zYAuj$vKVTJZKs;53gxAXA;BftGfWXjbPk88ulw%enH}&Lq+C|CMu1Be5MC;%?`P+K zh0kF5_Ilj+i3*)(Z}?ohf%cpNUxEf_BP_y?88{hA9(W+t>0R8f6s_`v$c7=$qezhO zCqgsufqMca`(S&`J!-Hm_bCPou2~Xg$vpvHvf%NaW9aX`qmYa_>yKaz`d;^+nhBA+ zQ$;Gn0WMhEnh5kqZ($sTw_?tPtskE+8_Z6cKc-KR*_H3F-~AW(aL_z~jd&Atfg5yI zx68WN3WVzvE5!(kM*!zmc`*^Qduf>6$dwi~VE@?Z@p}b;iGU&qK!dA#f4upEW-IEH zf=wPPt%pb3qNB`TwWPtkpkz$LAc05h5yiGN7WI#Ksl5DI^eu^kF z<$<-X3#9h}a;E55=Ry)wG(1U^G1UpQ+cG+F$g7j6s{3YAa}C^nzMR(UT8e!EYh#_( z4w(S@7&S-~5|Us_TqR?a<(Nr8a8nCn=Ef{&aWl5K+3+w!0?5xGtE<{j_Qg^g zK@FhzrlBSb!eC1D+nL(D*tvNHyCEyT%oWaQ+q2V;skOqJ^*_7zZEnYMB8BX#(`Y4O zwhH`PZlFJlZDOpO7{4}E@e$&>Wk{Q*ZgD8G5jB(dU|K=`J!zt=aiLLzW>aCsc*O48P7L}`xaR57rlJ^$p4UjlfP3r4g?}`pb3}d-Yv>W`?>$} zxzVS0k)GWIgYG={3tlel?FQC1vAGIhswL?-ipA(9?K)5Y=E~gizim7MB5u)oI`jf3 zMxx3pKt@WOm?zr2Hnkqrc2Ix8=@*qH4O~8COv!tp9oL|#44?@V)wrj*UAyWrXIPyR z1zAO3iA`}Jzluc71%Q)qQV27N_(rUlyVs#qO^08kY6%9BJo|lL>O^K<)!gezsybcI z(r!wCHHBx5t%#GAhzKNIVdv#Ul|uu)j;&5UW+5ju4KDGZr-EFj9NhbTk8A({E|G)-PbsA&8dxXjVl_2uhon}{!{=*F ziYnixirTp9b+2^l*KQ^p-{mAf4j3>E01BI(-x=nyfl-`V{27$#J>%~9qFF;z>L%Mc ziyHB!oS_^0g{WPOyc8mMU!6Sk_p0Q-o03U+YNM#L+VVCda&ExSf2HAop;a9OPTkJR zydQJY@dJ6S?%5gfS(s|O9oW+|aTnW781R)m2f;Pe9jJoPB6XHBRi}AyqP@GnV?s$+ zv+@b@c*Rq9*Ic~GMZalkhBHina~oo0UWo5dygkqI@kr%1%w+6Te{4T6kiR0#Hx&0@ z3+Q_KK2~|v-izzksd{GhWkJ4_C}VHsUsy6^yZ~PpSCVa`TD0!me6bIGA$y7(qCHV#q;&OwgRza(!~mPbcVM+&rS%oEUy=*!@R}YjJLhTsp+5 zNjVNg@7Q_qw6$BwpdrfkTCkt8^8k(QdTbsL&VGY}E{>&Cl((0g|H#ZAy5Djq;0L-&wRmoxP*h)lWA&3AQDeIP_nuS|2K6 zk6g}79pLpwSWF%qV6-Kp;o)KJEM$81TCHZVwE-V%p{B7Ksc%zp_3CIr%EV55)4FFH z%<%&w3?DmATL+kp+e-h((Rs%uwf}#-d%I05uXWAT(#p(o=B^xk8)|7~X}FbJj#5L) zZ4Pd?)Z95q&Af$X?i`4U!p)f=ngdM{2n@;r2$o=s`}_Foj~+c9Wy;}jKJW2*Jzr1H zYD}=yaZF&!$OC z;G^#}dln56%dkf3r~kKU#o$N%NX)+fCd71!7o{kUJ8yNP;@R)NHYig;B6fMVsP?P& zzD3rTv++v{W}Z|38%fWsIugxYNAlmSXB~NI^mYKdKb@*PlQMT=9SFPPWhEaK8<2Mt z6&WEVo4ps-B7A*(F5$hB=Y~gd-~rTG8WRSusfDWcC%CXr6$Bck=$vaz0#d4m-R#M; zr<@X6-)t*%i_TJy0aGFXh6lza4oTUmlx5|==O`eJOfaMbTAfqmGs_HMM1lZ`I6{>;7jT5V3H6WZ4hPO*n-l>t0KP;@NE3{=&?4ozEWFPOFP8zz`XNBJUaANbR!_?tplhflaj5=+0%`P z((YfnV&A{>lRqXVfdOzX^!1P`)sy?K2s9O9w_VS7o|0Z{ATF<-g2Y4OLqJWByXa5W zxLs-Ggj&ybx`N4@zwlDHf*n)xfq*}Sr%lIeB>p0coq>sl!n+_p zNugop7^rR%3c){XulJdQo^+DaOxRr=&e>&!=Nl|)xYt#9ysJ1UP^dd4V0zbX#~8wz zA5QnIH<%T+3w}G{`TSlc6AFz<5MMVYOimdlkd8ATSuI^R2&dziHu9~r6O_eC&5-~ zT#9%@ew+A`e(gq8*#Bm6W$s{dJC8|gw%IdaRc|;oYS+{ec&XQTl+@vhAOm*%AiFlR z!=D)8Xo)iJjeRL7?J3FX3)gMAL>idt;RVhyXmo~%e38v7bY@wn?RO$6s1IciJk$MW zb8P~{Qf{5}){ByLkf-V!ZCoksDA7VShWkLR~vG zaHHBN#RSBC{}v#QAmuxId+u;g{c`vaQPmQx%bhx$***_YJ;)H|9kl}V2~x?CI**=S zQkH_=?)E_u6|`d_lKe;L4yWhe1M8g265P>4cOu7i6X$Wqj08X|2X%p%jNDHsOvFG^ z9E?J>&U*$ZP?~auS>^w~YBb+AJm3OTYT4R!EcbX(b5Tq1e%~C?Z8$Cfis0dCRCl(d zUTXeC_G$H^)|vRZ!5P2(Vk!O5_|Y*bq$;scS@{AxVF0}Qgl-xZ0H&pa9OiabEwSxr zm8DrFC=h{<`QS}|4L=t!qa1*Ty10ja@$^j9iZJ2Lf%=*xqFpztCzmhw!ODKOlgRu zE{*z?a4(Jptef(eQwBS!U^=omyN}@g6%6$&sVxs_@A_g1o_~< zck?-N{0GOq;W_5E9v_w>A&>A!0c~`sy)A{lo$+V6f|l;aaR)eM08B1>! zCA!=|lTU^Z_z-@&cZGj^KLU~tc#^?}V8$k?}JrQ&aMt{IZ!b~25*}EJo{9C zMABFA^Zc^^RSBd^Ba?huduiUB1R&!~cjNrJJhd0r269D)Po21Uro_w-AR`4uU&+ruq3c z`X+GTgYSk9T{L+itSv~ah^x55R2?kxTUcKeTwo$UeJNTbt9o8A{NFlI6mH;VIE@RL zskUEp^mG0iZeB19DFES}7PPikXh!A4zD||79h!59QrT1^rP{IVlB8;&r#`{lgLQI{ zUUh;9nHC4c>xIB(Q>N?(3oWLsd9K~qjZO!PWSHNWl-KmKPEIGEos@ke8s~m{sFKRW zcSs^1-+nv$Xaqpm0Q?VJm?U4!wPZD!&m3YtZXsABZz^#+c`A zQ@|ItOfAV8Is0P7#KcIhq4oAgI-w;Qy_N>)4cNRt*)*ptCc}LS2JFU!^kGSQVXZ#YGvj(^hZ3f~0&a{fymiyfw-!YB!l_9jtKu5aqkBko z#^_p;hWKCQBhO;hmSUvGH4hln{RsVf1T6vOaakSL(xf88e3=;3F5jQIz1W-Y?tt4a zlvRTx_p|ljAHdHF)mj+@cdC+Ly00|e^VLcvyGF~|GWDKc%!O66A@kwArU2yk%n+cS zlV59wK>{Te=K{A&1CC1=>lYaPCDB}6vvyCDoc-w<;TKlxV!Dd|hQGTl8_RNX{ z=2vyxnqHh*K$y3frPmOm%G?nkzwr2*@VvAePkgdpj(SZS@QOlxrx4Adm!E7yl;8eu zlS!{hb7wQ!@>W`;wV-;9T8v_431V+SZ!g}WO+!QA z0$${zrL%c=b(d~!O)o-JnPM|CjPo$94VxXsM!3Z$+^d%Jl|T#W1g`2XLRZ|Ux<63- z6Ou7GjD5=1AZf%4k#11xvhwiUow%cBh%kZvJ7+~A-c|3OrwW2tZqodf9U?++AF&=R z-Q{3}(-P>-^OrN?D(H(SjbGk*TRd+bLWc!q9e3`UTBgoII=z8nvytxROY($1$))b- zmo(Y>3LxpnVEcoWhTz(=o`vY22_JtazOOG0V;Cd_!rvw#SnJ;W1WJMD9lxJZZ!mFD zH6B6ZdPP}X-F5e`7<200_x(5d<5SWm=^1QCeq^woS?0C#STYWHx0;A|%(}*-3GYz~ zIIz2aQ&g39$Y$dE>e|t+yHb@c{q@bJ=e-Vpfx9%2JG^Cb+rY-+!PR)znI55VRkNbR zz9Vj}FPpVJ?|2Sz$AO?88E2Nf8nz_DdwqVws^lje&##ic(agZ_k(vwU=^n#!Qx=Ju6t$|sBfkrLhh*viWzCM?@dzDS_W zHFkLDA(g`^efBTb12v-^+;v)WEN9bx&aBM$&%*iumvEGc+;^gA?ewhrhX8fYXh8^oiL?aP)(Wz{pbwD2pO!H(uwW$z5gv@Yu@_|^CyE5h}6)8 zTG`Z9D&U?RYVf&u3@GfVJ(SFOLHuBjr_bdz%UoY5dgrIjAuZrBJ?IXPa!DI>XBl@z zC9*5_uYIc%U2nJ_gH(}Q39&0vl-rZ{(zWt{cD<;oRj zd@iHk@cD=zq^zW&~%`M8lf3+Bc z%pO=LVR`yY_h?0u2JOm65M5d5_C$BsvG!Cjh*gSN!3vN#-|wwCM#2}aIo-o?Mp<=X z`qG$M>N|x_yKn~@qA&>x&c&o3#s~GUOm%*7|9w8Bvw0Vps*j`4kBoksbd@cWIzshAP zZWh~19DFUV-gTUIt(*9hOI@`bW-N273$E@V*{?8q%l1TeVllpM^aF+GjzkwZ^LUJo z7$Z=Ev1;P(8O2WH#c9kr?eT@{qz9_d?R&uK*nx^>;5HVG|Ay!oMWz`=JB+BDy*F!= zW6s|*ceLsgKPYx0ycLcJX9TB)O-b-qUSShC5`sb8N1&KMO9$6rithP617(-v=bBJ* zN41I&bO<-h@?cIODk6cwMMh&XGHmh29UMQMv8kWaA?yt0`B1nUIDNpNkt&7O=U8c` zW`%%kC#lXTNH9g14D^N?U5g0=53M99%6NT?hvVJ?r=QzqkZs>NrR=n-**H4qWM^94agpYXl-;F>6B%vXnrNR9fIcj@b1^zNC>VJZ^F^0aV3&$j;~NKfM< zV?|o2IsIA_tvQe6Td;wp*N;pe{K|F(OY-SK*6G?)?JO zg;%!O=>YASa%l*B9lZF)f`QwnyWG2v2ziZ&MJr|s_@-zhC#v)e7h$lW&SBO0@)(x@kX7Ekuzg%t0~SKJvXI+`2Avi<yObUKY>F1CJStOqJ-fyw}xlA6CCv z%Uds%45x!n3e&3O#rbQ46O65LO|ip3QKv<{!1VXn&~w>W!)S#M-HoNct8@_-AW;Q1H9k$&XqToutDyWXMV5<6YcxVUc(0?oHy7PFtC+mc zL9s7K(Y&AP`QCiI|Jc*$X8T1Vz-)Imc@+=RM1O0lbS6C(Q<=22j``h+S69dtZf><< zAIZ^6T%Eg#69 zW!`A3by(HX)7hEZ#w7wgxo+((e#9ZAkGup0K}3J~uBd`0fyK9mVwIt8y^b*DV{UWx z7*%(U6{XNKoQmQ!c(p%_0(GD5a`s#IyxgC9pGRjKZ%%|ArBr0kih9TTnipMdmYkxe zU9S-9-nFe||G{(}nydMT2Zcf#JY1{K`;4J1jb>1@X%Vj+t8gR|c@4dW#F5qr05sn= zB~@8TU3)aV_bxZjY#XEyE% z*|ZpwcNg1Y7Z=4jZ-5Ryl5L)HqOEpQ+*~Gkly2ZdAO7|g@*hQ_#_O+V40}9H_|Xdw z0>H>V$~stYYF61NEj(t`+b%Bkl;nMQ9Fu?ai51GgYrL>>uXeRKEh6k4DIS4=P6eC% z;^!Vi1L3M1FNyX_-+HzEc<#@0l6^jx2#PwwmC;=-r{1rhM+18BkA$h)-0N$nnna54 zrk46u+!flF?W~m{reHkaXE#FCc=g)PH~42H*A(Z})UgE{CjSv-AI&j&khZQaIBJ!6 zVX%{vbN~LzoR8xUs|skeTaX-_y`f9N5L(~LSEGjxBT0&am^A!8@p$i`hGvk&&$JxcII815Qr2CT8D~;=a4K z%CZVu)%OqXzP751YvWO`6s^M7(TFt|INDp=LnJ4N=G9=Is`DY7nCvQa>eDzh*`-sr zShA;SpXX?Zr{ftYa5;l|D)?dIEOF-``i%VzPFjB~);Zh8>guExoQp}hJo^d{lW@w; z-_lAM?>YzA?cr;8N4|P|aWNGZ*#qIX?Po%=zgk{S=S_6nA)|j~E|e&n2$n^A)43`T zy5oe-@5qR|$5;XAIppl^TG^t_tC}iAq_`9|ZEmC#ij^Oo!owZhUWVfSa=v^#Kf*|& z2as&CkF`?sua530W5$75oksa+(iYhM*v|N+f3@4jZw0@zpTn+z*BBADxZKlQ;xjJ3 zW_^*X;fnnjxdwYGKRl_G`Tn2ze zTuiq6VfanoVO*)KtQH3j*N~?ls_(}6)rZQ;>MHb?wBEWMH|>Z9-wD$1eqin~*9oC! zm|x-fNt`ru#Pgq=gunDm4Jlv`J|#Z{=E0*8uOT}=04vj^p+WXSG+Oz31O^)>0X6N$ z+~Owj+@UM`@vGWUY_2oi|8FulOX`5B;$gP`1+S})aLWtSP`&@Ho=rJJ6^W2B;F~UE z_7r(jg8)!$MH!TxCIt#X60Nx$@^7vHOITliUsq0*LeNw+`zytkL|Gule*fglt zNPJtPA_mfJkTXfis~Q5OL4a(@ps@0qH3Kl-B7b|Xu{pBsf!?(y!lrl0hFG>$W%f7dWTbo!=pvxCJKwE6D}-=1NW+gVia+%@I(&Os zD0p}#_f^Z&*X+xmaL<8?Rnn~<{&QNmW}4EWO$Kb=E(R#J@@($9i@HC(%zqVZYb%J% zIF@VEjinnh(Y}p6&{F;94Df%ko!GgCmo5hEiUT|_zdk9%vGv9H_nkQS_cxHD8t zw3GqNF12iS=FiE>1A|2-X?3^nC+P_WF#mj;CHGlEzImJ8-@fj42!K*yJVS4`{0IzM z#BSA_Mqj%j>Zl}1=jNK(Io&*|{XX`M0s@L|TQOm1t#yZ4OM|#z<9>v`okv~kOi?Hf zC=1H+vcTRgWI^SUE5sTMFYwd{WQ+05)k_1XpGvLg=75QtAjK>(fZbv z%W~Clp%8FZ=IA2%uaHX^d4Cp{dC7m5N6ukWQwx4+WF`aT`SfC9!W!QjWBk2*=ElLZ z2Y+BtQZ+W{fnv2|_n8et18=o<_zn|fS#jeWHd}K12|w!io*9*p?Djdz=z;#kT>Im@ zB|eusJg4<7{goG7GTl#hT2FXS1QbUPt3hwA11t265db({jLY!|ah&~J%Xzt1 z3Ztyz8Q?C_pz@_Qb+Ome+#PmOJCa@w9s6Q4d?z46CyD4VUfUdqHHnc-{`Mp1B-_uV zMF^Zl(TkbY*kh)F`Ct$L(uaYY^2(P4zla@^EK=V51m!J$+HH z^*?$rm$|*(&Ah!BUBY6Ha6+S^ph0k)C;@~-1U;4dR7!8y7K#VsqE;R=Q&aF;hqLam zY}~94#SEO&Ei8SjqHSkGd&I1&({bk+oGz$EcMfijb{gHci?15Usp z&7)qkvg(=Q;gDCwG_By`m=-v2&Xj_yEig9;EVVtB=hUbW>-O`qa>*UakzY1DG`ZX@ zh8E)aKWU7t-#2U=Vc>cVvXrvfobQmfca!$Vz?A*+8g-5eFE8UJW-g(ZoBN(LRGq!}4P-Q(Li2$c|6vw&s2o z^D0Y1<1A#D$OW~nurqi!$%T^v(C@Hfthuup47YZvATDq?VMx$>j`B*d4(4h6DjGi94wD{yT%ij;?b2mxVu5(<)rKOnT?d_mnmwzn2 zBnZ}pI}-qYqW+GUn`)~bt2tW|ZWq@F0M%|ry}RF-p<(fpJu%L|LE_x@&y^OcroV2{ z(=DqZt?J!5O{H(Qk~G_hE=^n8eYPUOevh^1e05);eWdM5jW8L=SUpdceR0#n6ncZ) zi>n3NDu4p6#Bt%It$_w!b5_0Qr_E1TY|NF3$ZC%o-|lWg;n!YK=?GO=8-*}2gCbaN z@OmHU$*b{WsP28SM00;#b6Zu-%AbmTh&|%s!($lryF9aQXxjyyXJq(&MqfIvd=Gp6ESBJbd29h6|&*>i<0*mI{Ce8?s;a-v&Z5K4Q-d7 zY=e`^(Akvl#s$Y3hhyi)vtLyGHzhmMmE%+rl>3h^c`j?ij0={#!L_S^QWHP;&6vYB zjj}Ov>Ktpd?wh51pE~aj_y+MCyp9kI2tg;W{cW0;D;0=e9)L?jS>5|hn+&4VD>m&( z7n&j&Fw2$ciT8A4>)`5$OR@v9zeHC*)9k!#NQah(UPR3R--t$I`7knT-*iuc3FO?@ zra+C`12w~EbHSjmM!1JGM}}eGQMaB125x4%xmE4eUMbg<28$h-G&7Q5@6>VcHQkm? z%7ukg4h_dQ6@W+X?)Xpo7w6FS4!a+^WmY7G#r`CtyW4Z`%_>-5dQY1H^CA&6$qm5P zfgz_c=)Nd>yH%g;gem7dlMQGyN zjXdr@ntTei9hS=-5{?M$275KteDBuY*IwaN9(}tfyvb4mh#EoE)x?bsseRtoF&9KR z;*8{<78}o-ANg-nMOh9vaOJXf6m!NJ$&3|+s@;n#KDv_}5ms)&Un|~_3p@D@ug3uc za6y%}p{p=vp!q6-S#LdiX)_x$jC*xa)K6KTzw~$ zX>;7UrT$CC8nwCp=qweNFaehzUk7(HH%LN-de)vK0z;IzBk^M<;wXcAM{#+5rJPw` z-mCd&_DknlWxX$#(y*IIdzC_qF*RF!i+gEjN7W>?nsB|ozNpvm0Lt%R5GxKyWNF>o z$*U0#;E#?F)0v8AmLG;^zHMd0*04ww5n-mm74KsES`2&ZA$EQr9Etr^k9Hd_{N2;z ze0eWO>ad_OqL3-wUVFx@!5G)vT=Nfanh!~%D08Iu?)~UmOF9iFMm3V5C;!`Y@{~h~ z)KTJwVmVoareYH>T!udLE-!Ao#L%;(&n{B2H+zepg=;N9Mpo8-3McBu66@tU!j%=U6qe>6hbjRke$$2PgyGcs-|+4on4w1ZWkZ{-i>r>IynZD2-Ti1Ym34c1@BX=F6F``=rQ~K`3D|LQ!6CS9ZCaD`vCrF(IaQTmmu&$)hwd`m(Y41P<_jW@p6uOQD3}PTT z#!SJC`(sO;y=!fVi;I;vl`#05G~oOYvI=svR4>fh!-iwCD{p@+%CfiAIF-aznl6yi z8}>Vu=zN3xm89p@iw=(dY4rE!zoW6qUgxtqij`w5_|rD+eSvaf=pq-w+_LgA_4TMu zcB4VvGAHYGF|W!)8IA11m2yC>5#4n<$Yc3xELgKn0Q0;(K(bcy6U$R+rx%GOncY>r zfJTK}8ytuM?UyJeY5USxEaG!gH4>xinj>A^F5@w4@`P#I=Y0f#goi(Wh1oIEUT-?9c>xUO$p zI?$Scg<@4ng3m}#>i{J~Qpg$khX~1lVtT?kCSmhJeQhksy=`3o9r0KvDr}7^^3UO4 zV)SF6#kF)&_;S!K_Zjy0Ko=M-M_za`9&9xJO{+cqRzhD8mV<*o`0Du;Svhm`an)q~ zbFSsj*4kTp7<`AYdQLNU9c!uw2wsGLggFW!Ldg}963K{Nr4fvzj-x)4oC%#@c|(-lk2?{S6ExI`K$Tml4}xX|w* z2Y)HLfigc!fp8bV;v+YW`jk|GR|S7OZfhc7(L+k|L) z)#TLQ+W`H`3LoU$jg$XMCCF+>%P;o_UU->mDSR1>4wF2j4)AiX9CP^vKHNaCV6fa0 zad*?iBZ&&1*(7NfW8Lg3e@ibALV8Cv=}!Uw9M;Nf2cE|z3wd_88-dIT%p-9AE9H;- zy&x>pE@$*yEV>`w{`7TIDSYNRx2JO>el}{Y5a_d^f0lr@;Tt2lDb~3kw$J*40Nqz~ zp21}FdV@fXYwwj}U{^BVE$mnK=9|lUYR@)vg-3z&D~237e;3d|r+>)e-?)MWz%@wd zPoUh@Y)u%Q=c|byvsAKvG^#GGV#xAFkeBCw)c);fyiM1H_F4;oj zKRHIdnklvmdB-}NsG$dx>K=J~fW&?PvoB9~BmioGxbPD4s8V>ZQ0ZOhEH(VN zIQ@YKh&y-M9+ie7_wxP+*y^|1FsXxvFkZfmmWF?UMH4Mp<#I01-fQV7 zY{%FArkIAxJEnow#msxJ0&lh1fxI3N;KW{kYYMrVq=UR8)=-7tQV5m(tu?8IeasdH z&DE<7*HB}Qg{Ugy1HCwzS#eS|8*&icHy|-A zy@(;{nH41KO?Cauw};mrN1{-VO6ZrBinM*H2?GeGZ=J2EX8MrV_v*otii{_T{7A`Y z4`Y|~9JngvmVDooHD*1th_%pb7X3R~&t%rSHc3zxPO#vTF{lt;kP zWsM4#&Hhx={LT6315rgHS+Xm((`Ntf2&Zvkf)#p;llUuAvR{&^qHbPh zwJaa2Xcci$b|A+K?vgmw@GxvX0zl7@>0P6>M2HfFd(?#Q;vEfZJ9o5^wrv-cz%OUM z`q*`0_9A$zvO6os#hY*9F~j9|lAj;hRacYF5RFPGl=B)RK7AwZIVZ*O^NQ-RkG)E{ zDlW`} znE`+J+}HoaOShADPEv<)`k|&$2Z=*!6lto^@J;ZoymK9o!)RDpIp`9=k{PNHKb9lT zp0n|mG}{uzzX*I0Wzub|%jfCmqpAB=^)qBNhQ#33`Nm_wRBv*s{}x~4F5o5-dJ^g- zFzNQzm9;kso|OYb=*4D`ktVX3fY9BjBIp{=nMo_GX;i$!cVIrd^%dAZ({)JY2h0`! zNKg=)bY9De9fPF5@xE;MPh$O=I|w<9mXh%1dN?+`5|3cj+0>(nkwOsT3OSAOeGt~D z#(aMC^1;xiUu&AVvo*kh4DhDk8$1`I>~Gj#{P|el&(E<9`nOUC=zB0&K7w6);`Q9? zM8S$P(>YasGT|&%u)kW*?vDsF2a>vXh$$dJgZHAD@~Lv=xuecBeWy5dh5x?ukEyeM zMMks#8>asWCpJnUCQ_i>QqwxAYPw2YE1Ou3B&4aGUx?ltJa#pJ=yDF@+cgRr@ts@{ zZ2_e?ah1R>XYcILt{S|z)}{0rtq?BQ^b@*;)0ekJtPpOthc0DAXL&}4{l;|z$u!Ma ziCvo%Gvv-X8w~Pz6wGiHTPl6)9EjkN4^$jDkYoiV89lxG7ft`{HHMjK)9m%#)Q!Pk zC|kkP=QY0m!F~DxI~V2Ek6VH?f#I*2z#B*P*m_H<^yVcntE(%NssA>84~;)*aIDWe z+Qi3fv4#>6NM*s`miV1ynBnwPPY=N?}d1P(zzHFae%4u|!Fm@q(4@kgM4%?AK6iBb8_1WLN zOPU!3)e*q=A%%Ya18i}%K<|3;J-F1V-sjw^#UPDG5-SRc@1&#iHHRuf-KXur+8g=z#Bm?R{&_z>B!M z1I9TZi#gL7{r>)&J2?e`-l7Mn*@8-N-NFVOu)*cK5{xPqu4+_=WAhuvFRlA4V8I>V zOfBhJKXWF2aQV64Ueep~wJ1oO5l0NHL1BF?jAm-5&)L=+RN}4R--y}CSp5$;R2YM` z4tyrxpjc~^S&|`wBkE=V4c0}Wv5)rSD9Fq@n#>!divhW=My$Ao7tgHVsd6RSt@^I3 zfja`8ES8qUPK%?5>pM^(K<$HB4?-~M4#m)-qsE0N9sRynlTf8{8mcovb6W68H?Nna zMJDkEOF>QYoGyTHiv=x%`vt*xbtl+PL)EJGX468&>eW`0Q?puN(rE%)Stpz4?c}0+QdXSmvPXYr=Y7^wzzk!o0O*xikHHpA5ba; zyGFi|oP0BT*F_`88}bFVTw&r1rOUtK?jrY~X!^nI-;NEIZHz8pg0SG1)aZ_hK`lxkUO&f<^bvI_B3Rz`dDkOupXTaGg}0FwrF4^=Hjh4bp~RPjE% z>1G5=89$wWY;eer&)PS=KbD)97Lqx$ecTW@4}raXk-*EMr1>pOiJi{n_j~mhm1{() zXUwuT@5D-YowGXgias-*q4t5R#z!?a`n3)9o^C zqfkY7KFIkjm2dVnvppID9)E(ROH-_oC>PZ>(@hqQfRD{bfZ_Pcv|VOcobn>3d%~i( zmIf$7H|RiCwkJx^te|YS}ivrETqQmy;)EJ=vYb?(9-_B6&5DGe>-d zU&O@CjdRY{B`U5^FNvAdo81PI77bgs zutdRTA&aGM=Go?OQcKK=bodi!n`_V{C#J4RS0W>pI_>Se!b80hhtAu-im|P%wa4y1 z>}`fUo7lidiH51Avi2`?#D;oIu~%pH>S>TBX$U|_PrsR2X&$&6ofY~zRj{>$kDnEO z8dMw7pumb@9L0`n%hQgzYUTfZ{3(>H*8Mm{KKnjGp*h>4dL7S~jKYdtYLfC#U;I(8 zbF+)mI_UA|PP&uvZ!MsJd5F`p1tIollfhp9ZDBm!wA#HA*%TqHz`oj%*Zg0doDfL^Rc*o{VeN%`}*#kcHnJG|&T)Rel zhf%E72|}chk*#*M3#k|t+OKo_z1F=^5)RCoCFTcT;03KoS}W(*Xl`2p!7|BbKAM)v z_$tP_*BXpmlInmIQ^W2(<;*Ofhbf!{}cvYs=UvvtY#keIPThpYD)S2ElG@@AZO5csnL!Q7z`{AcZPtAn2=#f0x~ zU+y^y6vC}Jy;{QfwIaZv(u3?2KYo99a&aw5(SCB-=#73;cc&hRoQ!7^@r=%Xp!>3@ zlfCE&h%eCQYLWK|FSuqeIhQVrl(x-TZo0N?$d`f-TOgVx%8EWZp&vvs!jrb|7Y@6f z5L#5<38enFDd&_I-qS?ehyy_+?Mbjn{g<%od(MvPz?Y|`Go|VtAO70}INCABl|#30 z^B&rbWF+3+&!Qblr5%85NO}edpP>(ORUkG5c&K-!VA~V((5Dt**v^bc7c^(ICNd~+CyO8H?5Xg!-%_JaS8;%Q?c^({s)e37N=(n@szjv_ndT! z2J2b@SuGAIP_fBS6$#A*^o}+@qEEeC+239pbGVXsc?d-9!XuJpQ5(S zQELXsQY-AmXkBnPODLeQF^U75b4DeS^O;4*OyfX_dJkWS%ga0M2IhvTf zv#nYcsh?9TwS2Iv1erG&Zy(LhW`ir*Vkw!7@R6tXjJ_-gl#U&x%ws#F0@dBsFN4=g zmBN;%-bJU)oETD1+AXNc?%Iklkm_v7>c>|=16nCcm96^aW)XT9KYVO9$>HnW@@4~e z$E`CUIAh(1dg7-@zXPr6Pzqv#R-xiCHSx&Opx^PVE~k1bS&RDg{QFzx^9@soF5$X` zB>i@m_0Mt*uL~jcR7(|b2tfjQ)jeple(#^B#@;ji zPYhTySb$JnDdU6TX>%+kgcvUBo;e5~%zt1pV?gQZ>3a14{tbqKUqPhxna^*p`HW`< zM9B|L1eCbt6K_7cp!vd7w}Bz~$~O|+I3TI|6nOgdnCz>*KY69Buah;n*=s>iqno@9 zP?-Qln%se;p;6pR5=U2*rKMR%TEf!O-}%0#M-AEA_{Mi6Bzbfrc*`HwakI`-$kTa| zODVmHMX{bM%AQaVG{f&^^kZdPW{t$>BxY@0}EDj9Id*_5n%8O(^6fqx-lJwr9Q zNG%-gN*4j=J9b5--^Tyn`DIJb?s1O>Nesj!kzcZ(CX~$!WwTR}Xvjl|()YPD{o)sI zZuCy&wD!v0uEvkaza!UG;|avXh<_GeY6>tl;P-C#D|!cf;Dzcy0Yi@(1+eLz6b{kF zggv4Luhy%0|Ktl9KmFgT%L31ROb9s@c-@mF6!4* zXcQhpIZLLH{MBMNe05-u%J*n-oWSI=N+5^^rERYq$#*@Y-&0`A@I(FJyTfIo_DeiN&+Xv-o3EUQaKt{{JfDy6%Kz@ zO)v&4XuKB9``_@8S@?^WN1F@jQ-P%>zRe%9I-ux$BH}ZYirL^|{KadC?auJxm;e6$vvn8_=;`2O4qU$9s+8@EX*36066DFAMWtEsW4Cf2LAXJmBg*w^ zWYLm!Zet$9)HIP%{Mb56Si?i`03RxzK{I*5*BVginKkHN`v-JEELeNL?&N*GxE zyFnmKsLi(ZqY%uTG75A48*GRzZ$6up!RoVO{f>NaQQpdo*DyU<4m{Ekd;GFz8#-5sI|rS(G4 zcfXzSW%PUcn-yH{T_S68AUA$^AF}N8@@d1qhfZ1+Z6o$L%L?13elMn+h_A}9i(~28 z_%V8o7c_$>gRE{nJ5=K?E(UTcP_M>FFbtL07kfDluVY6+@08uxr5bmzN1@L{wE~+d zCB7wCfKv;|szEtRNWrG3qj10H=SqLXK6VcE=Gs$U8^>A3Z2w$_^E`$?Aq0suT=kPc zoqgXLXD+y{@Ji!r2OAD$_mZ=AxY4PhEeZg2@tj?&8eWd@1sv4ysgwI<@L3z+WC62} z!bW@7uEdFqqHzaZE4sm{V1>oIAw;2A^#h#+^CZ5#4`Yq5pY79W>O&Xl z#|3IiVx?OJ+AnF2(Ye32Cj0!dx{;eV=nX>6+h6T4isV20Z_}o4D~m6U##$xSYT6}h z`(w6o6gFJ%-^|Ch)BOYmWv`RIUtndake%Xw-`|pT9k^%S67-Psn2F^*hDomXVt)>p zylZv*(3>3tc(;J*9D|ImT5Oj4qd^H1DV50D-*|Jadd}u`1bAmW`Pa(*s~Z9b1_1T9 z_MDGvNU(W(S)P)i#d9upCUtoF;(6d<7$Xk-U+z!Um3>TJ`8yF(L2 zLA$bqfU$hDfx+@x)g{qISxohd;?=&AdqqEA2rj8sUavkvtVyv)pyb;`p=Xl;C)r9J z8v3mw_iwH~8e+lN2&~839Vsi~i;E00`-r6D^Ep6D34ZGM&@ig|+W+Q%7+5&fZ}Z8v za4S-Wwr|QJONv?RVBvzv8D^N@hbAvb5ZHsM^Es&~0`b z1a%h29Co{1pDTRpj*!NI&tYdPjAolty4<(UXF2x;m3)=|?!1|Ju?56_a&4hIxvTc| zpi087Ob4FuvK@E$a?q)7d@YX{zMdomhb7u5bsepWv=rfo{DJI2@q35aQrvMumeTpR z#>s&Yu4&>Fea08$FNd!>Jr|vdyZDEesuPVZCrED17MAzg>{g?*c$a6K0RD_X1HR9+ z2-D^UO(Wn`4PVtjybbkJ@r+)GzEV@^p{iO8Jox-F%mdr-`UDeHXP|SVuMZq*bu@D& zO<42)09~%j_S@Q;Pq4fD=eNu{^48O~g<66ohbZ*IT*a650E8XlZ9?;jT+f(OhXKBmA>M^x1{TC*|G#q=ScGn>gZw!9QwHmbB4fD(|(2kW* zvnx$QtEU3DJ2p2;6~x{g3E6ctTzmVZwcY?;rNpwVP_@weZUPV7N)m|S?6^`MM1uud z)LTE&A%7s(fU+<^;N2dO4Kv8+NqaSoKqQT*w#|eCDgUZ!6a&`tYl2tkkl8n>u_Y<_ zG1_H4T%T97Bss}QU^uINKqwisS5QxT@BVXOPenBelt!6^4a1H;VQpebb6di7n5wsJ zevLAA>X!YVTI#pUl7Q{4hhfOYe7$xsk0a6fKB_42)gLzj^GUTRv}WouNiqi3aor5C zltUb}z-srMEuH&wzdt9>cI^wIvxZSn`X`|3O@X!%PanZZdR)73o@O8KT(GAKb;-4A+>ohU}`WoD1|{={df3iGDu^gm6=>}H>f!yvvFOI~dW zTf!p9UgIbO52C&6ryz7|%ao^Xr0}g% zkY%hWUOJihk3@&Ax${Rx{RQU#QFQL{Oz(dj@0{*Q9SWf+LhiXI;&ci{616e6opQHk z2}3UXby2xTSV)eLVk4IshLvkJ61ikE3yq>}#%Y&!IloVTw}(gU`~7_0m)Gn0GAU}D z%M89hgxqula_0rtVoA(gStDUNtxT>rbzy&3XKr8tIbOpHzD0Ov#dHrmGBcsIBQ|QP z>AXF@ZD5VFK8allMPDO%FVWDgj7dAHM91{LGxmYKQ_AyIYYi=wP%w5ilt{>uv0peN znWpb+U$vQnS6E_oEjY>J9y#3jH2$$i+noSsFu$YkH#BNGSISS?w8*n&vPTs_fJI%%*DI~SB63!l$MOK|inTrt^t5+AgqA%Wtl*ZDEFZHCUa zi6m|dy|;AYlZ6D#c}3olVEx~t6q#NSb(I<3l#mMU&))T;MSS11$7ihCkt6mt=7#5* zl1JO&;b9<#_dWwhFn@~ei1}1qITJyHbhfsl_tDNQk&JH4sowy=jv$d6xPeI}kvC-# zTXX*#mnu!aK-9TqDm4`!_8N$|cY%_TEd%eL5?tX_;`5YYhoOzp2i;=}p*$muTpSpt z$Eud7zZ{}{U}$l|VQ2|{Lq1yodl_4KY>h@VKzMr=#C?wkby%-T zKInA1ZHaDpI!q;`ZbVV-Y(_|&rus>EXyLK(TqBQ@_{1w%%N*i7CZpa#T}XH5#o?(i zoCUJ$tte0hRSd(V|4LSS)vz~Wk5|MM7S=L%615|BJaDTpd(nAq^nM7^IpJ?uX#R=f zpxxqbAmp}4u5JYsviP`!vEB)=37RQbknQ_qRc7M24|cS~nELh=tc>y%26I4>Nb5-I zYCysJo#(*!wpsZ2QX@~fVP5LyS8QTh$+!_*RuwkW?j5xxf~g3**XwC3cd%xP1&JR0 z%!hx_8?q#R2!#H#V{vZPTYxKwApoF1C-R&X?%IWGw;p^it`d6t@}5;z2|H+R1^G%o zlH0`HVj%nF#mZKuE-%A(xMA6v2?$O3e;xNWTLa!YKXKdgjLFn4wgAl$laHYUwbi!I zZMEKeU;db^_oAU zlNY6CZ6U4oY;q#GOU8~La53%3J@>&Vn5To2uM*xLf+}=eA8u?AJ0^BRL}=jL81aAH zFvL&Hp5GJmh8#)Wv#MsAW_jMKt}Wy?3Uc+hYm><`T&B~#{&VU^U1CzBRe`ajX2`q+ zs}{KA@#AWnHo^e>Nrh|35s4PD{e4QaSSwP+H=uAa;;SjLf`t0_68cpbbe3tu;0lPp zn(9Eb;ljyp&OC=_yy-V~nwiQSMeWsZ58dxNKD)_~)!GkU&-y7QF^U_xvFMFmNGI#9 zua|H0myI|oS&CnAtPpldCvdJJI!6V~EoH&mNvr_!oS11G`&Tq(H+kI)Ok;0(3fw*R zBrEWy@U2d6@PA+W`rV9DDx7po1IR^CqeTLo?UWaBX2-y?;etn6x8Yc_@dDoKC&dC) z^T}VQ_ilS$StX6hHn*XykPU!Y!`nC|2#nW2ZrR7LH`D$0fsi?8U>|)$mOfrAo*s(J z_Rm4j4@}B|l2il52XuIc9zNEL?YR5LUX%UVu(9~2FOph^5D;`*`HM^!eXyXbdk`Nb$iIp(# zH|3%n@ow{3?U*i8iCpQt7`|`{1tIWS+mxad<@fZeU-EZ-Z7@*YOXMOwNbC5Rm+z#c z$NRkO8(B4gTtjUYCe2%ClUq6i!kY!>-m^5YTm)+q54ezWOm? zdoPa7KNLD17xX4^(x;xuFUpM6v5%;>k`mu*oR75(j&Pc1+&b6UzNha} z-Qx|E47{+-bS{P@Km^Fk>Mn~e*tQhozBg!hW>=pZdm41J&fI1Md}c3&{8LF$=yKA_ z6Kr9JW=H4Mt%!Hr{Qi3QuIV$o(6yt^WC{+p+{qLDNrTBZ8ihg9q-wtuO)4bsZ~2yn zEy=Ynnf+k@TEmeLpav%{6PgHq2}Hkswc7ihdF{aA#auhgG*(QXIpA!@VjYWA3nW;Y zw6av`Sv7MELN`j1@FDD^BG8NN)9vl)KJ5M9ra<)@&@CJ&oQqk+ORk*nYXI`geIdzq z4esq#ZM$k=9=mZ&;2ky<6U_2(N2DKN$(paMC)>&(S8BggEr14Gwp9XAvC1;K*?nZK zF40)4!*o}bBEY6I*(uC<5yI!a>>CxT5Y5V4Z^)E5>frmDj6y`$_Zy4|K-%}$tl-?G zXUE<}e!x!Y50;jeKG`_k4oBz>*F4Q3gTgu_0Gq2XaxoP?zy6Il4x8&wiDc=dP2Me^ z4+b{*2CC0Rn_T^`pBt5q|M)glX##VGtNh>xC*kKR5Vgk7{vo4tWru^&9e^H(i?@R(In&fZS)w*2vvQU>H^)WmJ&+s^a`2P)TA(A@ zKkL6BTcJ3}Q5uD4{#?q6T&><4|3tFcItyx2eLz~A#1x}sTY)aUPiPT~P#ip9kX8Gt zvADnh8NmE5{Q#n!NL(l{ePJU;@sp4AxwI<#E>0V3K2S@tmejT96=P;Z#V-r+ia~N9 z-7Vg|)a8Tf_2eS*#4hTQ&4>f>z|%tE1O@spCm!NuKMz2uU_Q%J1pl<$U{W+4_Izx~bE%qxFBEF6upHEIy8%(i(YS=h?UL7QEguoZz{94Vv z?H>YnOjP84CfqZ;q4i9almGW-%bZs>R6*(n@^4ZqXH0-t=KUd+w0m4s6lles#L!GS zO>52|{_wMdamt2hjh3TF5kzSvsU{uV3-+4Xt$`@_sL;W53s35Mx>hlAK4 z0|v#D_g2nQ269Rhk*LtT8QS~CxJ!+RPvG;jbJaIIrrJddreT2VC;f9OxO>eb?Z*JI znBHfgi%3|KXSr$DCE8&+z-$Lh8Ajkb$C75799peRxhap=7f>n*&Aq8QQ*k4vJ$qj; zB5!+r{p8kO%0e<{XBnwrZtC6sT??cXeSe0ihc)zJWsJC5EzTs>IM!Cqk*y1HG2p zk9X{ehyHwUPjV=^qzZF5UQVq^LQW(mQ@)dX!FN`l*dycW6U(9le;l@4JpQf zsR9rP^J^z$qZ?c1!#6Z@9qdDM7c|<{bw^Jw#uwd&9;ZWog^F|m*;Bw#?b-h}1vMxn zxb%>fLQtv^9k??@sw(6Vl{w8)<+RQYd{R+3`R;6kpc?05f;HOD(YUa89z z)LUEIulCr6UIGL>iJOf5$J3|n*RGy$HWNHgOl|y(QH#*^OWfk^dHnN$Is(Hplt5;N zJP&#nz`ORnPlmr37};#|fcADi_i0ZP3JFAzz<1gX=i2Z*|MG(Ge*g&tFtIdVbrg9% zG*TH^ke+XScpJo{kcin!6}VyKlcI$lCSh4;@u-CZ+L!9H&FfDi@m+Vd23;mU=S5;Io4}a1xOP|S>03{WK+E*b z%qQas&i%R*Dx<2M%>E>C6zQ)5)%?Hk1Mmok&{Cr*zALQiQ4s`~t3L7Th`i+Qb)<5B z-JK{CFBZ!&`17oZ?hBO?`>|Y0GMfv|MfTvUnQt8_WgUZw^D(u7SL0_rHd`+_i%Jm| zU^Z$<;$oCsj9I+1(#Qio7tQzui~5+PxgB_k>dT8o9oT#9YoWU;{<7TdhZ@;1)Ekja z%T7)vlPMRPX4P}MoE`b!T^w(x9vHd#p~c%5QO|sIvB`8)0CLjlx4>Z#o>dhyc{CpR!5<3mD>v08Nygaxr7NZCAs*Eda(1)S*L#f*gCBj_FI; z_4s+w?K31}BG(42!74lt^h@+!UG##h=ui59mCx7YA$82oJxcKwL>}-1135B2F*xVl zB$j46Jf}HjTzx;haBA_UrfJkd10hu)NJRs)NOBd78NzjX)8e?3lT0VnHC! zp*SE%(}9;2a@0tzDV7<$?9mzU!YCX>6IFIhtMnHZG(818B9_Qo%>1PQLg)B2+)J0(H`)*O`+Cqe zBOjXDk-H?0NkB|9*~Q(rY+-b;alekL=80AQO}|;AY}JsSdS@=bF4Aksv0$Uq=;gH# zj`#(nW_X2Kh{87TFwGF{cOY?o$L9ZjPXM;Ih;V0*JFQ3S0 z8Q7(<2dgD8;lsHT4|<-de?;b#{Ufw-A$~N%-Fp@~bEs2HFIMNYOcQqp7Z*Z6?gt(5 z0=yYq&FrOuu4g7KiS5-R`k2q~onO2&n$FhgE+uB*j$NFsO&(^lP1mMommg@itT8&# zMB{_#OzppH(lvCD85zI)YoRh@@~_DZx?T7E!#;kQF7GNa^b*wPv$x5`B?wSV*+_OI z*KL?m{Z&r7#v|2ejKsVhW5MtfdXyI)g;*3*l6JSTqCOMn6J+xCZB8ww5oNKGsOG#3}u$y<|5nYz6%*RY1PqjTL!Vd#Nla z-?co}Y;^tg@!6fbW>CVt;1%3EBB*8Uft}qCx^vVUA~tjF2h>(oO?~y@YwMP*X+w2G zQ(lxP9$M-Sa{E5e^1wd5uLNw!M?yd#E1?4eea0> zO=0%mxBBm8T9-;69NaJ*+SBtW*Z3~Tz{N|9*UP(BrECIKkE=GI12Zid^f<>kd|#L9 zb|ew@q=(0bLS#z6;wSqYY4{_D4ZhNrC2k=f7Zv?zEg!o2K0)&5uRe}7t8G{lm8$Y3 z!xi3~IzxXJSLwhk-(!dHu76|6`&Hj(&SS<)`F=^BYAyLAQMhrB8{_|Ns`t*zM23p1 zA;qPUIRE8B3sesgPT!67H6(OngLaRe!lhLexo0(6J_|~wG_(NaS#7*2h46HdtN8gA zJT2Dl!Rx}PxS%kt3vZsQ?y!Yimz0~T(uL6Ts%_=}O-Nz9xF1W6(Q$`ZuQz1D0QU8( z>c047K;s}IyBHwryUI}_KKJ>9wtgk@!~;L(dkt&;=8%pSnzk&wAoh+Rz& zdM0|8jMqsNBM4 zbTg#oNAu0RsGXcyKQaB+3&t7aXXM(Lt#;U?MKx%rM`;zK%-Xnl#h``(M$?k^kQ1*C z9n24#>He+MeGS(U&{bD?u@`YisZhWMOB_Gx%IBxtecgXFvTx;d&6l~N$3y?9JLi|Y zml%zb7N>$qvd{3;AXs6tw=sME+jKCl%VA1u%<_2KU$7hXcG0cft zqW5lkrEzuaysAm2R+H^+(8K-GU)HZQKb6|${M>N=h)V z4Z)YElz2e6ag!uh$8=nXKN`LcDk8$K5bo+B1Ry28W7`!7MK zq0JM%i$0{Y>38~1DlC~yqYBZ0iM1p%EouNigm`DUFd@gTE;}%8ENcANe%$f@DOIiW z*`Wcz^Tl$E2c=>XtB&<(QJX5$KmRfT(@P_!H`F_QS2MxJ#qOk0k=9HDB|tH?Y(5SG z&ITA{<148qftSbLo}qbXdAw6!MK|w_tS-E2)X4#V1To3SMogGFY57VV1VOi@YCpq2Qv*`H#Vq1fP~4+hcQ{pUxgukun#= zq@z+(21)>sAJL$3w@Ysf{CrcP4X_UcbpZ;xgBpk`So{#T2=HG4y^OiPnZJfY!Rw>c@ z7z1aY%e*x9uk_khzn8T4aUdM-CJ<5$ljAXBNA$z@o*?2zJZPBoxyu*fVd9drq9i)K z9kI=wX(NU+7!pWyxxmBWN>$g_r^zKz_{!Njo3h5-W80Q?t$6nxiPm#QMM-LHZ`7Ci6m_m{U$<7xnMm@(zIC{ z&+S3%Jl7r)chsVG7~=I8_3=g&kU~lEparGX=={-{(W>Iw5mIWwy>9V`oHZr^Xp7mH zy@c~0N4YnPs=5((HuPsxLx6Z}4alHmKf*m)Gd*yoEgbQho|97Te(K-sti5aleMqBJfq zH|!IpJh7*2o3hI}lfneO65k3Jn=Uf_Fo>hZ&LV#-{(ji3&8 z@t7#}yv6H}CZ_mnckI%4cb^ZrvFGbzmAIOCziMxU6w>RCYf4$&+D z@qd-#A;du*ypi5E+L58 z#Pt0)HID@-KY1=sDL0JDBWK3LvCO!eZVM($FLKr9;Imdg$h4yM^VUbygCOoWJlM!W zX4z71A@pg;wUIJ41f)ADJumF`9bE4Hki4vKFe|&0$O{vech^5N52atB-yc7S?noQ!VF6_De(5FB( z?t667Q2E*c^QKlV7l{!s3lX_8{g3r63lV7|>x6hd#yg*Tjlz>}&0~G5r-SjKzmmYM+`lfub=JU?H z^iy7pJXZ<>jRTnNp`J`*t+*Nm0l6XLR`L#m7nADhG#wWADhaZagV!-s-Pyam*X|Ph^^10l;$=X1|EK)qO2$$Fz|`7QB}{H;INZ3N3x9KdPP4Q%*?Cl)^p zdlBkjxC^B;`wrf7w4oBkOyQ4Pf8=)Dpe`Jqu%z4Sz>fUS&d}h_9x(1A$bJMo%zAIL z;GEGYvE!X=xu%;>2|Zy~Sg0atVBo6d&d%*y%HwUjgO9EDTm@^-rtaD_4xeI}8Nmboh1;N5Pap(8OTsT0ouuflq@)deB2Ouk@ctopov1 zVzXgb++o&lkYF%%B?|ml;{=2b&Y;%VPXvp^3$W9jY0d+tJS@lyRFm)Du%G z!IzM(azg6Ti$H{-QZy=z?>{H&yHo0R>#uWW>(-mu@}Roe%Y%BEm^-*hD;vPGBPTgD zZ5g1;QxCcpJQvYl@VxNhJ@VpVMDr={w>*w1WnzBK> zN_tkcY13tFKP~NL$b@CHmZ3$;9aIyK%tvrl-F9!l>LkyhioaFBpX# zKsx}^^4Q6M9q|2&Vx6iBpgTxAyu&4iH}FTz+h}N(ER-SWhRT$IYA-jTmmzle=Idsc z!16GG&Xlz~T5OYXMi*9nOtw|Vb__qbj@j8BR?!loRB3>N<#ZOfXbb20%K3fW(L*kfkw6cknMcWq!;HT}0jKPjHs18|cINU+JReCFIa zex{OmUm1E&biE=$y|5b%a&cOzQ49k4vt`4P^Axy3Sxgjh7j=i-1p5op6HKLmMa^_h z-10zQ1GaF=!CL2vWp>#h$acZ-82HwftlaIIa^pY&P!gA<)Hq2r*ajn7zd_e?*9nuD zSXt2EXBj?gDYw@&Nj7JFT{XD|UK$E{C?;e6+w@mG%w^7@K@OLgI@Ew4)R}r5Jf_KP z4BjF?46YbZQ>4O4TqixQ=8?WO3_2Ud!Wxl#fq;otMohzT_Ul$OZE4O^b>2>~2Iq;1 zbU6F|uh!gzmJV=eqS;i1NSrV0 ztj)$NtXg|3y6o4ukg;T`-g-R*isD0N+;o}q_(a^;c+kZok%*TcBq)9rsfW6aP3 z6Tc)UT^a!B)h7e4CSG~}o=BjXrT^LU`YT?(?_z@``^Img;)+C709;RC4qj7{EE8Itcxy4?mEqiJ!hVa4HM)VMl$Q z|6Pl#BM^~viQkj!s9U8udZ%k;&+Z*JS+Dxf*g;a!x{n$sF{Hn%GQc^Jz78}U>S#6}v>AEHO^$#rc5f{# z+lX5h+s4qj?cDd+XkFE7;3woL@ zFv_&A1=lX<=Ff*_?$trDTRD2fGQ|zXC2s3AM`1=NGNwBG;S;r*AEv~&2O5e zlEEv0Y!elA=xBr&|K;UnCI|QTJB53%G#&Xld&WB?0O*1m06z5Iwb*m?v3lLH<@8t* z%3)oJ+38AE^@ewlFu{hzJzv>k?eXz&Y?BRur{`IlvRXvBWO!3!2+kX%3{M7eg_-iM!C9H@8CQg2L|5 z+1i!2-M-(_d>UdYm&Bg7)bj10dS0bO2kXqnA3W69^nwdYO%a+?pNrDtJW1No@NlB6 zrR$Wk)7rwU#nwyOwBd3ancWP+B+)k6zxt+AvYF!vawH!y`jB=O3w0012UEYCBV94S zKu$u<1>jq2Pr6}CpI|kc5(H`8e@M;>i*N89wtjdqQ8ZgS>Hs~VjihcQj;z;Vnn>Ng z?XCu%S!rrF3lh7Be)i8}{wFiYJ@c_eyxi3GY;F>I^-xdC)yKd(^GjXh*Mn=n7~!Q= z{+XPsy)#a}K=Dm=p_gr8=`xU@lIQB%F518Fx|efi0KQYEosii>Ykd$lKPYyZ#C_;3 z4uV4CLKviY3fb!Hic7(fo%))G{A3hIHG7-qZgKbs{oeMNvt>XBC|jR4($k2# z+#PM5y6tPna<5~?>VoMXQLW90MEr~B^(Mo*WI6!L0OpIBd8?`6;zjc;r=0_e4*zW$ zOFsQM<*)Oo7QeTr3VQ3x=alIJsI{mNEuoiky&s>1XoHCn_uf1|IL^K9%t6IL)QQ)G z;>G)xL}-MAlbA$KgQvv-uMOxbm15ShyOL&%nsOH{se35l$)#mfW?&07RkBm2E)An$AWj#Nzm z;?YZQi0v|=_+{FifO16hyXGJrHY4rbE6qe8nd8_XX9*MpnfpzG#-a{Yl#Kn=_|<{K2HMpW49Q~-zT>8o^syFldvCKs^Z}nkch+2nnMpE{ z2t*YHj-P$MWoIRAz!U$)q@A|Yu9(=I3>LWs2mt+crD7zwWv1>;7sT7)yw2Y}7oi($*2J`-p|@ z^U3TF+)9k~^Giyfx%k=Npw31BCKO8W=Eq`xGM_gI*uP<=66dTy`>`*(rua^37Njl6 zt3c}}C~XjbsvdG&vdrSH^%Y9oNkJ~k{Xx@m1Tv_YLdY}XPEO4`2iR`eRCcCwe~{0a z8#WfdWXua9OnUeigX3*=$<1!WMCdi#X}g$akpAViE@j>_^48Nomd|i)c@T4Kc9X#; z06xBDIwFX1N-qcwSyA!!_6xeF?o+z7MLA+u4TTCsyxej@c-CKL>4Oa4p`s8CMC;@U zb-ySUsM^Rhe2{idq|w^w!;+KIGAp-Bkc!9Ahmn6bkieM^7aL!3(AUh2zVD~vdIA8~ zUr~SNQNHbNikd~Qb(Re?rJw;Pz}yxblD69QajsY7ULt0UCKhbxU;-;DO6n7^~9PbQ#&fEN;LzD zwA~+YY#5%V2p7=Ns_42V^JYv7(>#qKfJAOT^u7Y%@Weuz)fM8diVZ^Yps2Vso`D>8 z{A@>_!RctmPQ0B&9ewPD$hI69i}*%5Y%owqNQKBYl54`|R$;!*mo0I=w*O=-%x;Bk zcJ(Q1Y}PiV%H9tIFpc4+Ge=hU-A$Nw=gGQIh?`@U)9YpftV^WgN>I1XkmALTRw<|U z-Z!^@)nh+?5_5oq+`|Ym@iuz#XS`9yDp)Ibg1{RQ=!l^m)oV{*r{$g$Mwk!1T*-`1 zzx*z{Rbj)tibBFLMBRe5Y3xI>UWF^PfZT&F2_AQ^uI_sPa`G&n*cGeNf8DAXWG%3; zMNo>zF3jCo*$|s?j3CboGg`MzMX1ME*Z|a zOx;kT1M^J11FymCYv8`g;K|q-r51XGeAdYIGiT{}m7AK(IFvr17)DrWIsP{-RbRtC zEIGAHZp49eqQtCVi=jn56D(e4yoX$E^7x*C-@e5NdwVw$qPYa>{pPO6v1c_qL1q_K zHY$c2O!jz+;R>V2+)5d_9SNM8#fClKcv`bg+7{=V>>kXH6@i3fa8m(en{;LRna+Ts z?AwsbLZ+W>l**-jv-V6&lo}^nNrohUC(1_7r{!!Oc+~I^pE_1UGjBQ4`RzBz<#nKf z-H1ia%h)PbMGr=bie%>#tq^Zd5yl|HVUcxq$rQ2;bpvy&RRBx>dQ$IU$rRr(#ads- z?Ev5Tn_^Sl$%Z+QGDOad!6<1AmzL|uW{7jT69mjI(}!C3w-YTa9sFHMg?tY93OT3( zOdOcYrA8i++fp;a_sDxOVULe-&tG>wo3p@RycM;Au>h!O5E%LJYpI_TqU?!LmXxg28QbYpvPiT+2$T^en|J>(nRelVvNpOx5QELR;2-k^c@ldZau) zUV!-wsi`rp^VYYs53O;;3(Et{%|KdX-n$v@ z$FQ8%atdipQ#&%Asn+Kg;?-D8hvg~?I$nB{vMRE37~oV2U+B)Jz8mf}Oh zMLS5|?=fBWVDn;JJVQi^Ngh-|ZIHfg%(+*|_KgCMAPie>Bv4+(ZEXVb)urxAPC`@_|boWQ9$Yq6opl|O1^7y0dO;e8yecJ8SOT9X9lEEEv2O3z63mqkIpnJ#vk|$W9H`*Z!0K6o6>n^2u*JX4j=3*Fsw94$(6?8FPY{ZrTs!yN!fLRXZ9zFk;mIK)0v}E%VWy%e9Xd?^Y%uC>*W@0blwbcK8n^P^FZ@6nD z)10CCM|5-vuqpKcn+f$MhhP;%2wW6TfbPl~Aym!M(d-5Th3tr=h?^A0-9gf?(gw*B zDN~ygbhnxdyxV|`0bu9_?cLMA9-~hKj)>BdPUUVtgO>GkfNpRubXHZJYbuDJt{Qz^ zK<==1ORw5J5~C$@wD{7r4Aw^2OR3}p;0+O(hV=XQwQ9Ys?1I*!iZ5K@*JEGR-F?`1H8h_ z^V0J6st1Uu-GiZ1USx1%O*7<(NDZF z(x${Og5IeFkgV}yIvR*Gd7j+uwtu?6=<&S}GQG6juJk5GMGUvP(4J8sdKeX#ZNfNI zs2Xn(lUrOoy(Ge113ZE?c2$eL9Bdd;@tkIYhl%tZ8>n{fj1yja$WZ9RC=mUgC^~FhF!{bt;l78&OD?h@sX6mB4U?S=+a_H?MZq zDf-~`;lap#8~R~jnvz^UDJHL(ma^zd4%$23&16_ZI-q+-c2fqoKd+1ul?t)(GCP>7 zjli}2ZjvQdWgot)gWl}Y;`|`;Ay5?(x>qqRb7XW)0cF{}=1jCkQR&~uPamM&rZhd| zgCw-Lnan8Ef=n$3p2XPk6xspiG&|X>h5XgnDbD#_Gcf#fFxO2?y)65YqM;G^1=G-S z12XP)GFNGEDItECD5pg$%($=(YBvdf8;Rc)aAXHG37*GP_IKKL9P;81IEPyJaVW~O z!&$gG**FI|ximTDIB$Kg-NSv1c;>m)#u@Rf!F8iLLaU^MQ$hh z@~4%5XN);I#2j0TuDaM)|-lonCL08I#EA z@z!jz&DzwaNUI;X(TH8&jSudg^G6Vql9|>^vZDY-$YAzwK>w!(twx0z;vP12J{>S4 z1b7yr8w3y~GA**;MCq+(uTWtQ*-`z)xHGA1+h~wUSXGF4xPD~ahEn@V5T86bwqq86 zwXE&6dE33lTh4uSn~ZbY+7Z^4Z)Y2n<7gg4ib070XsB6ZhAy%CbLPJfGk|t@Q|!~( z_L2MOeNoiAeRkx`NZ@>7T2DYlh-DqQa=)FQq{>34py!N8ZY|<{l-i=yiByz-jQFdo zUFU$_8~p0{5DkcF(!6eG?a5Sb->nCITzRl?|9dp0ie@5??$mNx3JYa+kb7mIbPKLf zGL4_Nr(MRHc9|ydvi0$CZgJvRKkj}*XKh-oDtJ0boL24visZiDTx*_h)*1BAK%+x> zbhV#b^egRSm{Uc^Ntkp@IuWyHfZ@NMKDKjKH0ZsSo&A)kK)83@qlRSrzoMMY&BDS| zC#Z-_Loyk!a{Cab_gMdqs<~KZ)_i(1rT7Y}dt#>25DX;gKm)+ELLWPy>|)=o{RKr^ znVVWTrFX?Uj2!Xgod*Sw7P(?l;|7r6TPda+3CRI@#m1;Y2&~&be;C+d)5R4;%$vyH zG>P56f&KVhUm@zBp<0l(5rWuNch8WBXkZ}gfbtEPr2L}`s{yaLXdXGQxku>TSCWHY zH0+&k*vm-NkK*0W-=8<*eSL(;3K(_>g#?g@=IrM&AkXm^!4I`>hf8S*oDx^QAK1UK z^OPC5$E}j=XVn^q^FK7b3WkKvlFFB8@rI@pYB}(RRp@|xCUOBqDaauT-YgkR_es1( zSn(xHv|b!HJg1voc!$hOW+rjUL6vglkf)3{DhcK}m#?k%`&xCErecZv{v5GfI}4@{ z5(6^Z?rJx@xZn!r7Cc<1;>Y&4DK`fehMico?s|y=P(X(}})-s)6!aQyXAT*y7pE=d@(W!m1rFzod z^VZQxb=Duht-lzZr;!uM=`+M+CWs=B7hcqN_QaZ+cHAWLjpYmz_tXitffO0w8zX}W zb{wLrsgv4bFtDmTMpQ@FS#y7Ro+CGX={#RSU)>6wSNO+g#`O;>iHiio=O~%Md$iCX4BBoxBxZoJmoXn!Lx@%qOnOvGM3D2(=b8_nxz*Y9ib7%Zo`Zm^l^_HlY9 ztsPlKx8H?|kVkUlLGjFKoz9o(Yj%dTBp$a60xDHQ(Ao`UkeeUe{w_JsJJJbT*l{-j z^Cr9l|22jXTC9$&ZpO%2HXlQh;{mmEa$ylM(c0k0a1YI$dnicTsh9G zzG#+}swp*OpOexGkA2LF7|S&Z((oA+1!=~E`M4~|wlcfys=u@L?i#(w2CASG1%le+ zM+7CU*2kBN>&twPYZETdM$IwjLS&j9>fn{Aea$zI;#x)Ql9oZRMsNNYt|pTDz+gH9%I2fcYANEFg_Hs;It+R&}Dih3!u(HjURvt{Oq|^f?B)!Hd zY^~fqH>CexvA0359`K0$5~y_pj-FWW>~YUPfmxjt`x&!0E#EG-$VV1F^y@YQX*}eN za!Yb)LG7aoj|K3xBVqA#+>l`IB>`3<0BPmm|MFrPbUmf&GFJDQLG8_7 zBAM~ryG7EP73k7#mX0;4iugc$XwnA!zgf#f-P z8D~XDbxY+@giD-Ulyn9;7{3+L`W$Q&1)!ktTGUF}(DQ0T=~wwIdQ+`0)e?sU)F zW_FEI*C(894908`_(+D|P{-|%^S?KD9KwOY2hiTW$wb1tO41j;Oki?` z*8{-l9xL<^)XtlrVkO$vX(xS(owF*BZMeTP?bJn`C~H2%I$#C(jMQ zDqK_3**9R~>wjK-#m*bUiGR8+U|06YlN}Y zox@P5lu}y@3KuXwe$yEEUKv9=Vc3xHZ<1IE+%izHeRE`eKd9Dzm+_e-5=u~)6D@GBYh(;#zu&}HfF5EK-Wcl^6;n4dV)Fj=Fz)2rVufJ=XOc--;5I|#>Tn{8R z4LoS;=F4ZYtEP%hz`wuyVDMOTc$ie^Eq#G{0%ik9+@l5Q!tz7i{GTi9%G;76adLBGjHg*Pm*&1g@n7ZqBKpO}4AO)4{$>&mO%8~gLbFkf?vYz!(>3AZHW%BkyI z!tEfz4w!;bi3JK*{pTd)6x5V%b0x>)U-*ur{95$Aq{*DiApA7wmoOy8x5wP&&^ae+ zDOC>gp0;-&;j~oAd8Cy=h-lBz(Yc@wtj_ zTl?2*&RHCYKy*>E39X{*V^TKGdr92lwpX)R+h;QWc#yOT|AQKIXz*UeGuXC|rZgL1 z`dEO#JOA6nfX)Ijb7})O`Luz+rbRruXD%UdwO{QcO&B+mOS9U*qYv{Odh*jHEv&I&WYy<(NheMBlwKFcnG*&3?7X&KsLjR%NE3q1- z=@wVFb>~YR#@6g3~K@PPC-K{V-$4fS?U+IYJJ#ejL0nIpw zv6%~?uGewI^lsnxW*K?rdH*tdnQ94lrf3UulWe1L&DoJxzb&~wV$Y5{Gv`vOfiP+k z_eG&bMSInBt8is%{h0Qe2$89Or{?Jjr5{wSHp9c;=@>A13A`SrV-ob@MrN)c*KN}B zz;~opCt+CmyJ{6I_vzdC6z(FJG$Us2b$uKXf~>ciqEX#v^~{h&z4YLaqxXGg087Oh zkGgrDMaW-Q?(|}s*K*%aA_3$H92%Fk^7@63&mdh@=i8pSz%sH92#^5gB6&$ljnp<& zYTxk4NLK7f5xc~$8@>#`V~HE43W&*|=E{_olL9;oU?az9E*A4iwkmzC%0>^ae{`-e z+fbS%3#KX6z$V4JGF@;*$CQ=+G3{Or6qFfQeW7UK&^44Ig2v3yZQD&NWKWL8kYX%m zEpZ^XkjCs6cnc9r5fl*nBGsg-#fmUR_GB=8Nhz%gZ%Vcidj2Eaa~4z%FFI8Mrp}9= zxSKc396@ouKaeL7llx0LJ2a$;P_Y@%q5>z*?~d;8))Z<~uVDLuBz4^joRDCM@^wJx z*kazDR=&&CJ3B;o{@YZ}^?s#!-+u5@pms2{^tyqsTLLvqkCm5)>5@*!xPn@@B_hz9 z4L7;g>DhI}5L`wi@U?@<6K>)vUniRgC0LLMcK_oY`k9nT&}}+eT?zKT=ASd=Tv(iG z(8%2gAz~I={9jUZALV*91`KbukRQ~GngXZojHfB0KC$FvutCX`5H8ZFBzw~oLHMM@nQP+t81p|Ch1aoYszaEOf zDIUR}uMj>Pz0~{X^l#US51MmCsZj6|ORU1M_Nd9|f>r0h?_D#R&OR%iD@D8;Bc!DR zMz~)>_Pvtr@zh`BgzAB45CYm`&JMjaZqSU=X-b98k}xDG18kx3YOkCg8PU;o&hIF< zG)rSJNlRktuVA6U@J3}5BgBnT?HVQ^R- z&0IrHh^mmAtykSjhaAq)jlynhGBlf!jWT}air%U;wHqD6=*@zmMPF=bVR~?R$BDUhmiI`O=Ya5j$OVaj6H@22-lW-7roz&Q7ei9_0|UUb~F#EZQ>i@*`T8v7!4i;FG7S=YZ4_ z0&daDbOsoFwhGsIrFXSuPPO}MU2}qi9rXS`@ZX!xBN4Y@EXmTEkdn+6LSZ?NkzFmY zD23g2hs|UJ`CgzsXKZbNF4nq!>OS3{!vCv)g>q(=-9#MMBkdt=0t!Gd)h++x-n8*+ zkAM9d&9#*|xE=mhE(fZ#w1g3Tl?Ww2L8>ZWMdsk4pY3M@9tA`cbjzjOgol?6)zUY{ zm~~CHEVmzb>IJuhUDjvs?kOjEM27!#&O^j|q~P9uq8Na+lP;@jb@R~Wg5PuNPHS$S z#_APj>A33T<%WZM=jER9V8Xn0coRDU!jGYJc!U|BRpl$!s#oX!l67sgGkt$7_u?K= zooYi2fEeJ=D$zV|%v7zim(0W=(QEtEFO1k>TlMLu&9FWQy+s}@1LnnDaVSz9xQOqz zoZR~lyUy=*n%$c+$0I$@;KY0MmWUWUfsza^hGot7nrf4EFa6vql4Gn9GaFJ4g-(=_ z8nwqmN|6OoU-I)`V1sdsOsHK9z%w31dRC9NX$>B5g2wJ;mBp|8kdCt#8BoFFz>_5R z1iu@$sMlNTYv?KNrZMf$l~Y^me^t|?9R3^nS$p8ZSgVJqB6q6)Tm64qN|*eOyr8rb zIi3^3fE;CtiQZRp-QgekNiz){CxEN9saT)v>Pr4xBjQkGj zta-%9&ku^+wztEC79VM2j?ZmOI{}>CH+b#w)h%&@wR+%e+>xFrvtD?m!7l|8?GMEU zhj*$1a;3`>QDoTbQ)x~(k)_l1BlqJ#a8F=RcX%&-MU0#7r2GX^JdG#xj`PzKb59rB zwKg$Lt(6Lcv^1;E*6{ML z-WL0C&f(GBIQ)#KQ8hZWF!sbh^~?c`E+^v!c|~Zq3I@PQiV-5I>-x2HjmW!l>KY-+ z#~_Q-n6Oz>Piff5xZU!`XFvPV>?%$UQ>?YRGMnUbuQg@cyP^@w!ZDg&18& zSWme5xn1S&g5j(D1DWdC4U`yY+^Fw1& z16^ezKc;@E)EvG?^++KZ6tx0L{7v&xR9Z{fH_54_*pK!Hni*T;OA(Tlno$-pOy+rp zQ|drLSnBqXKtega!x_X>48q+|hZfbi+tP{g3&1`3n*xks|7F;*zmhOA! z#ZCoiCP!xobp?ONDWRbpn8T7m49DX2cgukr^pBqg9Ws)%4@szy6lT*_1QL?jUI#uv7r>!bw{0j~U~8X(@717P_p> z_dZZJv3*x6Oz@+tmk7&et_y!|pNVULAe&S55T{kTJSixa*$EiR3 zo4DXwPa8_PdbXJnDuLX!e&#=QI@9(D5hwIU+X`KPLiaakzwMUHvw;KABkA3mJs*rUKeVBf( z9OA7Ja`|NYJN>ESjcD~i)aM$u7qFfDHq$>;Y9W`^!hq?byIw=uiPE(6x zMuFn#3D{rs#`@HU0EPr!p-5gEb=C1yVTjF85|}1ks|@xu5A-RR3q;eQHN4r9_s#54 zg#vIDX_lpng?>GIl)8J&j;OqARrc+61hd`F;kX|2V?!|}{K{H_&eds$`;ArXRb7R)5@tyT6tpAwAV4$i2Ag#w zbKQZ{qEhOX*9l25KQXe{c*MK&DJ$}-EDf!9IKo6ejo!re#{9ffYWyjO>`5`uifI&< zu9aOXi{bN4-$|5+4aHr`Qv4%nb=zOMxrR1oT5xx$UP8cMLs7V)`dkKx)PR8%T76RL z#R0asCt(5n%N>4MAIiT&Og*+I9f^03R*eCD>mjkjtFfb=G-lHX&cT|ZPZmg(|2F440oOH$fl(cdAmmjSD`n#f)uP%i zTKJ7a`89?b@F%xdCXP&kOldf0lZ$J?5>dk23$Q!CLe~dm3dZf4`Sy?Ej+4)#v(y*$ zZm`tsP2Jr{ala7pacf<-z!uMh<;KozX&*q>FPqol?AKDwKY7BVg3U}Y$9tsS7aM9< zwU`*xDEV(paz%ag8y72WcxxGFqNo2{ub+3tqkepi8d>_Jo*FzImdA^st}J2Of$^T_ z+?So0UGgDxIzghD3N!6|FhH9e%>SC|EmVjA)lU#?4tXs=<655HN%tA8RQH*w#$T_K zXAhym98Lt-%1-y^+$I!aUPxUb8CT)r!@Tkv1Wik@sRLzXnM*6ZYrNg!$mQaDF=+BB zPgqcPS^lqCZ)k;0pe=E<+MBBDT{oI;@;+AQrDU||)L3r+ z*!cTjceUU9p=*{HNauKY&{GV+Gjet)7!v4r0Yi^4{KLVu>TC8W%Q=@+F2`yak@G0m zMW(EO+;Qh&`cdjX>CYhc;6QvfJ*U-iv69kgJ+6s`NHVei4cESs3^HQ7e*D5dX|z8F z_kMa$5j7Nu6vB+A2~Bf66iaLYnr~Gn*N~?-$_!2Ep2sl1`SmBsJ&EFE0#PLZ_#FQd z0vWIRxv=bD;+QSp^io|@tXt3faK|>LbNd9M59Fhu#s06S!IO6u2mEB&=ki~?631k5 zUG}@Ln_f;DaAL}JjRbpi1G5F!Po6CVi#LifgVdY&_gC$ho68bRQ&pseLmQz0dHt}- z_`Yf&`Q{V3UVvWrQeELl##o!|n3Qtf%&DWu^nZvCzE>corlaz66beO!vF1O2JG3hI z6S8|<+5W5)9`f(Lf9oE*v)rL$x-NSNabD`sgGQTZvvISQJjU5Gl-5(jar+s4O~#v? z3#oD6m^roKd4qp(Nz6hTs<4nPIp|f$_BYv)`Q4;QX%JCQ9*X&GhHkt)mbA}7mMU2_ zEY<`WXcE}F{BCV!t{(Z&y3NzlZh1Q4XcD^i$a7j3fbCRZ^VrOmrlqR2%$*mstK>VS zzUyLsQug_}xm~PO{cySw`5a)v%3}KptyvO97uC$^ovAaJCq*Zk>+MqIZ9cj&P!k~m zhDk0FR6@)^4uw(9-PPy-;nya;uH*0eFuO;#Yc$#8UA;#Bl_z*2Eqy>phA~%u0Xf7Y zE4Ba0)gG_qhPk{ac{Xhy17{!f4e1XF^?D5ct}=+@hc_1HMEJ1XzPd)Ly1=gdjFs*# z_!=KJHrD7arQ~@j!_C&LvP|d|V1SyOXB9?Fi3ruFF4;Zn3%fl>g*^H&ZU!*ZZz{%h z8}T~4+mkEy+p2RjiBrP-+>1!m1Zr9bbqXY*t-$fKHHiF2!PGCmFQ~K9jTbWBMqZ(s z>Kn5We((vn37WNvF1eHF7;N56;GZDOE!-aZLHdLb{nW>}l0~GeJ(-@LaN%S`=<;Sg zN3%=ic)>4ZIKk|5paEv-e);;ggI%>{?M29Gy^Q=26h82qS& zK^c#V2(>Ifo|3IdjMD#u&Az_0DKd#IxYu^9@?_R;*k71BjhtMqYU){qIvdooFgXGc z@o%((={mOX|J%|vEn^Edo;Q5&^a4@D_*43FB&*zbH=D=Jl5kMqNFfH+ei&YJi%JZK<9ht#zT`)OV-fIydPj5rz z&_-rtuFWjs_HTvZ%X>KhR7e@%I~ipsx&=gs`qjK}j0?<@TE*6bH51&tpBc z{QLYzW?${u$44xql28Pp38%an@jt zQOt=O{MTcF5kJFH%|QxVQ7qsV`u+7Op>Q;7y$sQoH!KIG29b($;8-xPB~_UT`w?ND zj*q|1BB7=&Dta&bL2~VuyXf3VbXoHr&^>hT2bePRS}{AQT-hj-T?a2YapP|VZPxgK z?HdrD!k=9=|DONV!@YRwD5~PmRJ`~x?q7~)^M?$zN63UHv8XOWPFMsP65m9 z88lbq|4!d!n8pmIW)PeMfj&k?sNAgz5mf7{7X4Y)NexpJ`r@kPT6BQPIF^@Bz6CIM z=P-{t$OJ@Kh6hN$Z#9{+^29L#hzvkoS#HfXV+L8LtPKO?^Nt|`7Z2_FBm|Zt$xsd$ zMExK8N5%b<;jT@CdmO0(FZ2!xk8i?vrm~K+VT5$9mVpf6q3%9?qDY$tq#JJ`K_+8R zvFQ7)Q?Lv4oe!7Gq`ZIUG$d34*e4DrgzGzaua3~qH(&nBXbmeJaP@Qs>=9V>20kbZ{xKD(h)q; z2Q$BJ^1es@ajvr0?o!AC5FO1Z{~o-X)03|AW5f7QP>+;#vIum;Hx_Z~}2!{eBW6um2K8{~&T= zRn6bszX6!`BG8rDc=5Ya&lm_wvJR5iHvBmQLEM8DEhsh5u6WIg&F!95^4izxVf`oL z%bv51`xvi*y?{=D3$|TCG08{?_nHS`_teqm-0g!uo7G3q889EaTx6OL6w?qxC%m@8 zw30yiC(eV?c6hokq*(6e2tF{>G&xZ%?7C4S=1$C77CV`SM4)h_Yza3GxE9E3jOGAH zXyR&cq4};6osq5pJzcuenXOAcsTPUu;CL+05;3h=!hn(2LH+V(?%n&U&$f|$Xql#e z-H~(cAc4j1m_(&;3B(gd2UJ}Po9=$S-|3R^9iTal?M2!dyF>m}P-Wotxs%l?J?vC> zwnbEc#szgi5wX5H(&oWwXg&chxXDN5MUU4wAne@XLqmI6E(| z2pq6^|C$@FD&S+zReHM9;NH>6R%y@)u%L=%RlEC(nN@ou!5*5ZP06mXcuz^%4f`Hr z6#C?y>z|s{A`p`V+Q>#ObI>oOLzw&}ZzX+5a!7nFb9;fsUONcG+-WJi9wKNWvb_FZ zZre(TNMDul!)m9MIxH7=adqXP%keDH2Pw5oo0|xGt}?f(MZuk|q|j6|y*UAl?bSS? zD=UF3_so!{70>%<1t?36FyIL7OmssQ{cqeWO0)&FFXw$sg%WwyDD-_0vD4wCz~R4< zb$ zL@F@=TR*Cw9cA4YjhoN?)tw$)9b1CJ71``1d3zQ|!QGJ@7SIzQ0^F^QnL|a#`95ic z^u2x*>2b$Ye4wRKPJH&RYLdX1gTNH}>?$Pci%07WK7KZgU;g!d{9x+?&l~fr+kH!k zzF%CwIJ7my^bXd5>`9k|?u$6|Vl46HcR_*5nqY0{lUdL0ZR#-R42#cKnUn-}HR9Ts z9$TL==dm&@y1=m;|EGK_yBuU6#$q>fKmPqrEp@CYQX~%{qpz!wm1_WcetdDc8!(1wRyUu!{A^TKx#rn6rC+Wl)Yw5 z2Nsm~^LLv#a@*=Njh((hORd5H2$&BV?wOQ{5=W_`Vd>nDjX}LWR%TnZNuUtiuaF0! z68*&_3acu`MvXMQh^^N>=5aN}F3B*c30vlRi8#r>eZ6sL9& z7DwOsE+0;>8s`96GR(jHscm|Ri#L%)CR3!m{(SO0R|s~$g&VBV zcc)zEzjD$IqZ~@wr00@7?}iP{H3gimBO4sHQ~aP9Q{6{z@L%#I<%7^9Qs~wg?+`t8 z#(%gms+512Q&-NMbO;G5Y1AQRKJ6Q>H|CL6ct}iP1f3A@F{O5YUZx%EOuo*SYgBZE z*-772annD&pw*<4f*0d00ruYj>?KE6vrlr*l&?j# z4~x>(-dXQ_SelSNk*-Z?hY%p5aF4-s!L2Ae>%MN1*9X&Js3l0EKhVWqbdH+Uqm zb4$sU`YBAk|H=2P3;)pHYBr7aLnBNCE?}9)x~_3)7u+mvTq7g)v->$?tF-wg3!~&y zDKSGTc@iOTn2cBjADD&`>{#UM#w5y9dH-iJy`b}|eBpJ#EXPENhU5m`|K7e2a926AB zvCt7;{d*q6O2D4XH~RrI3hhqf^7o_ zd*gL=?2NaMB3&@xbrG>yUludQUr#@dm0kyO#*wcHVSaM5h+|N4AP`$w;2*z2*5`G` zRb+b$U-4`NsnTwfNmI8PG$!@snijpltsZ-wZDG?fo_zM9;?#w{UO88^s)Yf-AM=bk zqAK8h_^H+T!!gw?SetoA?i1>aR7VWSo#WNM694}{-P@ejltpz;Exy}BIIjf10Puq* zQ>bcKqSef)^l;dT8D~|ks%#NWehGZs9x_i5;cTUD1yeA%GDPfEcxJps2n?uT_S}Sh zx7Ku3UVMpBdn^yNPfeeaHLh=Bdsb6A8(VHUXr$29;&s&++@0v_;bT*j4zX5U;Sy22 z{Y6TJ(gEdJyXfrZTMF(WTh(*yu=~LwfLWa5n~jbFHS!+omxm&;YtNT+x^sE^Jw55# z2C9vy)}<-vBq>~f5vdYha=m@0jpXX=;RAOj@cw!nc3!)RD7p|-#&RtFt})Y^VJ?)9 z5%%bIudLasMd_YQjTy^OK&&c|W2?EjlhX#s=BTgY9-4^Kcbz;aRtl?BO6Ezs#g=?) z9I`!*nqpECDT!eD&vYpfH*Qo@o)x)nywVP(#Or9|Pd;uO59IDejUmE-6_&hklC?=3 zZ-8G8GuQQ#J2cE*x2p}CQ8Kl4v0q+#v8|Ko{D|<_NV5as_sr1Dxh~WN? zQ;`wxew9VMV%JexleYdDqDkK+o_)ANEDCV;SQDkj;%08?T;bt1inAV|CS4NY>)u6$X^M7yOGn9lIpkO_tI(63m z_qBNt;=9!PIO^G32fZz*s-peun%?G5#gYGw4mGcr^PT2g+T1N<`T}P%vb&$U*9w~I zx#?_79(t@+*YVu9-Wu~`F_$w3YmSXWoEB)%u*_2kR(l*0!xH0)S(1Y#?}Aoh{$6kH zUkIu!=eEXsuT`B^$N`kJl^&o={|hn!_1JwLoEQ|}wC9F>_36g8TtDOdVTYzkIg5C} zGg|^56~o(qZ5AR9o7>~`J#2eXzgE|!Cx-%ca-i4O!*O8dCleupf+xM;L>Bs^U8+m@ z^ibe&f;;o#6;#22VQxXr^KMtds13{pJl|9 zPAcdN%JW~s%mQ}TVbS_)cAypm%SdN?t+}8sHcCA+i95ybaHpPJE9j@mH7P|Sd{EO``a&#( zS}ec`e`n)WXHAj`Hma;DO|@eWWH2Zt3qf9R&#EpEWZq<7;FPQK0b3CTDh*w` zs;?~K=tK;yvQZ2QR;kyiecMCLHOCB_VYWtEQH)zOwDJzbt$|f7Eq$&R56uL>V|dz) zTj=1{+*f=lk0HqTHU447BpB!hjL-_2F=wvw|d7GT3V_@D3bom+6#A|^XMLg4wf z9~1_UU5}r2R%we396S5E4n5YYQ>G91yiyeutu{Y6Nhi2d(=6IPzMdwnG@KGP;iE>? z)%i!nbv~7TDU?sBmyEJC!ESemnkG58L_DOqWHaYAa|woIiY+=jH8-+$z0DM)1we;> z;w=#ET_x`C(8fH2`UZmy4g)6wIKdy@s(CE4^x5rr<>Jq^veN7}uR+fhluMqlD#-6xu{q+S>jz~>h!5PH*dcwE2an?(W& zHOwtK(MGJlf<6k+1I1lnZyo^HLTOQFqU-eYG}GHR`=cZ0etIPpONq^4N?ry|IhK%K zl1n&mM#4i1->|dH0<9wMcZk|1ha|jqu$C%{eIprk+09ck_*4%Algv8vbL$7X_9AQJPMP48!^Qc&mE-hE^A^KC=4X=&nZ?!QH;xji999$JR6#nl(ka5O1uUyPjMIwQI&P?<;I}qRNUICm zZNgCx5E-`+6Lat!ul#%kyC_r(+){VCpjlItC5YQ!lzY4?1)&jRaeLj}eYv0TS!KWf zjXiwX9T3C9$MOGa59W%f$ASOB1hzX>eAxx)lmtQgp#J2gIR&d5-$%avO2~yeS7|B# zrqm<`LBvt;*>F+mBY(MmTIu|WS8`4B9S(U6{~hRlVNl8%LKw$&CYVn>)-*`h7@X|E zgrU`3^ZZjMf?9IO;GG9}lDP1^wuqjBlaLVf$JXAL`r3tmAIrBI0E?u%0Hqg(_R=$F z-wuN-K&}4((@`|XlL8W37*f*iSoZO*=SgFIdWvHL6YI@1JBc zSx2+{oSmjm7=zV64TNJ(d5)e}IGjT@YC)v!>0@T;ZnB+xB9@7?Qz_`f#Ps&#TRn#e z?;AAhe9kbc%>^4PABgDbbvZk;q?J>V;eI-CkoE2J=WxsOcRGJFZK@(}a%&5d(csa9 zlL2*|LeT#v`epS0I;-#IJW0+{@yn+RiVbIt@Gpo|sY_~~QLI(eBq?965N!?>HM_BM zPL-~>j+}+L$ERxFt|tamJ~Yf~Vf58dv!csg^-LtfW@M^7I1nL-bh3i%DpeBYTvYXQR+7WO@`xBYb}4%b)(EC#z);Sqx3~W9=;C5(Y|PRxtswDl|o<&5lejTS*X@SiFOP=rzaH@~A%Y0!p9=l|+hPLX#`pBY_Q-eK9V_28zwi9H z7td+$r!?S1(40`MN2z@@s6L@5m5Uglk(z2ifer|9Z7?9R>9$sN#OB&5k;4UYj5=37ekNl{nB1d}OJ4%J7yuSn1K4ltR+)?gispG? z2D(|Yy*OdUbZF2vCaAKs2U`dsSWbDo3>Fl`|HQ|4Czs8?RTEs-cQB~$?X9UIcw>r# z0ecTXa{Sd*II2@e2@S*{lwvo(t5g1Ied)h)Q1}E$h=WC$geN)Yvh-GvY_3A|+t!KF zDB5u`;82P_ppV~0NKOcwz%!@B^1cyG-#SdxLGU)^9L2qvqJYwk{BZpoiKbPTbP7=x z-Z2xU)+*yxhiSAntESQBt2h9*Js}9Mik;3ac@;X~w64G(wj30DmiX%XJ{1baRxI~) z3UK%kgI=;5Ktd|7ymC*? zSAl+PmyoChtfD|Q&*2D-7La9T_q!L^wuKFb zW}kjGLiLwH2d%{LPCZ@Ida6>x%7O(v#2f99aEloUf8~*}|FE{dT*;$5w)6cI0|RW^ zE9^u~T!7e``w@{`SS$T~Z7TfL(N7e;4~$Z_gZ`1!@@ z&KI1&nV|g-4>CKJ?wsX_s@CqO7pj@rJ1k=W zbq2U^{TF5W0-8mGiE_jTKef62aW^c@&<=j-qTJ>xA6qIK#9Skw8fSh8Po&KlX zM#kejh&BRf7r+a2MwEJYdUunt%zH}cmjB;j8>>mGw3tzknAmTF6^A;%NtD)&MY9p< zp_CnT9OGNS8+-OS)}ZUm<8#&Y7E0SZ<#-c|zA_Hg^jJv&gC<7hOlr4imlIz12Bu*@ zlWZDk`p#l++%fn!uf0p|jvrlY8=7UCk>08eLTU?GGzUMPtRgf3X4H74rc8ydtN0{m zxC>gV>pvt&*W+8{GQ2%B<)NCNr8isIHVd3|F3v4IyAa1;!z>y}az1-KxqEx)VuoL9 zQQ=)#-?E&P^xa8)B)IV+1H?e%VQtSZ2uki6mM;N~%%AsY&HU7Ix>y@!{5M08a0}KP zL`01hr7%mOp8stzA|YNOG5MSMN5X)Diha)PxfhY$facI2ZL4;R`@RWkcb^EJq*7>1 z8wE1;CL7>qV-9~wBifA=utu}>o8*Gw;Y45?Tf@z%F8JP3E4w?MKw#$^_jW_OPb)pE z6<}GcByvFUO-mWY3<>|E19Is22L%{%cc(1<#pX6(X<>cD%E>yc|3-Awu`F63>V4Hy zIC#G`f&wooBBNF2Qov3H^bLi>jn#!u{tV|9gL+#sY>$LTz3jE)c?qfz#JU7&Z>r&U zt}ez*M?@^wEE;nv1M2MEW z=PQNFb-g0`#&jNXi7s}huqq&-D+}FSQXldh_+AfwZolAm&TX_$mP)$aS546!$Qfrd zFRJrZ5`uv9A|Vgbp<(^s7IpK5V%GqrQ6jM^Qif>g_eVEf3XNporZ$8tbj<(!|$otE0cSS?gUmVjO?AeXO z0|P|D2hU>T#TpJ~T@In?C{nk&Fzsd3QEgywqsw?iuZ)>10V)o$=ezzA^a`&#BGjoJlGmCFe(s0*qG4w{4$ zw}`9Xe9*@=Xx6Yu?ts6X<2gDSpM&cWs|~pJ3ccS0G}&YKsG8c{WLFf})Z{Rj;kA7I zSl0CV61(dW3Txun@$5XH@dE5cwa60fH7gpGp50N56)UBCw65FD z=s2BI;OUHCb(Tj<>>ydHTAB^9Y%5O^6i(s2u1)Q_s##r1Uu#K6KEFMq>{?W&9dn6I z=)7xr{y++C2?2xoph(_cFE*26NM=*ZMzuV{2p|CxVZ$AQi6Sez7qrF8e{gIR1gNxg z%(Yr*7#Jy|(PM7GRVww${SLD#paPoP8Ijb~)HC23C*IR~X^IZubvcFp+(}Z7GZ%)$ z{pul6HU6xBB5X66RZpy`QG<^uH1v<%E{y1-QMv?i3$PngW?fdY8ROs2I>gWBU#|TXSM?Q84@X2J9&w|Tr;dP@opo;pbtQd9 zG?IVNRLbkgw4Bjz+eQjzJEtRMP-q%;gH@$6C5&5*Az>fCDUH6qUdJzB9Usf<4A?_D z{uY9`jRO|pl`haUCjeVxc%RGfUy9|(+E`>0K43PgB3$?={U(OsE~+DDfWUU~299iV zKa(O)K7J+f$XF{evsY>ReE-lTRB}sxgjF#RV7&^%w0d&#i%mN~oAaT8&0aGmwm`)nIUeun_NOl;aD z?f?aUAi#aGaBtgsD&N$)Dd0^Q)BRC8JJX^bt_6M=q{T7NVj9cAy>%UG(O)qnC)vb@5&S-W`i2d4wvV0m}y zxBGr{)r!KU65!C=mq4bJ1r=4fAJ-1Mi%HZ~9iFZG7-LcHM-?@wCL6tY5n;?hBJIJM zh(UthA-Rjj@6;uP%rE}!I^vE&( z)?EA>j~nju_Wp2h6WFqynmvibRI(;urw~FvTaRXvvNU!MBO8hB{tz4HU2?hU75Z4j z5I6VhS4>V$&h>zp@`xA`a2BoVAWnx|95MoYa*$MgsB*Z`9k1#%Zm#A*kd#V4&t2oS z;7gnl2o$L}G_6`5G)0%9dAV&99aHR-tId7<^_JMVh1z{Ff7g8!t4H&dTt_U|qb-Lx z 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 - - - - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - - - - - - diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/FeedModel.swift b/KH/PR2_Lightstagram/PR2_Lightstagram/Model/FeedModel.swift deleted file mode 100644 index 41fb033..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/FeedModel.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// FeedModel.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/15. -// - -import Foundation -import UIKit - -struct FeedModel { - var feedContent: String? - var likeCount: Int? - var nowDate: Date? - var feedImage: UIImage? -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/newFeedTableViewCell.swift b/KH/PR2_Lightstagram/PR2_Lightstagram/Model/newFeedTableViewCell.swift deleted file mode 100644 index 5efee6a..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/Model/newFeedTableViewCell.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// newFeedTableViewCell.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/15. -// - -import UIKit - -class newFeedTableViewCell: UITableViewCell { - - override func awakeFromNib() { - super.awakeFromNib() - // Initialization code - } - - override func setSelected(_ selected: Bool, animated: Bool) { - super.setSelected(selected, animated: animated) - - // Configure the view for the selected state - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/.xccurrentversion b/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/.xccurrentversion deleted file mode 100644 index 0c67376..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/.xccurrentversion +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/PR2_Lightstagram.xcdatamodel/contents b/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/PR2_Lightstagram.xcdatamodel/contents deleted file mode 100644 index 50d2514..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/PR2_Lightstagram.xcdatamodeld/PR2_Lightstagram.xcdatamodel/contents +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/.DS_Store b/KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Int { - return self.feedCount.count - } - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? newFeedTableViewCell else { return UITableViewCell() } - - return cell - } -} diff --git a/KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/userProfileViewController.swift b/KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/userProfileViewController.swift deleted file mode 100644 index 96823ed..0000000 --- a/KH/PR2_Lightstagram/PR2_Lightstagram/ViewController/userProfileViewController.swift +++ /dev/null @@ -1,237 +0,0 @@ -// -// userProfileViewController.swift -// PR2_Lightstagram -// -// Created by ROLF J. on 2022/06/14. -// - -import UIKit -import SnapKit -import CoreData - -class userProfileViewController: UIViewController { - - var mainFeedButton = UIButton() - var feedAddEditButton = UIButton() - var userProfileButton = UIButton() - - // Add/Edit ViewController로 넘어가는 함수. 우선 automatic으로. - @objc func clickAEB(_ sender: UIButton) { - let addEditVC = addEditViewController() - addEditVC.modalPresentationStyle = .automatic - self.present(addEditVC, animated: true) - } - - @objc func clickmainB(_ sender: UIButton) { - let mainVC = mainViewController() - mainVC.modalPresentationStyle = .fullScreen - self.present(mainVC, animated: true) - } - - override func viewDidLoad() { - super.viewDidLoad() - - // 화면 흰색으로 변경 - view.backgroundColor = .white - - // Username - let userName = UILabel() - userName.text = "JKH" - userName.font = UIFont.boldSystemFont(ofSize: 30.0) - self.view.addSubview(userName) - userName.snp.makeConstraints { make in - make.width.left.equalTo(view.safeAreaLayoutGuide).offset(30) - make.height.equalTo(70) - make.top.equalTo(view.safeAreaLayoutGuide) - } - - - - // User Information - - // User Image - let userProfileImage = UIImageView() - userProfileImage.image = #imageLiteral(resourceName: "IMG_3117.JPG") - userProfileImage.clipsToBounds = true - userProfileImage.layer.cornerRadius = 40 - self.view.addSubview(userProfileImage) - userProfileImage.snp.makeConstraints { make in - make.top.equalTo(userName.snp.bottom).offset(10) - make.left.equalTo(view.safeAreaLayoutGuide).offset(30) - make.width.height.equalTo(80) - } - - // Number of feeds - let feedCount = UILabel() - feedCount.text = "1K" - self.view.addSubview(feedCount) - feedCount.snp.makeConstraints { make in - make.left.equalTo(userProfileImage.snp.right).offset(40) - make.centerY.equalTo(userProfileImage.snp.centerY).offset(-10) - } - let feedText = UILabel() - feedText.text = "게시물" - self.view.addSubview(feedText) - feedText.snp.makeConstraints { make in - make.top.equalTo(feedCount.snp.bottom) - make.centerX.equalTo(feedCount.snp.centerX) - } - - // Number of Follwers - let followerCount = UILabel() - followerCount.text = "1M" - self.view.addSubview(followerCount) - followerCount.snp.makeConstraints { make in - make.left.equalTo(feedCount.snp.right).offset(65) - make.centerY.equalTo(userProfileImage.snp.centerY).offset(-10) - } - let followerText = UILabel() - followerText.text = "팔로워" - self.view.addSubview(followerText) - followerText.snp.makeConstraints { make in - make.top.equalTo(followerCount.snp.bottom) - make.centerX.equalTo(followerCount.snp.centerX) - } - - // Number of Follwing - let followingCount = UILabel() - followingCount.text = "1M" - self.view.addSubview(followingCount) - followingCount.snp.makeConstraints { make in - make.left.equalTo(followerCount.snp.right).offset(65) - make.centerY.equalTo(userProfileImage.snp.centerY).offset(-10) - } - let followingText = UILabel() - followingText.text = "팔로워" - self.view.addSubview(followingText) - followingText.snp.makeConstraints { make in - make.top.equalTo(followingCount.snp.bottom) - make.centerX.equalTo(followingCount.snp.centerX) - } - - // User Nickname - let userNickname = UILabel() - userNickname.text = "장경호" - userNickname.font = UIFont.boldSystemFont(ofSize: 17.0) - self.view.addSubview(userNickname) - userNickname.snp.makeConstraints { make in - make.top.equalTo(userProfileImage.snp.bottom).offset(20) - make.left.equalTo(view.safeAreaLayoutGuide).offset(30) - } - // Subtitle/Content - let userIntroduction = UILabel() - userIntroduction.font = UIFont.systemFont(ofSize: 15.0) - userIntroduction.text = "인스타그램 경량화 버전입니다 만들기 드릅게 힘드네요" - self.view.addSubview(userIntroduction) - userIntroduction.snp.makeConstraints { make in - make.top.equalTo(userNickname.snp.bottom) - make.left.equalTo(view.safeAreaLayoutGuide).offset(30) - } - - // Set profile button - let setProfileButton = UIButton() - setProfileButton.backgroundColor = .white - setProfileButton.setTitle("프로필 편집", for: .normal) - setProfileButton.layer.cornerRadius = 5 - setProfileButton.layer.borderWidth = 1.0 - setProfileButton.layer.borderColor = UIColor.lightGray.cgColor - setProfileButton.setTitleColor(.black, for: .normal) - self.view.addSubview(setProfileButton) - setProfileButton.snp.makeConstraints { make in - make.top.equalTo(userIntroduction.snp.bottom).offset(10) - make.centerX.equalTo(self.view) - make.width.equalTo(370) - make.height.equalTo(40) - } - - // Feed/People 버튼이 들어갈 UIView - let feedPeopleView = UIView() - feedPeopleView.layer.borderWidth = 1.0 - feedPeopleView.layer.borderColor = UIColor.lightGray.cgColor - self.view.addSubview(feedPeopleView) - feedPeopleView.snp.makeConstraints { make in - make.top.equalTo(setProfileButton.snp.bottom).offset(10) - make.width.equalTo(self.view) - make.height.equalTo(40) - } - - // Feed Button - let userFeedButton = UIButton() - var UFConfig = UIButton.Configuration.plain() - UFConfig.image = UIImage(systemName: "squareshape.split.3x3") - userFeedButton.configuration = UFConfig - userFeedButton.setTitle("Feed", for: .normal) - self.view.addSubview(userFeedButton) - userFeedButton.snp.makeConstraints { make in - make.centerY.equalTo(feedPeopleView.snp.centerY) - make.centerX.equalTo(feedPeopleView.snp.centerX).offset(-100) - } - - // People Button - let peopleButton = UIButton() - var PPConfig = UIButton.Configuration.plain() - PPConfig.subtitle = "People" - PPConfig.image = UIImage(systemName: "person.crop.square") - peopleButton.configuration = PPConfig - self.view.addSubview(peopleButton) - peopleButton.snp.makeConstraints { make in - make.centerY.equalTo(feedPeopleView.snp.centerY) - make.centerX.equalTo(feedPeopleView.snp.centerX).offset(100) - } - - // Over here_User Information - - - - - - // 하단부, 버튼들이 들어갈 공간을 UIView로 설정하고 Background color 지정 - let naviButtonBar = UIView() - self.view.addSubview(naviButtonBar) - naviButtonBar.backgroundColor = .lightGray - naviButtonBar.snp.makeConstraints { make in - make.width.bottom.equalTo(self.view) - make.height.equalTo(100) - } - - // mainFeedButton - var mainConfig = UIButton.Configuration.plain() - mainConfig.image = UIImage(systemName: "house.fill") - mainFeedButton.configuration = mainConfig - mainFeedButton.tintColor = .gray - self.view.addSubview(mainFeedButton) - mainFeedButton.snp.makeConstraints { make in - make.left.equalTo(view.safeAreaLayoutGuide).offset(60) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - mainFeedButton.addTarget(self, action: #selector(clickmainB(_:)), for: .touchUpInside) - - // feedAddEditButton - var addEditConfig = UIButton.Configuration.plain() - addEditConfig.image = UIImage(systemName: "plus.rectangle") - feedAddEditButton.configuration = addEditConfig - feedAddEditButton.tintColor = .green - self.view.addSubview(feedAddEditButton) - feedAddEditButton.snp.makeConstraints { make in - make.centerX.equalTo(view.safeAreaLayoutGuide) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - feedAddEditButton.addTarget(self, action: #selector(clickAEB(_:)), for: .touchUpInside) - - // userProfileButton - var userConfig = UIButton.Configuration.plain() - userConfig.image = UIImage(systemName: "person.fill") - userProfileButton.configuration = userConfig - self.view.addSubview(userProfileButton) - userProfileButton.snp.makeConstraints { make in - make.right.equalTo(view.safeAreaLayoutGuide).offset(-60) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-15) - make.width.equalTo(50) - make.height.equalTo(30) - } - } -} From 16142130ed728ee195be9865499f0983f90f5fdb Mon Sep 17 00:00:00 2001 From: DHGIGHSOUL Date: Sat, 25 Jun 2022 08:17:31 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EB=AF=B8=EC=99=84=EC=84=B1=5F=EC=B5=9C?= =?UTF-8?q?=EC=A2=85=EB=B3=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KH/.DS_Store | Bin 6148 -> 6148 bytes KH/PR2_Lightstagram/.DS_Store | Bin 0 -> 8196 bytes .../LightStagram.xcodeproj/project.pbxproj | 12 ++ KH/PR2_Lightstagram/LightStagram/.DS_Store | Bin 8196 -> 8196 bytes .../LightStagram/AppDelegate.swift | 19 -- KH/PR2_Lightstagram/LightStagram/Info.plist | 4 + .../LightStagram/Model/.DS_Store | Bin 6148 -> 6148 bytes .../LightStagram/Model/CoreDataManager.swift | 189 +++++++++++------- .../Model/Feed+CoreDataClass.swift | 15 ++ .../Model/Feed+CoreDataProperties.swift | 24 +++ .../LightStagram.xcdatamodel/contents | 2 +- .../View/MainViewTableCustomCell.swift | 10 +- .../UserProfileViewCollectionCustomCell.swift | 40 ++++ .../AddEditViewController.swift | 29 ++- .../ViewController/MainViewController.swift | 92 +++++++-- .../UserProfileViewController.swift | 59 +++++- .../WindowTabBarViewController.swift | 17 +- 17 files changed, 381 insertions(+), 131 deletions(-) create mode 100644 KH/PR2_Lightstagram/.DS_Store create mode 100644 KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataClass.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataProperties.swift create mode 100644 KH/PR2_Lightstagram/LightStagram/View/UserProfileViewCollectionCustomCell.swift diff --git a/KH/.DS_Store b/KH/.DS_Store index 584a7b0caa2f95ac83c21c32886925c846b3816a..ee8f71a82e71bd3174470625c70c83db1f96202e 100644 GIT binary patch delta 73 zcmZoMXffEZj*Z30$jor^Cbm3gruV*+-?OO*=H|P&B<18MF)%Q2$nH2kHEi+(cJ;~i V>^!V6o(VIH0|Q9y=GW|!0sw)t7zO|U delta 73 zcmZoMXffEZj*Z38*vNA7Cbm3g1_p-7@7YuYbMswXl5+BsfP9W6o3);XPM*N7KDnNq QhZV*%fvMg6nq5)=07xAc@Bjb+ diff --git a/KH/PR2_Lightstagram/.DS_Store b/KH/PR2_Lightstagram/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5f1ec0ea72cb78aea33cc2b91c9cd82dcb7cd712 GIT binary patch literal 8196 zcmeHMO^ee&7=EX%wq+H1P^rp7z@ugD2NcCi?N&kXux!LVsMK^*+i02z{n!enP|u<_ zFa8NV3SPZ?6OaA_&*DL!`Pe0GZPyAb3(i|+p6TR$-kCg^O!}ro#Hs_gK$In-6pFyi z8mixzI4;VZ#dJ>w$iOGMOq;~1OHHcHd7BQSfKk9GU=%P47zK`l0(fQ%OD%ZrtD~ki z3K#|cO9jOKV4(=CXq+gNTL&tc0ss@}mWH-S2L#8`SkX99h$Aqjs6a(!I>lg$j($t~ zRWwc%DmpQpd@wyS(-{hrqa(g0-HBBcn%XE}6qr{)+%8$Vg^ayP?o|HnP@f#+^FHbx zJ{u@Q^5`-3Z~J_=;qwN#;IkLNji1uw0P9QQZQ<%+HF3x`%Zt*t2*8L z;@e%${lJlOF9mk+Ca5V$?bwbg-iI+dhQU$LZABOINOM*Pr^GfWMTo64QGhomSru>Q`tjl*Vrr z>|Ndor8j&1ewlBF*J@gh)VD7?6RY%5NVza}hr28JhwaE*V(-M17RKJQyMfPx7JS5c zpIdb4u`r*}E*6!G#T3fr^<-u_yahkHKv#-2t>5z>tIj2=>G}BHn@>fl=}L2m>ioAc zrnF~YaT>UJw`iM+RF7!eTYOuwb#S6OUO0?@__c|N>l=w_p8w*)7&8hSy#jGHL{{Yg zH?bR-_W(z)xf#JIaNHDNiJD!jVpjXVFJ~txa%~Ic5sEP3H&G}lsAM`0l<7F|;15Hz ZEw~C!MdL&vdSK>7fRw>hMuC5-z%TReAYK3f literal 0 HcmV?d00001 diff --git a/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj index 79de663..ac8099b 100644 --- a/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj +++ b/KH/PR2_Lightstagram/LightStagram.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + FD5B9F8C2864F2220056205E /* Feed+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD5B9F8A2864F2220056205E /* Feed+CoreDataClass.swift */; }; + FD5B9F8D2864F2220056205E /* Feed+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD5B9F8B2864F2220056205E /* Feed+CoreDataProperties.swift */; }; + FD5B9F8F28659F340056205E /* UserProfileViewCollectionCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD5B9F8E28659F340056205E /* UserProfileViewCollectionCustomCell.swift */; }; FDBA213F2862014E004DD205 /* MainViewTableViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */; }; FDBA2141286201E0004DD205 /* UserProfileViewCollectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */; }; FDBA214328620324004DD205 /* MainViewTableCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */; }; @@ -24,6 +27,9 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + FD5B9F8A2864F2220056205E /* Feed+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+CoreDataClass.swift"; sourceTree = ""; }; + FD5B9F8B2864F2220056205E /* Feed+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+CoreDataProperties.swift"; sourceTree = ""; }; + FD5B9F8E28659F340056205E /* UserProfileViewCollectionCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileViewCollectionCustomCell.swift; sourceTree = ""; }; FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewTableViewModel.swift; sourceTree = ""; }; FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileViewCollectionViewModel.swift; sourceTree = ""; }; FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewTableCustomCell.swift; sourceTree = ""; }; @@ -99,6 +105,7 @@ isa = PBXGroup; children = ( FDBA214228620324004DD205 /* MainViewTableCustomCell.swift */, + FD5B9F8E28659F340056205E /* UserProfileViewCollectionCustomCell.swift */, ); path = View; sourceTree = ""; @@ -107,6 +114,8 @@ isa = PBXGroup; children = ( FDF139F02860B9F900C542E0 /* LightStagram.xcdatamodeld */, + FD5B9F8A2864F2220056205E /* Feed+CoreDataClass.swift */, + FD5B9F8B2864F2220056205E /* Feed+CoreDataProperties.swift */, FDBA213E2862014E004DD205 /* MainViewTableViewModel.swift */, FDBA2140286201E0004DD205 /* UserProfileViewCollectionViewModel.swift */, FDC1D32F2863659D00D46D7C /* CoreDataManager.swift */, @@ -193,12 +202,15 @@ FDF139F22860B9F900C542E0 /* LightStagram.xcdatamodeld in Sources */, FDF13A042860BAB200C542E0 /* UserProfileViewController.swift in Sources */, FDBA2141286201E0004DD205 /* UserProfileViewCollectionViewModel.swift in Sources */, + FD5B9F8C2864F2220056205E /* Feed+CoreDataClass.swift in Sources */, FDF13A022860BAAB00C542E0 /* AddEditViewController.swift in Sources */, FDBA213F2862014E004DD205 /* MainViewTableViewModel.swift in Sources */, + FD5B9F8F28659F340056205E /* UserProfileViewCollectionCustomCell.swift in Sources */, FDF139EC2860B9F900C542E0 /* MainViewController.swift in Sources */, FDF13A0A2860BEA800C542E0 /* WindowTabBarViewController.swift in Sources */, FDF139E82860B9F900C542E0 /* AppDelegate.swift in Sources */, FDF139EA2860B9F900C542E0 /* SceneDelegate.swift in Sources */, + FD5B9F8D2864F2220056205E /* Feed+CoreDataProperties.swift in Sources */, FDBA214328620324004DD205 /* MainViewTableCustomCell.swift in Sources */, FDC1D3302863659D00D46D7C /* CoreDataManager.swift in Sources */, ); diff --git a/KH/PR2_Lightstagram/LightStagram/.DS_Store b/KH/PR2_Lightstagram/LightStagram/.DS_Store index ac0f86bded5f263d8d8fa6547b236813a43ee5e2..396bf9a973b8739e102239ee12d6cc16183ddba0 100644 GIT binary patch delta 240 zcmZp1XmQxkAUkjHpDu~`?U|?Wj2xG`( zNM$I`&3AE0%E?axigEaVo#_tL)+j2)24yZ3m0>j4yiYWXk*V<7yma6dR`tqrnNo$*Y8AV9YbZa*PF=UkjHpDhSPHU|?Wj2xG`( zNM$I`&3AE0%E?axigDbT@BKc=XmX>d6dRPeP*jFdVe>xGEJmh?+R1U^N|SxWx!CNJ h6dwm0O`ZVc)`{~VxCV?3n-7XFV5O}UlMjkJ0|1w1N|OKp diff --git a/KH/PR2_Lightstagram/LightStagram/AppDelegate.swift b/KH/PR2_Lightstagram/LightStagram/AppDelegate.swift index a27d108..8518df2 100644 --- a/KH/PR2_Lightstagram/LightStagram/AppDelegate.swift +++ b/KH/PR2_Lightstagram/LightStagram/AppDelegate.swift @@ -11,8 +11,6 @@ import CoreData @main class AppDelegate: UIResponder, UIApplicationDelegate { - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true @@ -35,26 +33,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // MARK: - Core Data stack lazy var persistentContainer: NSPersistentContainer = { - /* - The persistent container for the application. This implementation - creates and returns a container, having loaded the store for the - application to it. This property is optional since there are legitimate - error conditions that could cause the creation of the store to fail. - */ let container = NSPersistentContainer(name: "LightStagram") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - - /* - Typical reasons for an error here include: - * The parent directory does not exist, cannot be created, or disallows writing. - * The persistent store is not accessible, due to permissions or data protection when the device is locked. - * The device is out of space. - * The store could not be migrated to the current model version. - Check the error message to determine what the actual problem was. - */ fatalError("Unresolved error \(error), \(error.userInfo)") } }) diff --git a/KH/PR2_Lightstagram/LightStagram/Info.plist b/KH/PR2_Lightstagram/LightStagram/Info.plist index 0eb786d..aca992e 100644 --- a/KH/PR2_Lightstagram/LightStagram/Info.plist +++ b/KH/PR2_Lightstagram/LightStagram/Info.plist @@ -2,6 +2,10 @@ + NSCameraUsageDescription + + NSPhotoLibraryUsageDescription + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/KH/PR2_Lightstagram/LightStagram/Model/.DS_Store b/KH/PR2_Lightstagram/LightStagram/Model/.DS_Store index 1ba47a7fee42c88b0fe700d1cc17c4a81126ca3b..c9299995ba485c8ff8bd7c293ff3df39586dcba5 100644 GIT binary patch delta 29 lcmZoMXffEZn2Aw#@;fGr$# [Feed] { + var models: [Feed] = [Feed]() + + if let context = context { + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: modelName) + do { + if let fetchRequest: [Feed] = try context.fetch(fetchRequest) as? [Feed] { + models = fetchRequest + } + } catch let error as NSError { + print("Could not fetch: \(error), \(error.userInfo)") + } } - saveToContext() + return models } - - // CoreData Framework에 정보 저장(CRUD 중 Create) - func saveToContext() { - do { - try context.save() - } catch { - print(error.localizedDescription) + + // Feed를 저장하는 함수 + func saveFeed(feedImage: Data, feedText: String, likeCount: String, uploadDate: String) { + if let context = context, let entity: NSEntityDescription = NSEntityDescription.entity(forEntityName: modelName, in: context) { + if let feed: Feed = NSManagedObject(entity: entity, insertInto: context) as? Feed { + feed.feedImage = feedImage + feed.feedText = feedText + feed.likeCount = likeCount + feed.uploadDate = uploadDate + } } + appDelegate?.saveContext() } - // CoreData에서 정보를 빼내기 위한 기초작업 - func fetchFeeds() -> [Feed] { + // Feed를 삭제하는 함수 + func deleteFeed(feedText: String) { + let fetchRequest: NSFetchRequest = filteredRequest(feedText: feedText) do { - let request = Feed.fetchRequest() - let results = try context.fetch(request) - return results - } catch { - print(error.localizedDescription) + if let results: [Feed] = try context?.fetch(fetchRequest) as? [Feed] { + if results.count != 0 { + context?.delete(results[0]) + } + } + } catch let error as NSError { + print("Could not fetch: \(error), \(error.userInfo)") } - return [] + appDelegate?.saveContext() } - // CoreData에서 정보를 읽는 작업(CRUD 중 Read) -> tableViewFeed 배열 형태로 전달함. - func getFeedsForTableViewCell() -> [TableViewFeed] { - var feeds: [TableViewFeed] = [] - let fetchResult = fetchFeeds() - for result in fetchResult { - let feedImage = UIImage(data: result.feedImage!) - let feed = TableViewFeed(feedImage: feedImage, feedText: result.feedText, likeCount: result.likeCount, uploadDate: result.uploadDate) - feeds.append(feed) - } - return feeds + // feedText 문자열을 통해 CoreData의 배열 멤버를 특정함 + fileprivate func filteredRequest(feedText: String) -> NSFetchRequest { + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: modelName) + fetchRequest.predicate = NSPredicate(format: "feedText = %@", String(feedText)) + return fetchRequest } + - // CoreData의 정보를 수정하는 작업(CRUD 중 Update) -// func updateFeed(_ feed: TableViewFeed) { + +// // CoreData에 정보를 추가하는 작업 +// func insertFeedToCoreData(_ feed: TableViewFeed) { +// if let context = context, let entity: NSEntityDescription = NSEntityDescription.entity(forEntityName: "LightStagram", in: context) { +// let managedObject = NSManagedObject(entity: entity, insertInto: context) +// let feedImageToSaveCoreData = feed.feedImage?.jpegData(compressionQuality: 1) +// managedObject.setValue(feedImageToSaveCoreData, forKey: "feedImage") +// managedObject.setValue(feed.likeCount, forKey: "likeCount") +// managedObject.setValue(feed.feedText, forKey: "feedText") +// managedObject.setValue(feed.uploadDate, forKey: "uploadDate") +// } +// appDelegate?.saveContext() +// } +// +//// // CoreData Framework에 정보 저장(CRUD 중 Create) +//// func saveToContext() { +//// do { +//// try context.save() +//// } catch { +//// print(error.localizedDescription) +//// } +//// } +// +// // CoreData에서 정보를 빼내기 위한 기초작업 +// func fetchFeeds() -> [Feed] { +// do { +// let request = Feed.fetchRequest() +// if let context = context { +// let results = try context.fetch(request) +// return results +// } +// } catch { +// print(error.localizedDescription) +// } +// return [] +// } +// +// // CoreData에서 정보를 읽는 작업(CRUD 중 Read) -> tableViewFeed 배열 형태로 전달함. +// func getFeedsForTableViewCell() -> [TableViewFeed] { +// var feeds: [TableViewFeed] = [] // let fetchResult = fetchFeeds() +// for result in fetchResult { +// let feedImage = UIImage(data: result.feedImage!) +// let feed = TableViewFeed(feedImage: feedImage, feedText: result.feedText, likeCount: result.likeCount, uploadDate: result.uploadDate) +// feeds.append(feed) +// } +// return feeds +// } +// +// // CoreData의 정보를 수정하는 작업(CRUD 중 Update) +//// func updateFeed(_ feed: TableViewFeed) { +//// let fetchResult = fetchFeeds() +//// +//// } // +// // CoreData의 정보를 삭제하는 작업 +// func deleteFeed(_ feed: TableViewFeed) { +// let fetchResult = fetchFeeds() +// let feed = fetchResult.filter({$0.feedText == feed.feedText})[0] +// if let context = context { +// context.delete(feed) +// appDelegate?.saveContext() +// } +// } +// +// // CoreData의 정보를 모두 삭제하는 작업 +// func deleteAllFeeds() { +// let fetchResult = fetchFeeds() +// for result in fetchResult { +// if let context = context { +// context.delete(result) +// } +// } +// appDelegate?.saveContext() // } - - // CoreData의 정보를 삭제하는 작업 - func deleteFeed(_ feed: TableViewFeed) { - let fetchResult = fetchFeeds() - let feed = fetchResult.filter({$0.feedText == feed.feedText})[0] - context.delete(feed) - saveToContext() - } - - // CoreData의 정보를 모두 삭제하는 작업 - func deleteAllFeeds() { - let fetchResult = fetchFeeds() - for result in fetchResult { - context.delete(result) - } - saveToContext() - } } diff --git a/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataClass.swift b/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataClass.swift new file mode 100644 index 0000000..0aac579 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataClass.swift @@ -0,0 +1,15 @@ +// +// Feed+CoreDataClass.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/24. +// +// + +import Foundation +import CoreData + +@objc(Feed) +public class Feed: NSManagedObject { + +} diff --git a/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataProperties.swift b/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataProperties.swift new file mode 100644 index 0000000..7487639 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/Model/Feed+CoreDataProperties.swift @@ -0,0 +1,24 @@ +// +// Feed+CoreDataProperties.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/24. +// +// + +import Foundation +import CoreData + + +extension Feed { + + @nonobjc public class func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: "Feed") + } + + @NSManaged public var feedImage: Data? + @NSManaged public var feedText: String? + @NSManaged public var likeCount: String? + @NSManaged public var uploadDate: String? + +} diff --git a/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents index 2d96ad7..6808f0f 100644 --- a/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents +++ b/KH/PR2_Lightstagram/LightStagram/Model/LightStagram.xcdatamodeld/LightStagram.xcdatamodel/contents @@ -1,6 +1,6 @@ - + diff --git a/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift b/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift index 14d5dd7..0f057d6 100644 --- a/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift +++ b/KH/PR2_Lightstagram/LightStagram/View/MainViewTableCustomCell.swift @@ -21,10 +21,6 @@ class MainViewTableCustomCell: UITableViewCell { fatalError("init(coder:) has not been implemented") } - func getFeed() { - - } - // User image let userProfileImage: UIImageView = { let userProfileImage = UIImageView() @@ -49,8 +45,7 @@ class MainViewTableCustomCell: UITableViewCell { // 피드의 이미지(newFeedImageView) var feedImageView: UIImageView = { let feedImageView = UIImageView() - feedImageView.image = UIImage(named: "UserImage") - feedImageView.contentMode = .scaleAspectFit + feedImageView.contentMode = .scaleToFill feedImageView.clipsToBounds = true return feedImageView }() @@ -58,7 +53,6 @@ class MainViewTableCustomCell: UITableViewCell { // 피드의 좋아요 수(likeCount) let feedLikeCount: UILabel = { let feedLikeCount = UILabel() - feedLikeCount.text = "Test" feedLikeCount.font = UIFont.systemFont(ofSize: 15) return feedLikeCount }() @@ -74,7 +68,6 @@ class MainViewTableCustomCell: UITableViewCell { // 피드의 설명글(newFeedTextView) let feedText: UILabel = { let feedText = UILabel() - feedText.text = "Test" feedText.font = UIFont.systemFont(ofSize: 15) return feedText }() @@ -82,7 +75,6 @@ class MainViewTableCustomCell: UITableViewCell { // 피드의 업로드 날짜(uploadDate) - 테스트 중 let feedUploadDate: UILabel = { let feedUploadDate = UILabel() - feedUploadDate.text = "Test" feedUploadDate.textColor = .lightGray feedUploadDate.font = UIFont.systemFont(ofSize: 12) return feedUploadDate diff --git a/KH/PR2_Lightstagram/LightStagram/View/UserProfileViewCollectionCustomCell.swift b/KH/PR2_Lightstagram/LightStagram/View/UserProfileViewCollectionCustomCell.swift new file mode 100644 index 0000000..ea6f837 --- /dev/null +++ b/KH/PR2_Lightstagram/LightStagram/View/UserProfileViewCollectionCustomCell.swift @@ -0,0 +1,40 @@ +// +// UserProfileViewCollectionCustomCell.swift +// LightStagram +// +// Created by ROLF J. on 2022/06/24. +// + +import UIKit +import SnapKit + +class UserProfileViewCollectionCustomCell: UICollectionViewCell { + + static let collectionViewCellIdentifier = "UserProfileViewCollectionCustomCell" + + let feedImage: UIImageView = { + let feedImage = UIImageView() + feedImage.translatesAutoresizingMaskIntoConstraints = false + feedImage.contentMode = .scaleToFill +// feedImage.clipsToBounds = true + + return feedImage + }() + + override init(frame: CGRect) { + super.init(frame: .zero) + collectionViewCellLayout() + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func collectionViewCellLayout() { + contentView.addSubview(feedImage) + feedImage.snp.makeConstraints { make in + make.top.equalToSuperview() + make.width.height.equalToSuperview() + } + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift index f08ce74..f07e044 100644 --- a/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/AddEditViewController.swift @@ -155,12 +155,12 @@ class AddEditViewController: UIViewController { // 새로운 Feed를 CoreData에 저장하는 버튼 @objc func pressSaveButtonTest() { if noFeedImage() == true && noFeedText() == true { -// saveToCoreData() + saveToCoreData() clearAddEditView() } } - // 업로드할 사진이 골라지지 않았으면 실행 + // 업로드할 사진이 선택되지 않았으면 실행 func noFeedImage() -> Bool { if newFeedImageView.image == nil { let noImageAlert = UIAlertController(title: "사진이 없습니다!", message: "사진을 선택해주세요!", preferredStyle: .alert) @@ -190,6 +190,7 @@ class AddEditViewController: UIViewController { func makeLikeCountString() -> String { let randLikeCount = Int.random(in: 0..<1000) let likeCountString = "\(randLikeCount)명이 좋아합니다." + print(likeCountString) return likeCountString } @@ -199,23 +200,39 @@ class AddEditViewController: UIViewController { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MM월 dd일 hh:mm" let dateString = dateFormatter.string(from: nowDate) + print(dateString) return dateString } // 저장 시 정보들을 CoreData에 저장하는 함수 func saveToCoreData() { let newFeed = TableViewFeed(feedImage: newFeedImageView.image, feedText: newFeedTextView.text, likeCount: makeLikeCountString(), uploadDate: makeUploadDateString()) + let newFeedImageData = newFeed.feedImage?.jpegData(compressionQuality: 1) + CoreDataManager.shared.saveFeed(feedImage: newFeedImageData!, feedText: newFeed.feedText ?? "", likeCount: newFeed.likeCount ?? "", uploadDate: newFeed.uploadDate ?? "") + let mainViewController = MainViewController() + mainViewController.refreshTableView() } // AddEditView를 초기화하는 함수 func clearAddEditView() { newFeedImageView.image = nil newFeedTextView.text = nil + textViewDidEndEditing(newFeedTextView) newFeedImageIfNilLabel.text = "사진을 선택해주세요!" - let clearAlert = UIAlertController(title: "저장되었습니다!", message: nil, preferredStyle: .alert) - let checkButton = UIAlertAction(title: "OK", style: .default) - clearAlert.addAction(checkButton) - present(clearAlert, animated: true, completion: nil) + +// let clearAlert = UIAlertController(title: "저장되었습니다!", message: nil, preferredStyle: .alert) +// let checkButton = UIAlertAction(title: "OK", style: .default) +// clearAlert.addAction(checkButton) +// present(clearAlert, animated: true, completion: nil) + + let SuccessAlert = UIAlertController(title: "등록성공", message: "등록이 성공되었습니다.\n등록 뷰를 닫으시겠습니까?", preferredStyle: .alert) + let OKButton = UIAlertAction(title: "닫기", style: .default) + let dismissButton = UIAlertAction(title: "아니오", style: .default) + SuccessAlert.addAction(dismissButton) + SuccessAlert.addAction(OKButton) + present(SuccessAlert, animated: true, completion: nil) + + view.endEditing(true) } // 화면을 터치하면 키보드가 내려가는 함수 diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift index 8b3878b..ecbbb44 100644 --- a/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/MainViewController.swift @@ -7,6 +7,9 @@ import UIKit import SnapKit +import CoreData +import AVFoundation +import Photos public let userName = "JKH" @@ -21,18 +24,12 @@ class MainViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - + cameraPermission() + photoLibraryPermission() tableViewFunctions() + refreshTableView() showMainViewLayout() } - - func tableViewFunctions() { - feedTableView.delegate = self - feedTableView.dataSource = self - feedTableView.rowHeight = 580 - feedTableView.reloadData() - feedTableView.flashScrollIndicators() - } // MainView의 화면 구성 func showMainViewLayout() { @@ -59,21 +56,92 @@ class MainViewController: UIViewController { make.width.equalTo(view) } } + + func tableViewFunctions() { + feedTableView.delegate = self + feedTableView.dataSource = self +// feedTableView.estimatedRowHeight = 580 + feedTableView.rowHeight = 580 + feedTableView.flashScrollIndicators() + feedTableView.selectionFollowsFocus = false + refreshTableView() + } + + func refreshTableView() { + feedTableView.reloadData() + } + + // Camera 사용 허가 + func cameraPermission() { + AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in + if granted { + print("Camera: 권한 허용") + } else { + print("Camera: 권한 거부") + } + }) + } + + // 사진 앨범 사용 허가 + func photoLibraryPermission() { + PHPhotoLibrary.requestAuthorization( { status in + switch status { + case .authorized: + print("Album: 권한 허용") + case .denied: + print("Album: 권한 거부") + case .notDetermined, .restricted: + print("Album: 선택하지 않음") + default: + break + } + }) + } } extension MainViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 5 + return CoreDataManager.shared.getFeeds().count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let feedCell = tableView.dequeueReusableCell(withIdentifier: MainViewTableCustomCell.tableViewCellIdentifier, for: indexPath) as? MainViewTableCustomCell else { return UITableViewCell() } + let newFeedForCell = CoreDataManager.shared.getFeeds() + feedCell.feedImageView.image = UIImage(data: newFeedForCell[indexPath.row].feedImage!) + feedCell.feedText.text = newFeedForCell[indexPath.row].feedText + feedCell.feedLikeCount.text = newFeedForCell[indexPath.row].likeCount + feedCell.feedUploadDate.text = newFeedForCell[indexPath.row].uploadDate + self.feedTableView.separatorStyle = UITableViewCell.SeparatorStyle.singleLine return feedCell } - func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { - <#code#> + // 셀을 오른쪽에서 쓸었을 때 수정/삭제의 기능이 구현하려고 함 -> 미구현 + func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { + let deleteAction = UIContextualAction(style: .destructive, title: "Delete", handler: { action, view, completionHandler in + print("delete") + let getFeedForDelete: [Feed] = CoreDataManager.shared.getFeeds() + tableViewFeedList.remove(at: indexPath.row) + collectionViewFeedList.remove(at: indexPath.row) + self.feedTableView.deleteRows(at: [indexPath], with: .automatic) + CoreDataManager.shared.deleteFeed(feedText: getFeedForDelete[indexPath.row].feedText!) + self.feedTableView.reloadData() + completionHandler(true) + }) + + let editAction = UIContextualAction(style: .normal, title: "Edit", handler: { action, view, completionHandler in + print("edit") + completionHandler(true) + }) + editAction.backgroundColor = .blue + + return UISwipeActionsConfiguration(actions: [deleteAction, editAction]) + } + + private func getIndexPath(view: UIView) -> IndexPath? { + let viewPoint = view.convert(CGPoint.zero, to: feedTableView) + return feedTableView.indexPathForRow(at: viewPoint) } } + diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift index 6573f1a..c5c1e72 100644 --- a/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/UserProfileViewController.swift @@ -9,13 +9,25 @@ import UIKit import SnapKit class UserProfileViewController: UIViewController { + + let feedCollectionView: UICollectionView = { + let collectionViewLayout = UICollectionViewFlowLayout() + collectionViewLayout.scrollDirection = .vertical + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.translatesAutoresizingMaskIntoConstraints = false + collectionView.register(UserProfileViewCollectionCustomCell.self, forCellWithReuseIdentifier: UserProfileViewCollectionCustomCell.collectionViewCellIdentifier) + collectionView.backgroundColor = .white + return collectionView + }() + let peopleButtonLabel = UILabel() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white - showUserProfileViewLayout() + collectionViewFunctions() + showUserProfileViewLayout() } // userProfileView의 화면 구성 @@ -47,7 +59,7 @@ class UserProfileViewController: UIViewController { // 게시물 수 let feedCountLabel = UILabel() - feedCountLabel.text = "1K" + feedCountLabel.text = String(CoreDataManager.shared.getFeeds().count) view.addSubview(feedCountLabel) feedCountLabel.snp.makeConstraints { make in make.left.equalTo(userProfileImage.snp.right).offset(45) @@ -186,7 +198,6 @@ class UserProfileViewController: UIViewController { peopleButton.addTarget(self, action: #selector(pressNotFinishButton), for: .allEvents) // People 버튼 라벨 - let peopleButtonLabel = UILabel() peopleButtonLabel.text = "People" peopleButtonLabel.textColor = .systemBlue peopleButtonLabel.font = UIFont.systemFont(ofSize: 11) @@ -196,6 +207,29 @@ class UserProfileViewController: UIViewController { make.centerX.equalTo(peopleButton.snp.centerX) } + showCollectionView() + } + + // show collecionView + func showCollectionView() { + view.addSubview(feedCollectionView) + feedCollectionView.snp.makeConstraints { make in + make.top.equalTo(peopleButtonLabel.snp.bottom).offset(10) + make.width.equalTo(view) + make.bottom.equalTo(view.safeAreaLayoutGuide) + + } + + let noSpacing = UICollectionViewFlowLayout() + noSpacing.minimumLineSpacing = 0 + noSpacing.minimumInteritemSpacing = 0 + feedCollectionView.setCollectionViewLayout(noSpacing, animated: true) + } + + func collectionViewFunctions() { + feedCollectionView.delegate = self + feedCollectionView.dataSource = self + feedCollectionView.reloadData() } // '준비 중인 기능'에 대한 함수 @@ -208,3 +242,22 @@ class UserProfileViewController: UIViewController { } } + +extension UserProfileViewController: UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: view.frame.width/3, height: view.frame.width/3) + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return CoreDataManager.shared.getFeeds().count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let collectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: UserProfileViewCollectionCustomCell.collectionViewCellIdentifier, for: indexPath) as? UserProfileViewCollectionCustomCell else { return UICollectionViewCell() } + let newFeedForCollectionViewCell = CoreDataManager.shared.getFeeds() + + collectionViewCell.feedImage.image = UIImage(data: newFeedForCollectionViewCell[indexPath.row].feedImage!) + + return collectionViewCell + } +} diff --git a/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift b/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift index b578917..362628e 100644 --- a/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift +++ b/KH/PR2_Lightstagram/LightStagram/ViewController/WindowTabBarViewController.swift @@ -8,28 +8,27 @@ import UIKit class WindowTabBarController: UITabBarController { - - let firstViewController = UINavigationController(rootViewController: MainViewController()) - let secondViewController = UINavigationController(rootViewController: AddEditViewController()) - let thirdViewController = UINavigationController(rootViewController: UserProfileViewController()) override func viewDidLoad() { super.viewDidLoad() setUpTabBarLayout() - - // tabBar의 모양 - tabBar.backgroundColor = .systemGray3 - tabBar.tintColor = .blue - tabBar.unselectedItemTintColor = .systemGray } // 탭바로 ViewController들을 이동할 수 있도록 링크 생성 private func setUpTabBarLayout() { + let firstViewController = UINavigationController(rootViewController: MainViewController()) + let secondViewController = UINavigationController(rootViewController: AddEditViewController()) + let thirdViewController = UINavigationController(rootViewController: UserProfileViewController()) + firstViewController.tabBarItem.image = UIImage(systemName: "house") secondViewController.tabBarItem.image = UIImage(systemName: "plus.rectangle") thirdViewController.tabBarItem.image = UIImage(systemName: "person.fill") + tabBar.backgroundColor = .systemGray3 + tabBar.tintColor = .blue + tabBar.unselectedItemTintColor = .systemGray + viewControllers = [firstViewController, secondViewController, thirdViewController] } } From f2693c54c7133924c6ee1c2d3f4987a6f80b3240 Mon Sep 17 00:00:00 2001 From: DHGIGHSOUL Date: Tue, 28 Jun 2022 14:29:58 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index 48a1ed6cafdda5b38d0bc590ef8d25852cf8e37f..fba0b92498bc88f2da6f0958c11090282e9c5b35 100644 GIT binary patch delta 334 zcmZp1XmOa}&nUbxU^hRb@MInV$+)h<90mpk76v_rbcRfZlH7b3m!zEhB%m0_)}1j6 zQcRCHqROY>l`qIJ3{K9^Edc6aVCWB++$^A#~8jU4vR3g=#|sBMTh`Ln8~*+FDKy zQDuGWp!n>Z+`Rm*$>h7a_e^yKd4KXmVKFu+bFHvA6MMtt NW5OPri$x}K0|1V8TFC$a delta 281 zcmZp1XmOa}&&aHeRQVLV@&y@&!O8i#1wcIv3|${4Hw$P@78Uek+&wu(uux07y4ujd$V^AU(Adbb zR!5=Q(9FU>N5RtAxVDy)LsVJcIw(FnCpRy@ck&-WdB(oYGD3S9gIIs|0}W$h@MiEp pc3%F0t0$q(gUTVChAxNVERKT7+9DnkQzSR5^E_bQ%r5bl9RRuSO2GgC From 6c3fafb26e5b94f517a638430ef8a699ff9dbe6b Mon Sep 17 00:00:00 2001 From: DHGIGHSOUL Date: Tue, 28 Jun 2022 14:30:13 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index fba0b92498bc88f2da6f0958c11090282e9c5b35..e19008338a6c78d7981b241776f761b974ec7b47 100644 GIT binary patch delta 106 zcmZp1XmQw}CJaWaZeHVtT|8RXzo;d_jg` UaB_Zb0Zs@507^$0;Q#;t delta 106 zcmZp1XmQw}CJ