From 1f855c4ffac9edaf7e259e41b00dc9fa3738b457 Mon Sep 17 00:00:00 2001 From: jayfenam Date: Wed, 26 Jun 2019 20:53:36 -0400 Subject: [PATCH] Loading works --- Sprint 9/Creating Frameworks/LoadingUI.gif | Bin 6780 -> 0 bytes .../LoadingUIFrameworkDevelopment.zip | Bin 0 -> 52894 bytes .../LoadingUI.xcodeproj/project.pbxproj | 351 +++++++++++++++ .../LoadingUI/LoadingUI/Info.plist | 22 + .../LoadingUI/LoadingUI/LoadingUI.h | 19 + .../LoadingUI/LoadingViewController.swift | 33 ++ .../LoadingUITest.xcodeproj/project.pbxproj | 419 ++++++++++++++++++ .../LoadingUITest/AppDelegate.swift | 46 ++ .../AppIcon.appiconset/Contents.json | 98 ++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../LoadingUITest/Base.lproj/Main.storyboard | 62 +++ .../LoadingUITest/LoadingUITest/Info.plist | 45 ++ .../LoadingUITest/ViewController.swift | 35 ++ 14 files changed, 1161 insertions(+) delete mode 100644 Sprint 9/Creating Frameworks/LoadingUI.gif create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment.zip create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI.xcodeproj/project.pbxproj create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/Info.plist create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingUI.h create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingViewController.swift create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest.xcodeproj/project.pbxproj create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/AppDelegate.swift create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/Contents.json create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/LaunchScreen.storyboard create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/Main.storyboard create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Info.plist create mode 100644 Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/ViewController.swift diff --git a/Sprint 9/Creating Frameworks/LoadingUI.gif b/Sprint 9/Creating Frameworks/LoadingUI.gif deleted file mode 100644 index 708fa94cd22737394d0c310b0013a287b93c8163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6780 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 diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment.zip b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment.zip new file mode 100644 index 0000000000000000000000000000000000000000..311d80cce703560a200c94a2e2e6a3877734ad1b GIT binary patch literal 52894 zcmc$_bC4&|nk`yYzp`!Hwr$(CZQDkdtu9xWtuEW>vTf`2d2`RqoAYkm7ZWk}zRbvs z{nz)cy+35G6?-en06?LE{&8vhuFL=5ga7fu2SNmrbucouvbRu^5_dMTGxKn8wh=XR zH?wtcv@^4JWl+Vz zn4rrjdjAA)iEZPsK7PmYiiW$0V7HD;Xf;pyth@PJKT;vi?o~*pR}-8)N@qlTm^CW? zZTq@!>ODbYB%J@v^W!X`xHmyNy|?XGKqA%cO3QJ} zx9xLXyf(~;cHJ0u9?%{|*Ui!PDDh|@|HFI+(&F5hlaHjmU26?&FDysPFWfbFt2*F7 zW88e)W^LbIjy(o%j1XXtK0kzlOIN^ ziT!F%UgstB16eQbX{}_^DAqR$W;Cz4X;Vk!Wb0*_&+F#nI<-^jt{%bXbCnu{$Ahwg z{p7MAyC*;8P@tdi2Up;;k-bnyEwqTp2sUr`Q5V_Vg^q?hm&4-&ysg*uC*jJFwy?9b zeorB>GL;d`1-*@nGLg-kBIpW54`QOv?`Qmc&C{xxUk8T866?T=>OTvqQQ5?7lDgD+ z1?qETZ8A2RpW1-js(r6-8%hG7cR+B>~+C{K`LCHs+bQIgL#^ zD1l_Z)!8A%G8ZIJ?O7X^w<|*)X6UE+^YZfbLV+gS3N-uiXkEF-VC-0WZ*e2(?8MMj zQ@S0)#5v%mR~~jT%#uA)m$MVQVCtxF%qk-30swQ@ym7qw6f`3~9TfHjp65Wc@LYa) zTFoQ%bLzh_Vp*dbF>a$e4Lz93tLHPJt5V!%o7JnFgK1~Gty4zQOc*W#d*byT`yp6Q zz;^;P8&7&P3hKjtX$9jzUnTQ~&o^r%RZ{B+-@(RY!?QsxM}!lel@*P5^`B;q!B{tB zaoGQ883VpFz8QPO|C2+AguzNpf=o4nwnrAv^WE{-J$1I7OI-Zkq}Us)f&OWJ0k3rd zUpaF*gCEzT>*2H%zaNq;qg9Ha7h&F)q71PTyBnUnvegx_R*bV3!lM)Kk?kd%pc%U`J|8A&K(N;W>;+4FaJAo^!kjZ_JG_dY=4JrTBgL&VwXK4j zD9KZqj-^w=?Al2&w~cxd3e_XlLwmnses4UjFfsWw{^z_w*vCiCe9m4yRV(f3W?!^+ z7++J&!>Y1io{0@YB;vUEZ0uKcBO-@2)U_c=y`B_IHv*50Be7Gk)9^r`yIs2$DB0s8 zr+Nd}medVUB{m28l0Vg&Cjv0`=?xGSb}Jg#`-RFrOe7ox7FbR=SY6<+V?@G)4Z?4X zJ`=s16^qOqKz&yKk^Zb<-KU;mexq_4>4q-?6XLz)SB~W$3+vk)&&fL*GBb4KpP&%I z1fs1UI>?MR3p)j#(T`(WUmzrM%t_Xq5Bh=Yi!-7zKyHG&cKbm|8P!y$jy2lureXA`!A1ql$dwqe)s4_iZ##dea!T<=Pn zBEpFY1DUv;>&OfjRmUfh`igZB${=SM{>$BlV-i(r{O1Jc-t;ADYTtYJH3`LL5yBsO!;uqeDA`(WN1nlhEuU+ z*>Q*N&L5FhM6zwwBWVpK=v0uGD|5#FGU{EsUQU~s?eg7>TO1vBa@9XB7Gs^#NhW6z z2&y^)_h#JWCtgD2B8c4fTuE$IQdpP5)P|y7L@*_9KM7W^l?G_A3MKjZ64T7xsG!Ul z)V1Tu$H8PS+)5Sg$T3NJ8nMrpROiig@7!|&J(gv{iD^>voxc30!wd><2%Iyt2pvZs zFYXa`c`j7zE0_C!Dv*o*q760@bL_O6PjU~ zv;3HtS0a{Fp7r$GPmM4yPZyXJ!&aJMxUZRwrsx!6FwxoWy!KC z3r`x?%MK4$QxSS&`wSIKE_M$`Nn&MB3LRS0&`d9&;}AsxGS@T_!Av3gNQ?+DlIP&k z$}(09vF8_Nn)9qSmP0AyOqlX}HJ&$sWgRXnBZ-orR(SL|x8Lfy%y*;i8&DKGiw)*{ z^1Xes0|t??q%?K`Y1W4oh@@n~sRJbBKovPayu{9xQx92`NFOPtwkwcFpl&KQM8WE* zH$*0pOYU>SYN69eR|-1anFd?0kp3+AX-$*JtFAgpgm<4rI3S923o7I7*Z z-3BQlvV&%rvg)a+X4V`{Q5>ZG+7hpDPspjQK&ngxi84eQ3v4MTaloyTU zfj5jnaqo5@w^c9>cFjhi*_-a=66|`_0R*>NMjqQg%Im4y`p2NAb43+m{Ibm@$f`OT>?d zw*%7WF^@uugg9e(BKW?LB2gA(MmP}fg%7$O#crr;mChxdt5jiUu=g{!gOc4Cj@+(t zQ>OPq90F!y%}5}{+&-h5#VEpXui9_>*`~0rmt4Aon2e8aFDa&sp_FAkk;RX;W^ad? zj{Vo)8ZTx7HH=B^Rz{W1*{yESx-aDRBfB&lSNh2~Hv6Dqabb^(`WriZr?Y`zWOh^6 zz59dZ24$l)zsn0o@u*IoshHiaF6m{|u6*3`|+y>yOV)j^_e^6=fhGbLhVl znqh!|PI-a;AB;%(UwDhce-n%FG;wn=b2c?{HTri7Gx7hTWB=;h^uOP^w2_y%nZ1$S zUrO~)K&Jl%ME3uO5P6!om{^+GnYsK=vHct2``6V9|38lHpD68&?2Rn`qP73a5^b$q zT>rrl!Txf@e@0j>q2E4)5jK40kZS%x_RnS+m0WY0yofLkvg2wg8nJp5G$`4e<+gue zsv6I4r=IJCsn(1ZA_2?l`OR?t1~#%)HSM2QO@(4#`1}hskT1+{>xbK?c@J@o@g=`? zkgp-(fc4*dgaRoOB(sLJWzEY62c~*LXUMfZyxDOcFKR0qS3q&*aLBw*3-7b{ZvR!$rZS}BI zs|KB(@b^ruN#=YjraysUt{gmtNtSVsoKcPN&-HnyH_(Y+!2VHKI3vZqXMe>BUEu#! zVQKz1MeCpR+|%SAvWJVKk%`%VA!i)_H=;0cuy_5N5-xvB?cbsOqXGO=LHK8O{A#Eh zol>Hdp`)IjocX23yvU-cEIB1JtuQtz)2apy=d{qQ*x0(?2sOhnPERi>D}Si07)Yg2 zuLfjO4~SZ8Gdn5)FD(mN6--RY&(Q=?Q_0CnF+WVnhh%11WFc*C6RiWW6tNak@<&(w z#jnaSOYYaE=C1p<=RrWiqg^R@{0&v!-{(J6p?@tblmCs2^dD{Le;T!ale}7E|FcZx z`F{q`|FT#9{41#aQ%w7}e)O*>)BpcO`S)WZ^*8;T&HvVeimQ>U+5c$xF8>(+BLn|| z|DSVM>W0!)8ChZEb>TqO8o+0V;sFH-#Zx7O38DmPtc(>U+-A%Zn3u6Y_@OK_OPj`scC6m_PFW}6|?*H>$&#YT9NRVI-1VOOg* z?t_%=gT?M=WWzTy z{yR`%C;x_O8SU3_hY|Y^I`fEjWBVTvM^UfFLYkc9{lxW}wD2(_$o2S|3e_0t!DCEl z=|PW!&<)g+p_vWhwwUa=IAL)kr>n5Gvd)8eXTNpFH--WOl`e1IUyRcXGMQ*XX(CY@z zod8>r2!j&)CO0d$QZKT;z&)r2QFVg?eXTn@x1TRWAC&&c0ulKm47)40I4^P^_+Knv z6kn*{F(<;VWYtg>17VJ2U62mM;gMu}k)FgslBCIzrbQ5QDWjx|q7Fp}NeT}X;D}^H zhDFg8S@=nX$Kg{z6xQEVcchu()IhDL_W zjWHUsS4A$!_(}LFdI;rFEF$lR%=UElpq;YYME;QVQ23MjllfD85duR=C0~fIC&HHq zV9ACj?v{k6CeNAjW(qzL`XpPG#9qjlr*N6luO-lu%8d3OAT}mf6IV&GtVzO?M5K_6 z&K-a{V{_%^2=&O(6Jw;vjCzckJHx#KzY?`a{gJyOdQN^H{X956&^S=K!+d4)isx0> zB6LV@9o;yri4(r8^XaqCz^9k*a{CPL3`rQN>+KITI^Yp{5Qw zlQC1_N=^S+;HpZdCZ?w1ZB3~rvZU;$%4b%9U6Hg%Y0b(O?wy+@HdVG&a-`@|>9y!< zjn$lEU8Y^}T=859wA*ff8rOuGrGe$1jM=ohlR`d0)?9-}| zy>?(+{(;S^ojYG(SG};5O~=<6d_`!<<_Hkpf#(gRxB=N>l~QR!+YGys)>+t82M`c~ z^z#7yiEPZfHvyr^C{nvaZglkY3^3}NEiRr)g9+JTfn_W;FNqf;9+xZ{7DK9JG9Xr5A~i=z7Z)vq$x=2UMJVlaWHS9|}e-BwyEV65CuAvlUhBl-OgsDif4rfa~1aiUAue4ot=LNY3 z66B!aHYzIGvXqpbok<-Tr&v0blx!R|`C(O4E16lZQgwJZ16o&6FDA0N)puNfXXoVX z_8FvSU~CNxDizMIcR=n$o@c(ciRaR5d}5=pGXWBbi$}n~X7Tjw7pq*jxQkJtcBTV+ z5ip@C560oS#F=M<80Cmesk2oqtsZfL`jFIovGG2cG^-J*l#Os25QFVrIDORVf*zsi3<*JO?Pcl+%yMY*gFwhDJ~^*)CqC;88TX zsHEX>vT@QyKV@0tVCBkW;&Cb-w{dnvGPFXh!#=ix=(q%p-x4xpcbsXm$Y?Y%$%OTk zQNm;~8lod))C*|iLd7Kw4Hdww$xP*YD7eTe$w{CV$M=8sk}g=O{J1mRaA6^Yc;=>? zV6074X{@E7as)@j8%|#;m`u1+y9v)D?Wrn7xIN~Qkq3;)Qz#bfn-cBb9m=IE``i{Q zGMXpY6O)o;eF_8?17#p6?O&pxe2=yKWE$_&yjgqU9};sjwJ1qK5LVIanAg<6o&~idtC#55gjq{u1USp!C5k^w)LODi3dSEBGJ?y3 z(izgU#r_#APZXsu#CZtanuXvB4PwL$A7G>mY8VBs4os`ZZufH-D0KvLzHJ$pNwV=k z&WpfEvU#QxHzt6uP->BCpV29ol z6hDGuN6Hg{mw+JfJaK{*H$OP1$nHh|gY}EfAEq}!K)g1A1}Pdhk6#o?NqP|lZZwyP zB*Gk%DcF)&9LXfnW)Kl2awTdk@I6B43jO^A9E;^P1qM6e>cwVKXOT51 z6h1+KYiye-Tw>lSu^O#*+bVLF#xSoA@Z#xEWNdYb!f22dADAm! zI+&W_KqtZqtk}{y3^|B<6IyCZoV@kwDwf;>L5kopx*a#hDEPwS6HFO^N+0Y_8;C5} zLZ2&lD*A#EO`ojj;%_Fx7)cfMq4CE}yhMa+%TKCo;%|e`2 z_M6%-tA&NO*TI?G*8ZYtYm7ruoqA1>^xi-*mH}fhIx$VrUsqLp5}oeQFXd?$m$M(( z_3n}ztf^RWS!HOH4tSE{(&;`2{ab)*m$x})gN<3OplEKwCM4g{`9}bE50-5aie?A+ z-Tt0g^TYKIGb=-w)nWGfGF7SYmUHA5kl5PQY*3&RGn<($?M+9{p|m@%5VG({+y>aHM{R?jd7s{5wY z(geW+i({isPx!`Ev?DVjeh$|3m9yrqa%v_l>^SXQv-;M4ggz&-Ho#Tzbw3|>iuywL zDL+lW-wny$pn@yvP zf@1TVH!FP|hG7$BCG%oq568@}ZOyz-`R7uX*JFYHq_iEXmzdAlHCOoOF*HsXWiKlO zh%t0`_?K(1zHDY-OFV%KXuCiYn5OW}6OfL2uytXcj>szo33T-$d^r(nZK%xBsyb#3 zmrWrGM^moc^T4otp)&nQ=0AlH%&+>RCms-7)$H}E%$8h7@K(pNwZpnoLW_k~vw2hE z%A>tlNh(&A8~Wl1r7@@6-h{at)RDM-$RtHm;my*Z+q$CJcEbMt#mj#z7jGfogGj0h z1YiZfBoXf)?XO!C2O*&z4ZTMNBm_WWi&&mMsG_)2lNrA0s z60wG-3x=$)%|PP?xWMYO+}@H*$EolZQKSX5hgiBIYPKRF8(CC>@;|`{V*sGl{9s;qDLHr!aq_#ii=54LS)TN=;m#Y$|S**AIuk-#_b41O12D>>qX2&29`S@ z2~QmgHXI!$RL;Urt>NHkmoG~h%Jhew^0omxf}*~r?|B$6=$ey_uV!MtQ^=e@48~7L zhXcxSb#@S2+5_MOJTcF`PiaC2ZmL+n~YdBei!>$5qZP*1E~}I}d5l z(S~yWm=WJT#7==1Lq`(Vs|nYG6;kTAafK5|w60(fHImU+hp7f1`*5uiI)hrCC+BW; zc?cWOW`B#uVL4*84XhI)31%y_$KGW`O~!!(cTvx-OPhLCuvg0&88Vr?6XY0}%z#Ad zJWuTQFN`ch@{W55{pAR1D~uN#TD)Vq7zGs{!fINu1SI-v9lE%-r$Q*CXDX!0_RyQf zraBSDJZZnT_>vIN*j!_^h$5GOA?U3sA;$?Uf51k>7mq(pL!U>lqRGaJCLgk}3(JWz zT_iCp_aNzw%9n+IpM$;EJT1f8FLU%QWBw*X-b!YJmcjNUAZy{j=U%oeF8bSP7TQl| z4i@{(6Z>ZW?Z=@939&al1IotEld{mw_AqpA<{uD``o>R({#ShW0lm?KuNZ1NM~;oR zUf^cUq3#8o+ zj*}sDPgMNk@>zoU27pR>yDKtcwTAw{KCm8%?{U43d{rSP)gi4 zhAzJ+n5=!c#%ZSAmOvN$HBkn_Rv^bNohQy#kjL)x1FbjvCplk4p3F?~ab37T-}{Zk z3()5$EWtd?N$ZLEo8H4SfA{W^%PTG&Jwf>rY4zK$*hdCf348+I@Ipa?!IQ9ujR#`y zTj^LsKK{vQ{Q)oE>n>{i{NHpV7fceA1hH1o1LCu%bW&<5%Y)mg)U)*I5I{-)Q2>~6&37t9f#jx+I- zs7+mVv4#4A5TSxrBDu7#7QLrmoVO<>H`|CS(%>+ed%)&y(cJDwf;}~@eo52{ic~XW zWEZ1^jk9%;bjg;J-_N`K)@H*<&F<7dooPXS_oTDewssW=la}^iOi1uv}#z_m&h8XwO?bhE#0&i|CEh^K<6}MrG zOB5HAG|_RH!Zt~p{$nF*>}%y)ExItPSe4=$c$aZW1F>N5=UlCt_`#r?Z7af8m3Nn| zn4|x!EC3;M;G6aMVXH{^8A)}DaPmX`OU5^uHD`kmi)EO2EK_s&ejN8arb!aM8|pL> z#g%m15T7|wlmAoceUW+~{DUG4re}DZ5l%hcssUOy!uTTLwEIEnP2~;KFDJg4RW)vj z$S(Y}p->Y}UB;oTbynxpj;6s|KD%4o;kaq7RzocN_5rhhzBp=Y4!hU5Sm`4=u79|Z z;0?u_;%~oigY3`@f8~Axulpb;Ic&{V^H)i_+qe(Da|s;bq3+UJy-?Seq*@oL40rh<7Sio=ebGaDYDrru9OQJq)|3phvP%Nwy+%siu75@B=HmJw@)Abc? z@n%uI>L;IXx}O~HBf%6EHKTCBP;WwLN%lnM4*CwwBb{G1Giz~Lr(rzOfWipEBbHy> zE2Qj{5|5WyT4k#zXzszZfv&r;>=xsN5v%u&_oKY-=aDqsrfy%4S!a8s-at=3{lf7n z%!An5yfmS(%L)|eY)j;?i5D`P8R8+(<(sTk@KrZMl{|CLq_UPIHvk`ZMoUM~t2O{* z!Ik;|2v(eBuVcBw!Ej|0iA&!$_wj(%bL;n21Nytqn={K3;PX;|mcc|IXpC-kW>w@3 z+OKA+e+b_wfVa0kh7Xwdg31pK?v97MF)seg3gz!FUxjwn9;Q5>0a_~vu&2fwchMvq zcVljK1^s4aEgrp~=l;_}jd=;+jH`wsCN#2dpK)<%{G#hC4eMwDW-gis23m+9g90Y&sk0I55#=;4~uE~W?R%l?A>iJ|G0KRIjpHfw z`+Y}i;#8o`6M1IX1^U-s8%T z^$IEnV>qZ@G7}`Ao{*dP?ATny#B*vmaXlRm-WQmI_yl{E-<|+_(D#Bu;Ahw^ za}DSWaQU$cW`o{X{PDGdVRSF7zPNzPHEcU+V|4xqhYE^py=ivV1RKd&_P`1J>f7k-$4z_x)f6wzLZK24?C3TvLKG<{z|xZcVgp$T7{aph~CC{V(G2U3tmk7;5GAXM*N}D3$Uzy(Dq2c5CP+CLQoJatkuW~(bo$Y z&m+$KU;yK6emWy#VA=+T`}XGoc7_MD)(qswt2rbHC?YB#WYs+QbacA&>o z1BHmtl5STd64GEG;f4YvQjjO^4 zNk|+;DLhUbZ9bs^%RAjS0qZ+#7}(DUKB&c;a|pSg1rE4Vk^2M82iJOXIM)%fW%M~# z!i))X-zZD=!PVny*BsxBIsHM>NH_{7%x`xdtg4zmY-)a~Rs+wr+S59rkz$iLzfVo< zz^Skjm_u0-MN6G3AUybH>>IslS6esVAeO^YQCr7K=onLE3&6O`YWt-zQDjSG$sin` zBT5`5NjA?|5`m2MW2n#cZB<%Wh%(Am_;(*Z?4*$)A0Xn_0o0d7KqjAzCD%Y=pNR7| zQ~QU$w7&^}r|J0IEqK??zE`}vg?z%W!V2!;g#cztOB6n*|w=`kNgyews5Sf|{dT_+hja7P`?#*umDJ&g21+F5W;*ZjvrwX0YVH$`WY z!kgd$TsM$n$+X7AulajKRD?TYoKt|a+1jg}T^lb!GTHBuW^X-FI;CydMJB{3Z}9wu zzD&ThABk*ed&wm&#ND1cBKdN{uUKbHrewTB$EQ9Fz!L1mR3HBZr38w}s**VqkJfbW#A~I2CL(bsn z%=M8$pBjjCL(s-#00>6JseEVk$N`?yF?E^6pZEFOFzns9xLhKG58>h}z^%~h9fM=| zOtfgA-Jo5mGv|;~FiYHyC7GHteL=2QR>puylai9v-L`CGRbu}aFS7j?vZWQbM6oBV$Lo{8`IS~?O=N!+so3={+85!wN_MPgkvn#lbjs6A4E z5~=1yAGdnjm&}F0MB}#&xVpRPH`pGrQ`G8^ARnL#OY=9=XIie`AK`%A)Y(?L)DCIg zfcRIA$ZS~L@jh&OpEEISSNQL*B!=fm0`B`m;9Hh+knbTu5tiG;pgOnZ#@^ers@(wV z<&S^|2;!d)Y3WG3M0t%QFDXI8=6ej_S(?=C-!=SupbVq>6oQQcH&5| zi_$mf<6Y)5xAJ__1CUUa6vcd|E0LZQ#|_-+v>+-=g6WPWc)S^*9Ld3O9XX#A!+iFI z{97XNd`8eHJPA%mWRPS+KwsY_?4RwZDO1FmqcY|GXbqb@(H>u#BD{M>{ClO+V6M7w z?Q6o4B|N0KJtRC8>L2gWlO?(UYuXGrdIM4`+=SCM<^CuQpoMR)IjN(Ov5&e{wzEi2 z>V%h2WubeTKEfx(axIH$6AesPJn`9RkE*NW6fDXC3bc}BSqi1ddu{*)lOr==TT{xs z5vSdh09@Y4!x@V+WND{vQk{Ox-Y(@8HfOyfLk2yFgl6pP0O)D3&k8nYI$)taxE3VH zY^cUiv7xk{{zJY9AanXW$33f9MzC*pg5OWx?47G~x^)R|c!Pm0zHz40J(Ao=(* zBk{PQbY9k(UM5fL!1hiK8OfXpkimF^2TrdiHN8K2j}FMVJ+Sg`9{rU{hJd~84CAH! zmBec^_Uw6AZ85em4`Me4$9k8k(ItuRoK`w7aloF=OOTR1Mt7hN-ZRms2CF;O$3`=D ziR`14O_iR9S=R2N!3NN}b-F`UC`+Nu zWUn{n9!$2{mnpFfE}aKU-b^NENX{5_7@dIqNDQLXeu)ess3Wa&H0>Dfo8rxE>Crar zm`FbL0k>~RJpGcHNz)X6qj|+q$Qz;cYWe&uM3xEbrOY9lVu4mn9KdV~3Cd?gl$xqd zL-p`ZY&71n&tvs5pqf{7k7P~d13Wh+hdcY8(vZ}Ul>VV&h-Xcukje7H(}(fmvZ55A z#!L#oD+j3%q>c>AXGR=5w}AcdB|{rXB99G%@S69%wN4_>B9ns!AZSUVBuI*o5vI;X z1Vw12u90xIgV;=1s!(DnMm5OIZ9W~s$QO7bYE=` zqEDN-n=5;_B7Y3j@^E?3p45-_Tewj8PI23Bbke0ns9BvoG*h}dpZ*xjWmR-Me#t*a z@^aTMj^|^)C~>G@Up$w6<330r8kQ<1DUt!BLK~b!!>vAOzdNAJWY({ZjZdmTji!{U zrX`XlPKb+687)FCnb-6()=j2ui4;)MESWJoN52-0_1ZzLjw}0t6g{ox zjIFH!tY<*Ew}o?j=tTSDgPtwEh$o+< zpzj>EtG_Rsrow8`)fyb&z;we7xOR+@WN=-ETF@=t>U--g4XzIWPqk@cd+h*^OA=T{ zew&&70JK_M=P!o^z{$ag24Nz0>)v1}#^|%>{a!>)N0Xe|-q+mCUw-p;7f>qfQZmpn zs_YHc{%m}+sc2s02LBrEgMj^rs$tkUKPLNzBPLKJ=&dfCT11C#M?%1QfdK@F!Iko# zuu@-JjyXBze*A&MpL_}M35lpv!|(};DA!PQ)YSDAE^<(=b5#>B`hWB}TMoa#;0PtIjvDUQ7p|1~XY(iAxial~QW%&iwzyO$bL+?-PN zEEvDrm1XOMGLPyLBdp}!1N~bUQrW124RglR;~7co{p}S3v33kz;^ryPY zZ}(OIdRVl^vnc_($nw}hoC`2U^``g4NMAK~{~-HNEnzIE{Ernwm=qVK*lqGdQNA%Jl7`qtF=EN=(Dx7>{QIp>5HsSai8ez1I}3C6hBR@ z>eGEnd-iSO?d?i0yvm-Cfe{rce4fY7-Wy}U@;b|jJ1?1mRY_X6@2`1|kIY)TFaC5Y z2<>ino#-Z}#YMj(>^Nkeh(4zWtuc&=&4x&8lNFjNK4CrG!Pq=K#Yive1uO%l*54_u z1iDfydy>@*B+ukk@6_rlv1Uz%cRa~@p(=_-m4M_tmH5ePoJVM{ESfK(nI2cAg`LP0 z3SK&w3D2fI6?NvbYI1Zf`_sjXupw7iKiP7Ii&oWc*-nn8z~M61Ynr-2xdPkw;fn(K z#4RrpPE1W1|E|L)0@r_eKB3*A_vQSZ%M#G=LGYb~7Rh^(;Rn`TIZ#pq0D1!LJ8Nm_ zw*)V+0UCcMu(vl{$fUf~RY@!tJVgfTSZ!K1`+jvSe|^+e0^iG`6bXTigv8=is-5er zHU7Y8c*FQUv&PwY6DPn?k@F{bzzMp^*DO?OJQYpdDp@KyZY{fpU%)UccEtwzVGyE~ z7ct+h)X~*YrWiiIOZll^s-zY+ikNC&xm>BmPn5N5a58lUk}CeW`y3a}i>?m~H1|umT=w`rY8+dH03AXg^=p-t zR$w#ue$-lweH+8cy`s#6UYZ0<^rNV1YIJ{th!16H5XCLvv?gdJ2mu%9(B|e$j$Zp=^X8etCV82z0mdy>_yq4x($Ok3Y z01Vcma%)F~G>u|a1IMrlte~4JkzVN3jmYtziXA2lzMs1A8u$=OG*2GdK1_~nmg{HD z`(=WMkA|e16W3#hTHba9Ts$p2cHKSUj+dNo z@ehr&js!o=#AliJ&Q#Wn{^o&_SU9ZdUB7o13hs{Vr|0cYD5V5AWW?H4NT7c($aM8#$384JbSi7 zianr%PA(q0BZ5x&`kzED7x_hOX}HW>99_*mZ4<)7iK@f}=GdAt8hvNwru|dlh9e~W z5ZxH8%@%!>5Q^zrMMVAZ9z_;2E6i2z`1molW3LBV_jzte1Vi)OciwLUTUN#Nta#KPi3NLDpg`ZQV($RkuwFZfBqlu@GU32yT+ z>)(-nBbkN8$(4rGxzP3u<*BOVrNX_+?D^3p-o>uSFu!}yXRy7(3Jb?ZdnkyK8yps* z79ZCm9hF>DQMEXhE%x++B0f0{AUp8q*s&vSy+Gf^iX=zzIRPG~YM)8XM|Iz4LAK`H zjUHSDK(}s?*b;058|N~_ zqCfD@PS1mR5gNOAFDxH`K_;9@toz~MdP!QO6eGWS5L-s|uT-C;S$$ zjR?P}-2Pg_ZIj+TpzH9?y`DBug&{Ogc>P$7J#k-Jel&x?)*YNgc+SZDfx4aNn{B9Q zM`F=XP$#AoO46nwn;}hO?uJNB5nCd7#PZ0hA;2EPeEI|N;Hasx96Vvw=~6VBZe}ZZdI@gbbB|HYA#U|<4Cf%{h0C#z!sl?y`C0~z{;M@Q9KH5Zn{RFl9>tw> z7f(X1BAd1D@0-JO;5nO48n&FiMTvLjkrT7+7xT7I{fZ)CRE*ap+IclFiWG=v2 zjB~AOUGgq^W!=9|OXL!?adr%Kpti?4YF#u=97fYzVITZ-uW`#g>==8jJ}0o>vS;SV z-9T-Hv!~d^hv5se63%t}=~#RddxPMS{fWySA=id=FT+86hlW2RVCAy3nY}bLs^|7Jy?NV_A!;G2 zB&rK*3eABp6-E)U5#EO4qaPk}+OxhjzHMNnrRA3;c#>a@a%ASE>f-Mr`>=_M6D7wY z*J5bL-o;KrW8ycq8TuRz9Nin`AVCoSLPNt)i>clat1ND6b?tJEcsRCnYGU_xdN{@0 zz*L)T`(ei<@H_nXnQ_K&UW`lhISvPxeZZfEmrzfWkMI{BC}1cvC>i7)c~|*Kxtu&t z$|%`nia43|%m*K5-$pJkmAeE!Qa)?%>T{<~3r7XLnKZt-$Gh{=)1^P>($SQqv}Ru8 zX{y_*a@I0u9#&sgXjWD8_G7|kB4*cPR};kt;;-hfCSr}ovBq`C8s?Pc)CpxgWf)}) z(!JGpDr%L>RrsbuX0hX|*;3|DW4SYbk z`zi+U>aPxt2_yP@_UAq3B1SrT8J+K{?n0paI}JDqFbw9r_(y9Xe^<)W@n@wP$KhVwBB;7Bm zqj>(&bpf{r_lYA>J|yeqGj5b+?NxT1R`%&x>9i0#zjJhICcuiY- zqvc`02g_X-H(@K;=m=d;s;V-c+ZNiV;b8TNbsIFnwD9@XvjtoyQlour#UjkMq? zaQEzs&Y*NEl;!>LkoG#eUpQMZ$Q$E#*|XhUb1}&9^*hx4-M(>bGxP0gv>HZ%VRbO1 z@F{*X6+EGzq0
As)#Lep7GU5Ecl|J@n0(zMdkYv1v892do5=Rn_f=wfqud9uNC zU2%om%X4xSca75%;OsDu053q>PT>5#Pq5(6duP}ef+K(x;Qe&}5OIZ|@s0dG@nzr= z(EU+yHJ37?65#Uv_pn@4FTqFgH$iJ2?DxXiOqha5{?$v>j6p`;5}%K_PyWT`h^haT zw~UI3`}t;ih3iYC`~)AJ+*)oP(on@*`qE&!(#62Ss?(n=#SLQ}uwMH$VT)eY@86x8 z3bH>m`?jz|2aoB=@IraZtx+%Ifa*fV459CYk3z^s0c(*T2?_n^^?1G@?m>K`FkH~n zBnSua9!^wXodfox-}Mojg#xl6&J_ptHP;aLMnrc4;QjsesMd+!Oc3_r5W7f!HxC@s zGjxM84AR_ScL6)}^ZY0;J>DrSUcsjZot z6V?^v3gH#=on$r=uwHNg4$LY7Q5tR&yDygG=Iu9z~{6;$}S)Vad`WxSnS_O6cL<-8~vy=)d7OP+)PjpI8ibb2T8{wefUt_s4 zB|T-+w;u zuG(GI-Dj87YQ<@1W|P4Inos)-V^=|ndF0dO@=P7V+!f4P-{Vms-$Yy=fd`KI8n2ij zdlsf_t8}ZZr&R#_ciUiMNIEJjx@K>V5iLL;X~-GB_68ay#v6k#wJ{P?v?n?60xcV5 z!%837(iO@ci1{{nU-p!&1-Hzdw@O}TF<$T}&a<79cB*YEY{<82`m3(C&+X3&S8B z*%9*RV4-sLMB;DhUBEgc`!TgFd8T~Ls%%u>b0}O4vw)HE($?2C+|-#|CKw{w?XMYM*fT3KyJDze07l0J=kZ^pn-8r_(y8h)$R74cv8`389jR?6 zLfJP}wNTYoHC8oeovNLwU8!xK3G9f`uAMY9oExchpL8fac3Z47Tdh?$dkjCOSu|K2 zt`#&NU0kVr9xN?R>!Vn)_^Mu_9$fAeJATOkgaK*= z$As`eX8Xv7$Y$#W?EsAlZ4GS#lGX_rpbUM=VrFyKrJc};8Q>0`!SczP>A-4fJ*U$+ zpb8oWV;RGhIiBg@Q!z#W%M1$xOSpXwMsN0*Y4j#~xGY9K>xiS8Z%4T!##{bkzjSgJ zw5iei91ik{(~)h%Y5crl6RP)(^aCSY#5-C%oWx+Eo~RrOoS zg7_iBOqc`uDZ{vV^de0iy#@L*hjrtT!|ZYTqI(^P1!vrQowHCEC z-kF^sSR@$M3mDOjNy@I^`t4fjv|@PkYp-?$C40*S(~fn=W^6BN#33dlyM^o0b^WgO z>ZW(^C}yh@kEH4->}Y!W2ets`@LRV*+uYs9baZyktEWEOs$GlG=JZE)7$=Vt=e|pS zMaD9rGPANzWpI>X2{WR*^i#z%#Vf__rm3^&8nR7!&cl4z7mXUl%`+|~w=S!uA+v-U zjZHUB$CoSz_8o_@v&v<*8pur^R}Qz(7tq(xm*HpO7vVQ2+v>;9$+t?D3$9JKd>J+w zXc_bzDekooX1DiUyI!N*8J!%O4{DdrYnOAojv0g;lKj4baP}XSL(HTi$q}3boA@%b z_@pZf@`?Ck38F({apDT3rZnlK=!EE$#ixYylTTrRISPCC||YOFrD^twsjrC+dbK90fMX?yr$ zZSQXFZtU*to*?hfPEvML4ojXSY|f5Su9l5S9?q^AUeP{6U8d~a=B=u=-g{Wy-(HPg z=RX_Xjb3<8dX~Pzz3RUVzmPsTK49H&?t3o0etTtpg?O2LvbkAka|XpuWMF zfqp_|!nSf)TWY)ahWLOCL;?2n*-CNkq>bJC5g-CM9qfta%x$f^?G&I4WCgMb!-=tv zrNA|kjEGeTSq?D=rU)6Ivd!~NocIJ*0ft}9Y)>vUCEsvpJ3w#5Go$g-VSOjlfzzO6sd;_JO=U&Cw zWTqkSXn+QEGnxzgmBC);*eXwkF9)Koj?5Cj8MyQAgO?9fA66=N8RM-^Q#MxxoRM`}pxSFJ%N}a--((c^PK{muU z*f*XxK5Y1GP`_7elXvifHV8@_o|&xGm9Oybt*J(K0~-G(0q#6FBn}-wE$YJ7{^}qEMw# zsPTB;;p7`pmuS(>e>??x8#!y*~f%O!VL-v4GO;}+2I+QPCTTp(>dvRLbwzi z+Dzosc?pFIArDW3Wo36zI7*#!t~l+n2wg^KWOh(JBD9{je%>V6xU#OX_GhwPI;+pC zm$u&A%;=t4Rl<{_3figs~$FR$=_cnww@Dz)a%ERrc z`Y!3*vS&0*6SbAaL;dOT91HJCm`G?0PmW*@-UMDll!_2i(nusRsT^;;({~xn74C-M zNRlbuie_D`?0Th^QN>we$vS&>$SAFk7S()p2F|je1jQd1EPN6Vuv;pC;xJu-e!^B2TuJ9?Ld*qe$M10P% zFl)>W-mxT0q#e$_+(c52ZNF|zKK`gsdK_E6pjE^i<~ci@>(!ohR_`{ZqKn(?roiYi zJLjo$!7eg;>w*3eeJS#!DNmU&@kXp~Y&8OZFbRKJbev2g&F5UET)bR5{umktef@#V zSXE*e8O%I3k$ZB)JeB-~JaCyb8Fg8|Ld-&q!py>th0=x8g+Yb=h0QXuvQ@H=xzNHT zA{fak2@8=XA{c2b6mi07ku1d5VN;H>tzysA!xY2h!??q&!-V8`;>k!cND1+g@v$?w zf!2T>*?xE>R0KB>YWbE^vw)1 z^l`)vB(pUg@5N9xATj z_wy%5^D;zRBRxo;H6EU?GA6KcU*li!o(l&A^vf<}?hBseyo+Gtl;R3x3NPdli%6!W zQfsHoM6*VTTt2_3YU=&~=bFntNTs+`?r^&1z~$P? zKE@^0rNO1t#rwhh8txkWn&evL+VueHpyUAKfcJp*K=iYzjHG0CFpjq&`he!$>Jd>Un=lEe2SllhuTbp1Ly2DCzh$Q}D( zv0;E=8u1W=W`mfw@k0!M97Y{x9tIl5AI2DFA9f#>OxC1}pc@^iu*pg#siQ=WWsP@@ z?@b_#za^3+PKYBNq#c;vb|0u3e2hbmy``k2pd_A6n2nu{V>ALQ@tF}m%tAC-ojn;l znL3#{nZ%sNoK2rfFGP_)7wDb}-bbt=NhVd0Z<=jr^F41>ut-BrBw={M`k9NQh7E9r z>)pF2n}0@dq5ofHYOpoZw$a!7htxlROlIT$f2EQzAHU)c;uKyZeO*)AzjE08#B=(C zr9?h_82SqpEb!O+yxc%O$cMhKt!ygtSM$j*iJRc7L#WGN13mJ9J$Wur^zXN;>B4 zF8X&HAMmgIjpEc-%r2p)E7%3`mY2oZ?lRy z4aEi8>0%Py>eFYKBc_WkHoV;t?(jCkf=dPEjA^e!clp^991(5mo8D+nPX31Kr1^Ku zB4BT3*VGi}=9QFH`jwF6C+^%IR3E<(lKlQL!rwmjD|PKZCFA|qUrPT!|I%MY{tYYd zzZN0>zZLN}0{?)X_qU?|*ui!FY|#{&e?SHF6Vu60y8Q5BT`fdiLoFSxGjTD6GZ=+H zDKCIXln;ck=C%} zhD=JTfjN@Gi`VdhcZn4C`@#@5*ii;OT9@6Vk|P01aZs^CmIG(k!m4{V{d95y*DA&? z{nE*cW9aO3x75zSewD2-%@V&%#mi-|B! zXN&}!qG*a>OQP5isq#!dqVdjro0kZ0d?ags&1o6zE}er&h)@AR;p|Wv?6^k@;G1xy z3fsbS90;hE1Hk;O+goF8!3W>@9yr}mUiq#>&cpMkbyN7n1?%X|hkgHs!|V63$NRta z<6kH1AL7*?Pqgx%BalM#e=_HPatu9Pa=pcnDyT#h&@VAGr4|YO_c0{>I|4$H|H!ww zZEf{`W+2o4`NOYE+Q8p&5B^@R`kyM7+saD#jSr1N+sexL?f08ff2hhYv;KQkO#a)d z{1p8^Gqsu6T3Y-BJ9BT4^TR|XvFZ?Cs1W>5pAmIukuGtEUqtMv?e>Y(nL>CsJV%GW zP^cv?4!<8A#Kh_iX%2whp(ju3+VcwE#N}yDCn2gYn8v(R#Ygjhmc+S_+5e0O8(rou zQFi*STm!m=)j+R(=<|@8YjPq|I<@!QwL4l8QaYG-S51D@_pTVES2|)V3AKymOFr3< z8P)|m_jn_-F%!Y!^ijA;z=^KH?5O$$Ybz1YY=vcB!;8b8JQ(r3)U<+oU80RAOM{^Lnd z{8K04?<{V!2Cv@#7pE-Vk&%)b7!n;+lqr`f0Jia3s+`K&7cnNSd29^v!@S$A6 zw%1E~hG1{3Qt#XA0}51MMJ6X>d_0PrD}c8H7k5y$T`;QH5@01`KU8Ub^7o4*PPAZ~ zP^YvR})ZR=?cIL@R1F>t~}AR?{{8&0qM9 zClI>Fe3S{qR8WOEJJ(X~J-(k`RflnZZG+VZ7shmH9OX1nc%dy!BN^ zPsxj%7dv%Ohgq6$EgT+V{nb5V!ii=n?G^cjST0Ot>-fxe>10d+Dx)eDp9j1SKiC=W zISI6rH!2#flB~QwSC4$Ei8`Q+DH$d+Jy$D8A6+O4VuR*$9TCpwUcJoWJiB zB|nFBJEuGZXI_f#&($#Q7|$(P5BG4WTK86BvC-VKrzle9VG9D zY^nhta>^yjsF7N-7s8ucP(0=Wu=?~PU;Pw4=c7uNG)A%+HTe}cjhLETVG36-s9d|I zOb&D<1t=;;#atz07F=W+fe1QnwZAn2rCTm>HjynE;Jm*wM+QTKmc^8AX>Kc|X+0093Qa1H+)#Q%-#w>s>9h6VrUsQbr@ zx7?ovf#TZ6e*}F$R_-_Gvsrk9zFkteW%JL~u_K9kI>~y8#stP+lX4i9HFOb`FNA2o z+}vkr09o59=z$LY?P@)A_3vQr z4XKZF9aQUiDk5vpjq|()BQ*6?Z8zAZxeSa$=bt9jg^1PxV_*Q%9hdPE!NM|LfIF?% z9{khOV4wJiW53GeNP3y`aHtKKFw633^#qAcy*?+lS|MRkxCXo;6m_FVPraf+OBk2= zjVkxUVf!t@cANAZuzvJUz=49%Q`WW>6~>;*;(dUbT9++oK8aVV^+)*rnF8b@5FJ2I zjK&;%XXQO6mRI%)HD%QHR~9^XurJA4Hd;)eD#n_UPq#IP5=9KG5gSxaV;EUV@Rm@U1z4oJ4Wx}}XP^+k5?$&oa9!92 z4w>|TQu10f*p>jd%RweAm}APv6nR7r2r&pJ*Qg<8_OCv$MHrtQKp7ZFafoOTRBNi5 zS3SBT6%LMjthP!=`zY<~MUC&dx`Kprp+59`A*#B;StP2{L#+rn&e>Mz2l=MiCL^WI z8KyPeqTTtPPfzTLpTjdac!FK%hge;pH`6!#iJJJ=Ef=7-Etelyk|w`s zu_yrRzNqOoL%kg;zS9{G?JPUEQ=H7K4BKOV^jtF65xkv zWkhuS{p4mt$&rbW?n~qlL(0qXDSMw;d-(lU&;9$`Q4LI&EjwdK{1~qE50CT-8!7q? z$EgulR+kFBWRLsn!1!qD1qEsD`PIYV**u9zExzZLpI8hbkhZg*nPwLda;kjlLwdkneg^7EEo|)UwdkfrmpqTo>qGw!|!Q5nx!X#$Rdg zq^?R>u3nVqh_XJt9Hh29MwO=05+&4PU0pt-iBICo?pBA%F-!7eWtm>*BZSK#Qu_&4 zEMDDn1n$(kAW4_q>p_g{%CAtHEYgLNL5&8Fdru8qM`dNt zlq8Xys>l%gq#8H6LrXge-9oW}M|LCfp9(e|;rdHj?=eLd6IGt^-M?RXclv0)I?AI- zmlOHX+1wj*KDnVsS%A+9y5eMIS$Yt=AbE7#UDFl@b0VV|m=Fe=NHsdVdP8OLoWVuk zM-g=teL@^>h{^4ukmX7+=ar^FTN zq}igG*2nU*dpvx&X2^ox_=UU@twd{CWA!VsUv``X3TyoJJ%Yh3?e44SZcJbfh}D?B z%X)0_9M}3fpS4focdfmvvV(hMl51Q{O z7o+D>$c?<`^1f|+8q{54V`i|Hv~2{w%O5?yRzlmFBqq}ypHDpy{tlwII^kKgj#aQ; zaWC9k{^cSL!{H;u6XMiYlVTC+cX?=nG^4zpA(@Jh-j|b#hze>5ZZgsn7#AdDl!eU3 zIXSdsz=t?csZ1N({JjS~ z-B4W?EaONd4()qVUa2oEDNdS+Y#QL(gB64cPh4i5*;l9l64xXwqqi}I{Z9>ls^R7g zx?ik5yn7c6`p>ok6#g8@qtN`981R3NbiX98y1(0l`_GEjU$++i+RS4AH`{N2oU#2! z{SqmKEetGwbByzQ{C$c=fW94McF}=3NxG<@>vQ%?xzq>fJSoF@ zg6Q&Pk;MW^nS7!^3ud?whbp`gs5=X$4p*ETbFHDs24l{<>}?LPq5d^m_`c=-GDV1> zwBCO5t_94sMFU3Y9%t*ifv47V5+_!v;<%hG!_TTu{k)Ht@R%OHSqydx9n7Gfz1->d zouHDsucc|+iQ=8RpRSm3lR`V$`tmy2pveP#84yuFvKi+GeTOu+T?{)oezqXUUmI;M zX7ChKL~i(G)1-oz+5JJCt5)6+kW)B|LA4=v;m9X%G+5TLmEA(L{iTpYgz&6t2aP0} zEZ580r5Z*31IwNb+_(zD;FM5vnsCv4uJ;kWA24h_#-#BToHL0S9~eDw8{#LRl^~FBfor(9!I4C2^IPKmxw++4F%y>FXc_Q=puIQe#B@ zyRzuEce=wot@-52i@t*6B(`=ltcT<}yS5XS51~^E54M@l8 zxl75^c{-)#SPeOkPK2}k+UFd`J=xP0udjZP|#(>g$em*bD zD)eDSMTkWGQw(w(q|dlOJQ4PcMB0TXCwuld6qv8I%}qD4B3E*HdW-uqJMAYdMo(8q zy(Aw>!BY>`yHoB?Fhbi~OB>#fT=cu))s(bBpPnw;c+pB)Qgq9_j&~GA~+SEM{+tMiK_ECH04j z$tFC+2SGWxl$D&YIbKvaJI%Z0c?LD@F4OkZPu{Dw-}T@}@T>`HuQ}tHQDQAC^KCPJ zk!QlDjC^fcblsd<5sjTA>za=Tm*8wu? zh!Z_|Du1DVQ~{TO1X{tlj8f~@hS_x(9eEcsu-4;qEX@Rw26BPoyE+?3YSm&Eoe#v9 zjXplR69M!-t9MM9tnHpSM6`UmOI18*OIAF?YiFzSyHysmTd@*cRtD+}B-r+B9o~F3 zy*eU!JDr*I#O25$nB*dz7bKkeV|#XnEVhOxoS3ldM7m-hi)Kv4_30y(68Xy{Nw9+o ze)87n7X~GB)MIRAzVs|7o5%fjQT#!t6P!5>6c0Zr)DU}81@fwtvql}alrDtCIgouW zxX*jXMLsapBB-S$@g%brSiPS5!Rm60lpO3XS0&As;KBYN=fjZPlVFvu4tz-v4644r_il+ot@y%dFS{Aefm7Slr|bc8V3F^*@@Vt$-Ejo8pxJoZLlO&m zzSwHJxaC$C))z7@k?EElAamJn6r>Ey5%2dAeucU4n(xajna4W$z#eq*{i90tCO}a0m+ebwP5S%EE8!UzZn7cERMuy05 zu_z-YVHqs!70UpnL<7BFdw_Rz_ciRoSwgb*kgE;V-)27_6_v3`hdAJRo8*v;0-A1+eQ!rBMj!bwLru-L^+f6e;HC) z3Vu?ZCp7Au$2rW;-@T?dwSU=R$6y;Z3LN!+x7gEl?oQ)(m1s9Hh=;|{ zGAY559;5$mW0&iCt=>aTS%zGceIAW2c&p}Fk|qU>+m4rgCmK3F9t{;+q`m3HV+-$RJ;4CH%QbV0$ zMiFBDv9-zF1GHgrE6wN%__K^gF`Ep9Wsg^Y(22q=eyhUy(38p5NI+6tda(}YK@p@M@D=q^ZjgvG7tX*>K%c=yP zg@!ZG#S(3fwsK7?<0JA#?+YwJG(uYx+nhiKSp~YIx;(cXDr%3y;o%w7Vr7vDH87NM z%s!NC0-yttMbVB@F@S)WAu3uyt_twyJz&ePl|(A`AHP5>e-;*S2b)5-Q=;-UVY-;WyRR)^>_O~I%CSyeFRkVpn*=y-fTjz{l6FFGc$?`UseN>aaTj@bU zeG7EXWR44Z-{lGrWbd^b!fa$l%sr>m(|xI#fxf$Jdo&I zOFAQLWpwl`dPX3VEF%~)ek#VG0b`3u3hB`uW4vP#`ErvnF|uOaWF&L=eO@u#{7G|1 z-O4CpLLkBrI+xH=&`N$@wHmwkhSeYR5)q()s0xDFYCi@#`xpz8hN5oJixZp;s7qM^ zioU!Q(^16;!&0NQCGJ}Bi>Z(34M-M1X3P*ygUoy~U#gP=G1oOqbmAkP6L_3tKgX6J z;OEJs32XGWOEG6kzsv{vwyw;HU9u#0*o9kt=wcealAK+)vsc3W_VFcir=YtbTQb6e z?v+mc#mNX!fp^MYfPst z?8H*GO3|vQD;O=Bs12{zDMHE)N+TX8(~1>;w|jj;x*GgOxSf(~?#@rNx7qRtY;DOg zfQ?c_odnV$1V^P87=>5WcjR_-vaqPQa`2S1@&ct`S^i+C zbqzlzL&o#8l6k^_?RhHIB2v;I^$=87bf`oQ7Rg;hCHGJkirhiTj#8W@Q_BFv`IwK(IUK0k829C)smxg!tq$7MB5zzWE94iUFi(ak zjkwbr^pHWHU7y#V+fS-k`MvPGWy&-(|11?3{121nKWML3@OPQ|@ALnE8Jzf|VG*U97mOs5~({iF7hKXm=u_L5C2 zdBnL3BKg>vP+&|)6W||<`GDa5uDxU_{#$!Vxo7{P-FfxAv0eZ*Oru z)sVJSv5%KjhwE*tCLjIOUb4pG<7Wz;=v-k9*o^n(uQ|R9Bm2l++9*o>#)IK~?%f zCybWpueCFg6Ro~HSms@MZr+tf)`WZk;@qSkI0R-TBTrtEhh`2He|0b{}m6mtXowW^>39jv=|%)BmN9Wbg38vF+QmB>&CbkKY?c^}k@4-(by;`=UQ= z@z;iyJimjLf1~T?9|GJT`NwY*`9rArq20H?1DM}y7yjQh(;sX1FZ)IQr1uZq!<50? zWaVc#Zw)jTnwoOBQf8%$h(+t{Ecty)rHFu%OUxi#%b!6p-uYqCh%7wbVj-_R@?aLf05F`IP2jvMj}Zya93ILU%aY4EF(_ z(gL8xYj;X~2d@pM$IY0$aalBS;S^jk<9t*J&oqIP#vT9q==RdxS?1O{y1s#e2d{1he*i zCJ^Ke88%eS!2C6EwGhJ%;H5y-Gq@By~yw{lL)l;XtW!fEH5f%$|Il)5BZiJ>OI?>DTVprQ~dE2SZZVD=4vzU=p>GKa zR~rG37hH+UOD^lPNEVJs7Pd;(B2+duR8O0dNc4N%z;wJwyUKv*(66K4xvj7cjf$VY(BrWWL-`@WouJ2O$*(ND7o+3KCyR1TM(is!Pa82WMwlN&=A;mBN?!ia8EX zx;q^2J|~fbR5;!TUHT)qG@sQ&2fYOhyK2G8{NX7WD^vK%V9Qi%QTz9a$?Y8438|wh z93qz7OcqTdu4iJF*ymz~A|&2)3aso(SrqU(r!IM3o8(SRmYt8hA$wlc$O8S|1TG88 zWABolrC_T1iK3Tas5 z<@pGh<}_Ma0kFzWo9*DTXR1Unk^vVQPTwVN*5``KRR@5?R3-B(KkB?&V)X4}DXXe1oEk~_|PV;Qprb_F52uPJxd_Hj4*R?^Nv z2;c?RYN{>DnH_YpCE z4h7(Tyi>91(E{5w)lb)^AU*S6cU4^IgzPc9@RK`$C27I=(Ni%AyD{<_mTf|7~} zOrZX_I$8`VU!r_)zKkA2HXuWNNvGp4QwfQ66JEVZ54R9u_nhMy>7ra?q6c>g5;>rOq||z#f9ZO^2foKkrm`7p=pFM7W%+C#3cNn z#dJsiUK$vzuMGt+n%O-N*H&0z(k!2l!Bil-pj`?M&08SaIVWlkM2aRB7s5CTO|2J_ zfm%WhuVH~$?!F<13%$7+(_u1Z!x)76e#1;1?tmo?$2VFc}jFF0OPv$4^ zMED0sFvd*G{I(08iM~xwaKA?{9!>}RBQQpPa?0U;7SNx5RF__5!D8;NjKlPlEa*o)f&=L-LJ^qUI%L~|Ha26b(JOZ` zD4*}*Z?eq%ZiH!)qw6r`n=CErN>qv85O7nTpOU9Ha?%EH8%ZKW_%SGj%+X4fwJ?aH zZ*Wi-n>vdzuM8jk+<^|BXM590$UOn{?EQu^K z*h%;^c#WJnAsBX-Wv-Mswi0+&7l{IS>^_IOjEPi(mk2Z)K|w$mo@=meP1~le=Y9;f z0LSL-Bn!&}8$4i68?WKD)x%fjR)~4GZ*ApV(L{N|Abez_n`BG|6}x1PVOu9E6uI%C z0kR|?H$m2`!R940bSKabE-Mg`L-i7Ud|GCP(e9MkQv_C-c6J}^CfhV|z$2!|Zl7{u zG$^ocG`qzEV}Xa=8S%aF$n~E8WlA2_a^Ku*(exODT~#c55ApV_RuPuD;gJX9b0o(n zwZfb?zPZXVqOiK=K+=u%szt?0fI~mV!?BZ!??sJb3!_ z_1M3=5iSJWWPjNE{QZj>Zz+C?u!3sy94c7Saaek3uFP3%RtQ3Dj1o$O|Fn`)c(5}h zdv_OGcsf_Wc+8earMDVC!%5COAF~UR(sLwVX`V75RBb#`Fr!!rc2AH#aHha632}mh z74dnMkCU0>{RcZ3W9yiY07b^&R;6DF+rU|peNzY1{K$k&%d)O8c)8Cb_Uw^*BcjFK zr6g{9X#`Y^e4kd@54l+v>!1owcqFKkZ#kUnYZhnDFv5sw{ogsiB6&6yf9RXUOBt)_;ANf zdlq+23=yHVHyB&njv&knmknd+-Lf)$h{y(@Id@|721gC68naG?qFvYvyJ_&rD#KsP zdG$xG&uNHu2E8sdQhKgQX>F6Vt!#HBF(#bnKl$W;&xE{7J=6=N=e30Bz4sCbWc9JR zq(1Q|@I3{Eu9xV;#`$#}74?Z&eRMhrguz#GDxW3sy2=o5f*86qVKm;jwJd^bzvzvGN#om?mRjZpxC-H3Jx09!uvq7IW3t!=z|Lq#{9K(GqyT&N%5K* zTB23L5pJs1#wsD%?H=6RAEB6c`)vvy)AQYX^br!|5@zEOkay+cVi9%`;^bquV-pe( zwxmiC$W5OcS;;fe%!yCMlBP?&HnXG@x2Ww?!O&2)F=20}tG^wxiGP)#ymz(*v57|W z977&rUM$MW8hoLCGEwQ45XPhL;~qap+CU2Iev3OoRgzU%)R5=!5ZaJbbzsOil*C## zzM^MoY;Ky-s1Rnf=K$^)cO*ougDfKc7IX2~;~;7LHBUHY6YS&?gkx)erP2*gzB5AmCpS zcDQK2c@Ju_9_4=Avpkc$d#@cEO4b)VVZ@%|Ghmc7>&=%ObUU`?fZG79E*fP^+VFn) z3ucb=D=16w3fHPOs={Uzlb=8u@tk+soFBi~*>OG0X>Y(;_8tEdI7d)xtg(K!o^d74 zyxhEP7$yP3Q*1}1XvWA|jCv>S5a&2ei5AXa z%XT0RQICBZHgDHvk8mIR-`iNhge|7kLr`{OHbGMMYM`~lM0IW%+r&0Wtl;%3S?HGL zXgfK#Nfx(C<@lY3(!t39FOqbcJV=#r3QZ1=@f1#4I+7zM;U?ye_F!TS*Bj+BDY2tw z-Qg!CY+FsBn~vT$@G&6v10J}gd5B;R@9S)3=LlH2wG3?u#+8FtrIV20nLeDMU1*W5 zw;!J6nq>ukJMQ#lqocECZULv+9Q17Zs3|`98qg14{ggn1+mysVc-V*Ad0^qj-r_yI zyhVLMR9p-aGFQtiJ+pXT(ix)UhEA@7WypWzY}&O-@~LnU>fLI^(19bB0zFRLqx(wG%%CODzSHPZEB_)fx^;ruBju59!$fJ^5+U3)V9tfET1}s zf6jdRvIGF4c%p&oASh&$69lo;eWH_4+$kS>NtK%uU zL!zQ@`3TY>0inier&9hhSFnY=QR%H0Pue^}6m>SV49ZB5rKU zD#npi)h&z?v4DDHoQ@&yJ@pgyi>U3E%ttpt26dO>rmMl`p4VtX7;WL5|ux?_CS8GrBkjdj`?;wdWPU z#VPwG`Z%K8Nm%h8c^p)3;*Lz`87nongd}3{zl)Sc9d3cy__%#>t8C&viM5P_>3jR> z$BN}7^%Q;yexkoeztFvazo^^RB)JOK>jvz`Fvkq%Q7m(ef2kh?G9nWmGE zD-xjRrI(d2Gf^a$BUfOSr-&;6FXAaGH_1J)nFgK~m?oGum`0k$p4Og@Daw~GE08GS zkV}(ElXlO4(74V%@GR1tBB=Q)p%@_>p(rV5SU5N(JB@fiVjtF^vHUf?*g}r6kaf!A z+U1(y8f(h2@Nw$HLF2URG)%#5F-#Gb9A}}2xVxA;&vWfV&I9jt?}6l0Mv-Kp=a^O) zH?2ZUX8)AfnAn7#sSQ1YxObiqt-5S}Qf^X7Qg%{)g=sQ0w5d?=xQ!tFvo#t5FxkjscI=j&Y9R%mWmr9E{mjG8{@Ans305fsX}_k&dqy&}$Z} z7i&gMImgn+Uvi%L1MFxp^3hAsvqfjaCc|dMr}X!2?2r#ACd4P@4~pz-8c-XO8eG&H zC8jQM>KSVv~HS=c_mCcq-pH8iot(I{XcuKuyy+A#? zK8#*v9JWrqiof0hMqAl;41?9-FGX1?c8vI{zp+J~h%-f=8Fh^N#(-fF@??=%yKTgF zEp#adiNZC)y9d2=AqJttSqd-3-0^MnciqBq3O(6w2nKmlCqjPFuGS94Ue=-&V~|5B zf~5D~_jmTc_t)se_h*G{gbaX$LB*tIGjJL?D_tM;r}fXMKUZUz9bo>xSkJ!XaYA*A za0_|+$O^Y#G=ixn`2OwuKRGCAxXK zZn|kXLlZh?v9!G0Jbi*PV!Z?ElK)rUwTDBQw(;rnRU?&CLYtP7l}4db8_G-MG&xMp zIh12g$%oQ`UeVfgV4R0V+k_BpCv7JsZD*p)Zi`i-qMd4^!|ampeH%0Lyzh*WG5Y@a z>guYltLwdg_vv}==YH#P=I%hA(;{QzNxO$re~P>G`Px0MC zexk+qphEdW z$U$-4@<%IOI-QO+1uB$3DVHx#D}Ts{c#+6RE>~b^1@Aw7WqEy2mA<>8yNXkBRL<$< z?y8F8o?)$l7sGTeUfo@9+kW5R1!F)0z394~*3;{yNFYS23%ed3!6W?B2n9EkrPL`AxYxkvhnoqLDL|6~$BLTfI{=K*#a-rO$d-itFmD`cc! z6b7EW4|WKv#tYZ}j&W>Ojr{5kWqwwTN*vFVo+#1EwI2;2gc5uQY$Ve6dBezosM&&% zp<~WvW}^LVD+%3ct@X|`H_w-EHanzgVxN4taXNDvw5lMOmbS< zYQl`TyRE|TkG6X&!lL5z9C}M9$+lnaNOE2qcGfbYJFYO2%*63r!6?Wi!>z zEQmIqXwd9^^%5y~+vy9&PxO_4kX}hilk{`i2K~0>Y`vPfeV5jxYs=H5(KYjZw`r^@ zG8pgyGaP^?tuYWKw7H()#sGf~;jg13eb0+;m)+}fkP0C!)0pm5v|g?kIEB6IoKSPo>&f zMLq*5Sq-f3ZanXeOaJ53Tai^p2RpryOkyBUV9`+u!Jb72)JD7y@v>=w7xt+V=;Wbe zTqLfxzJ3d2r>J+64Vd)frwP0xMJ21jor0|(ey2bw^0;`pPq|k4Mf-(p3J*nCgLs7% z|DT4UnaV{r5Y8qNnnDgjsKpZBFTX}o(Tq+rQ{7|InjZhpNv*Cknv7+#H>k=tB@cBN zUo^L6{M6o;QD;Sq`TMDnU(OA^UC!TRoGC*(JU^d=^K>nawskLGSEo3)ZG+DmO$jZR zmyaI0Dl-~u664w~g*zTR&de)%}9`_c~0(!y35i;Zo8uiEmc8mta-$ieC($Iq8-y$D0J8^qNa zriD{C6-JP6%PQyWZt{;@cUG|)UGIxRoYeG@2-U_!DBgiCqm9r(?|+UjhYVR=9UUu) zjj9C=S+M3KB{{i&uZN=y$FBaNe}L9BQKlodyi>8ACl?s3Qc6Nn&*5E#NXJ06!>=5yzdg?u#d|~nD5#Q`(3WoK>|9qlzVrvQt-Tut1wcEMkoa%lUE=k z6$M*5%H7D;k-ZY3((@J!96T*WAaofL2oyj%9acgt&HbYAb%~!_5s=QAW#c|}BN9;B zR~{I)BOP##v<1L0AbB1M$TGLE6D$u?hf0@Vwlh&xS)6hCvrP z^~<2+3=X4X&Ft9X;bg}aYQ?XvAFl33Vt5@ANqYdCbXZdQOXK7q<{xz?62=d*5DSX} z7XUvKs*({8eok&+=YWT{=v0N5wp$R3<|Dtt0Yr4zNOtTH4LuvoPGz3&1*ftPfRqVs zkQ+OsKvwYwCL3H8?x4OE1Fq-GfD@YXrAX}tF4HLDuK=3yOaL(*&XNBj<`j&0n4w-G z0o8@4kKpj|1N31+rjBE&576%84-nqU1#)@s1mMwO#+QOObT?9P(&4)hk^t;}i0n+@ zouW9Jqa6lt&BK4<8_XvXz)uJ-3_e%D5{!U{pD%zb9#dTnrw!g3HO7eD0KL> z<^>c;+r0sRL5Hiv4PywJa>1JlS^|Pp+iNh`PP&R{BA~T|dWcsIa%_aJ{_up`%K;or zDA#QiYXY}KL8-REbrqEf(okb{mvA4AOu=V4B7sBsEiCO!0p0td?MMe&22^c(P@6ROxS z8qWdTrX14<3T}|=bsZp{4y*ZyN&Jw+szffyvasj@cZq(e$X_hcBfvVt1x^6QIla=p&4w?;!)u_C;TyHX&GZwoMtR9BT=RaFm_OUAQeL_fR7G`!((eT9zM>W zhH4x0aI+UOe7M;GxS5dr?$P1q#Jr$(G0(&7?HEM@vL*xqNa%3t7$6bWCPr5z{Hlbv zl{m0xnb0C+5{0`MaW|G>?&^W1Qjh}yP(o7}p8W?+Qj<(Q)^6{7D4e*TEr3b3hawb}SS@6woi^Weew=$g3;Zs^aG_ z^Z@xxXvrZFJj2x$otXiX3|*tZsXrq?79GwINftM579dl1MD7qKm=kz!8USLEmc?Na zOw5(a)fMkoR9A4?&H@mM+%t_%DCl7UYV-Cia4HO}Q|U0BE{bQd^*3ky3-4oaR0}K- z>2NGEg)!3pD=?>poj)TI1OY$;8XPqO?d{f!;j + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingUI.h b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingUI.h new file mode 100644 index 00000000..b7d5a4e6 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingUI.h @@ -0,0 +1,19 @@ +// +// LoadingUI.h +// LoadingUI +// +// Created by Jonathan Ferrer on 6/26/19. +// Copyright © 2019 Jonathan Ferrer. All rights reserved. +// + +#import + +//! Project version number for LoadingUI. +FOUNDATION_EXPORT double LoadingUIVersionNumber; + +//! Project version string for LoadingUI. +FOUNDATION_EXPORT const unsigned char LoadingUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingViewController.swift b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingViewController.swift new file mode 100644 index 00000000..668f5fb7 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUI/LoadingUI/LoadingViewController.swift @@ -0,0 +1,33 @@ +// +// LoadingViewController.swift +// LoadingUI +// +// Created by Jonathan Ferrer on 6/26/19. +// Copyright © 2019 Jonathan Ferrer. All rights reserved. +// + + +import UIKit + +open class LoadingViewController: UIViewController { + + private var loader = IndeterminateLoadingView() + + override open func viewDidLoad() { + super.viewDidLoad() + } + + public func startLoading() { + + loader = IndeterminateLoadingView(frame: view.frame) + self.view.addSubview(loader) + loader.startAnimating() + + } + + public func finishedLoading() { + loader.stopAnimating() + loader.removeFromSuperview() + } + +} diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest.xcodeproj/project.pbxproj b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest.xcodeproj/project.pbxproj new file mode 100644 index 00000000..2aa9ed18 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest.xcodeproj/project.pbxproj @@ -0,0 +1,419 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D10FD70722C40049004F941B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D10FD70622C40049004F941B /* AppDelegate.swift */; }; + D10FD70922C40049004F941B /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D10FD70822C40049004F941B /* ViewController.swift */; }; + D10FD70C22C40049004F941B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D10FD70A22C40049004F941B /* Main.storyboard */; }; + D10FD70E22C4004A004F941B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D10FD70D22C4004A004F941B /* Assets.xcassets */; }; + D10FD71122C4004A004F941B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D10FD70F22C4004A004F941B /* LaunchScreen.storyboard */; }; + D10FD71F22C4009E004F941B /* LoadingUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D10FD71E22C4007E004F941B /* LoadingUI.framework */; }; + D10FD72022C4009E004F941B /* LoadingUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D10FD71E22C4007E004F941B /* LoadingUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + D10FD71D22C4007E004F941B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D10FD71922C4007E004F941B /* LoadingUI.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D10FD6EF22C40027004F941B; + remoteInfo = LoadingUI; + }; + D10FD72122C4009E004F941B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D10FD71922C4007E004F941B /* LoadingUI.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D10FD6EE22C40027004F941B; + remoteInfo = LoadingUI; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + D10FD72322C4009E004F941B /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + D10FD72022C4009E004F941B /* LoadingUI.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + D10FD70322C40049004F941B /* LoadingUITest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LoadingUITest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D10FD70622C40049004F941B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + D10FD70822C40049004F941B /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + D10FD70B22C40049004F941B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + D10FD70D22C4004A004F941B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + D10FD71022C4004A004F941B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + D10FD71222C4004A004F941B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D10FD71922C4007E004F941B /* LoadingUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LoadingUI.xcodeproj; path = ../../../LoadingUI/LoadingUI.xcodeproj; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D10FD70022C40049004F941B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D10FD71F22C4009E004F941B /* LoadingUI.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D10FD6FA22C40049004F941B = { + isa = PBXGroup; + children = ( + D10FD70522C40049004F941B /* LoadingUITest */, + D10FD70422C40049004F941B /* Products */, + ); + sourceTree = ""; + }; + D10FD70422C40049004F941B /* Products */ = { + isa = PBXGroup; + children = ( + D10FD70322C40049004F941B /* LoadingUITest.app */, + ); + name = Products; + sourceTree = ""; + }; + D10FD70522C40049004F941B /* LoadingUITest */ = { + isa = PBXGroup; + children = ( + D10FD70622C40049004F941B /* AppDelegate.swift */, + D10FD70822C40049004F941B /* ViewController.swift */, + D10FD70A22C40049004F941B /* Main.storyboard */, + D10FD70D22C4004A004F941B /* Assets.xcassets */, + D10FD70F22C4004A004F941B /* LaunchScreen.storyboard */, + D10FD71222C4004A004F941B /* Info.plist */, + D10FD71822C40069004F941B /* Frameworks */, + ); + path = LoadingUITest; + sourceTree = ""; + }; + D10FD71822C40069004F941B /* Frameworks */ = { + isa = PBXGroup; + children = ( + D10FD71922C4007E004F941B /* LoadingUI.xcodeproj */, + ); + path = Frameworks; + sourceTree = ""; + }; + D10FD71A22C4007E004F941B /* Products */ = { + isa = PBXGroup; + children = ( + D10FD71E22C4007E004F941B /* LoadingUI.framework */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + D10FD70222C40049004F941B /* LoadingUITest */ = { + isa = PBXNativeTarget; + buildConfigurationList = D10FD71522C4004A004F941B /* Build configuration list for PBXNativeTarget "LoadingUITest" */; + buildPhases = ( + D10FD6FF22C40049004F941B /* Sources */, + D10FD70022C40049004F941B /* Frameworks */, + D10FD70122C40049004F941B /* Resources */, + D10FD72322C4009E004F941B /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + D10FD72222C4009E004F941B /* PBXTargetDependency */, + ); + name = LoadingUITest; + productName = LoadingUITest; + productReference = D10FD70322C40049004F941B /* LoadingUITest.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D10FD6FB22C40049004F941B /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = "Jonathan Ferrer"; + TargetAttributes = { + D10FD70222C40049004F941B = { + CreatedOnToolsVersion = 10.2.1; + }; + }; + }; + buildConfigurationList = D10FD6FE22C40049004F941B /* Build configuration list for PBXProject "LoadingUITest" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = D10FD6FA22C40049004F941B; + productRefGroup = D10FD70422C40049004F941B /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = D10FD71A22C4007E004F941B /* Products */; + ProjectRef = D10FD71922C4007E004F941B /* LoadingUI.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + D10FD70222C40049004F941B /* LoadingUITest */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + D10FD71E22C4007E004F941B /* LoadingUI.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = LoadingUI.framework; + remoteRef = D10FD71D22C4007E004F941B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + D10FD70122C40049004F941B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D10FD71122C4004A004F941B /* LaunchScreen.storyboard in Resources */, + D10FD70E22C4004A004F941B /* Assets.xcassets in Resources */, + D10FD70C22C40049004F941B /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D10FD6FF22C40049004F941B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D10FD70922C40049004F941B /* ViewController.swift in Sources */, + D10FD70722C40049004F941B /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + D10FD72222C4009E004F941B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LoadingUI; + targetProxy = D10FD72122C4009E004F941B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + D10FD70A22C40049004F941B /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + D10FD70B22C40049004F941B /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + D10FD70F22C4004A004F941B /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + D10FD71022C4004A004F941B /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + D10FD71322C4004A004F941B /* 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++14"; + CLANG_CXX_LIBRARY = "libc++"; + 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_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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 12.2; + 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; + }; + D10FD71422C4004A004F941B /* 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++14"; + CLANG_CXX_LIBRARY = "libc++"; + 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_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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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 = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + D10FD71622C4004A004F941B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = F2KHAE3YT5; + INFOPLIST_FILE = LoadingUITest/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.jonathanferrer.LoadingUITest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + D10FD71722C4004A004F941B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = F2KHAE3YT5; + INFOPLIST_FILE = LoadingUITest/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.jonathanferrer.LoadingUITest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D10FD6FE22C40049004F941B /* Build configuration list for PBXProject "LoadingUITest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D10FD71322C4004A004F941B /* Debug */, + D10FD71422C4004A004F941B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D10FD71522C4004A004F941B /* Build configuration list for PBXNativeTarget "LoadingUITest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D10FD71622C4004A004F941B /* Debug */, + D10FD71722C4004A004F941B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D10FD6FB22C40049004F941B /* Project object */; +} diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/AppDelegate.swift b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/AppDelegate.swift new file mode 100644 index 00000000..76cfb3cd --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// LoadingUITest +// +// Created by Jonathan Ferrer on 6/26/19. +// Copyright © 2019 Jonathan Ferrer. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d8db8d65 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/Contents.json b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/LaunchScreen.storyboard b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..bfa36129 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/Main.storyboard b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/Main.storyboard new file mode 100644 index 00000000..fbae71b9 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Base.lproj/Main.storyboard @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Info.plist b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Info.plist new file mode 100644 index 00000000..16be3b68 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/ViewController.swift b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/ViewController.swift new file mode 100644 index 00000000..5509d7c3 --- /dev/null +++ b/Sprint 9/Creating Frameworks/LoadingUIFrameworkDevelopment/LoadingUITest/LoadingUITest/ViewController.swift @@ -0,0 +1,35 @@ +// +// ViewController.swift +// LoadingUITest +// +// Created by Jonathan Ferrer on 6/26/19. +// Copyright © 2019 Jonathan Ferrer. All rights reserved. +// + +import UIKit +import LoadingUI + + +class ViewController: LoadingViewController { + + + + override func viewDidLoad() { + super.viewDidLoad() + startLoading() + + } + @IBAction func startButtonPressed(_ sender: Any) { + + startLoading() + + } + + @IBAction func stopButtonPressed(_ sender: Any) { + + finishedLoading() + } + + @IBOutlet weak var startButton: UIBarButtonItem! +} +