From 5ac120da0c0111798bb065ec9b04b3947e118306 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sat, 19 Mar 2016 09:42:51 +0300 Subject: [PATCH] minor improvements --- README.md | 2 +- Tablet.podspec | 2 +- Tablet/TableDirector.swift | 12 ++++-------- Tablet/TableRowBuilder.swift | 3 +++ Tablet/TableSectionBuilder.swift | 18 +++++++----------- Tablet/Tablet.swift | 6 ++++-- .../UserInterfaceState.xcuserstate | Bin 29723 -> 29385 bytes TabletDemo/TabletDemo/ViewController.swift | 14 ++++++++------ 8 files changed, 28 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 84a933e..d6086ef 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@
diff --git a/Tablet.podspec b/Tablet.podspec index 5ab2bfc..c285709 100644 --- a/Tablet.podspec +++ b/Tablet.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Tablet' - s.version = '0.2.5' + s.version = '0.3.0' s.homepage = 'https://github.com/maxsokolov/tablet' s.summary = 'Powerful type-safe tool for UITableView. Swift 2.0 is required.' diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 932592a..74bd1f2 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -37,7 +37,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate self.tableView.delegate = self self.tableView.dataSource = self - NSNotificationCenter.defaultCenter().addObserver(self, selector: "didReceiveAction:", name: kActionPerformedNotificationKey, object: nil) + NSNotificationCenter.defaultCenter().addObserver(self, selector: "didReceiveAction:", name: TabletNotifications.CellAction, object: nil) } deinit { @@ -168,7 +168,7 @@ public extension TableDirector { func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { - return invokeAction(.willSelect, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? NSIndexPath ?? indexPath + return invokeAction(.willSelect, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? NSIndexPath } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { @@ -218,21 +218,17 @@ public extension TableDirector { } public func +=(left: TableDirector, right: RowBuilder) { - - left.appendSection(TableSectionBuilder(rowBuilders: [right])) + left.appendSection(TableSectionBuilder(rows: [right])) } public func +=(left: TableDirector, right: [RowBuilder]) { - - left.appendSection(TableSectionBuilder(rowBuilders: right)) + left.appendSection(TableSectionBuilder(rows: right)) } public func +=(left: TableDirector, right: TableSectionBuilder) { - left.appendSection(right) } public func +=(left: TableDirector, right: [TableSectionBuilder]) { - left.appendSections(right) } \ No newline at end of file diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index e9889bc..fcf8b8c 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -130,14 +130,17 @@ public class TableRowBuilder : RowBuilder { public class TableConfigurableRowBuilder : TableRowBuilder { public override var estimatedRowHeight: Float { + return C.estimatedHeight() } public init(item: I) { + super.init(item: item, id: C.reusableIdentifier()) } public init(items: [I]? = nil) { + super.init(items: items, id: C.reusableIdentifier()) } diff --git a/Tablet/TableSectionBuilder.swift b/Tablet/TableSectionBuilder.swift index 5912ff0..5bfe19c 100644 --- a/Tablet/TableSectionBuilder.swift +++ b/Tablet/TableSectionBuilder.swift @@ -45,12 +45,12 @@ public class TableSectionBuilder { return builders.reduce(0) { $0 + $1.numberOfRows } } - public init(headerTitle: String? = nil, footerTitle: String? = nil, rowBuilders: [RowBuilder]? = nil) { + public init(headerTitle: String? = nil, footerTitle: String? = nil, rows: [RowBuilder]? = nil) { self.headerTitle = headerTitle self.footerTitle = footerTitle - if let initialRows = rowBuilders { + if let initialRows = rows { builders.appendContentsOf(initialRows) } } @@ -88,16 +88,14 @@ internal extension TableSectionBuilder { public extension TableSectionBuilder { public func clear() { - builders.removeAll() } - public func appendRowBuilder(rowBuilder: RowBuilder) { - - appendRowBuilders([rowBuilder]) + public func appendRow(row: RowBuilder) { + appendRows([row]) } - public func appendRowBuilders(rowBuilders: [RowBuilder]) { + public func appendRows(rowBuilders: [RowBuilder]) { if let tableView = tableView { rowBuilders.forEach { $0.registerCell(inTableView: tableView) } } builders.appendContentsOf(rowBuilders) @@ -105,11 +103,9 @@ public extension TableSectionBuilder { } public func +=(left: TableSectionBuilder, right: RowBuilder) { - - left.appendRowBuilder(right) + left.appendRow(right) } public func +=(left: TableSectionBuilder, right: [RowBuilder]) { - - left.appendRowBuilders(right) + left.appendRows(right) } \ No newline at end of file diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index e287852..a4ceb60 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -21,7 +21,9 @@ import UIKit import Foundation -internal let kActionPerformedNotificationKey = "_action" +internal struct TabletNotifications { + static let CellAction = "_cellaction" +} /** The actions that Tablet provides. @@ -89,7 +91,7 @@ public class Action { public func invoke() { - NSNotificationCenter.defaultCenter().postNotificationName(kActionPerformedNotificationKey, object: self) + NSNotificationCenter.defaultCenter().postNotificationName(TabletNotifications.CellAction, object: self) } } diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index 17fa8b223c29db04e7bfbac245cea23a81b6551c..9bdfddebe6679c2a4fd4715cb930f586e2c35a35 100644 GIT binary patch delta 15339 zcmaL72V7Iv`#5~hxsy#8VUGj|gdLKwLA3`epDTzP=8cmJs|-k>hp>TGHoEi zqLhS1Aem?c=!WW$W0kXei$xl-6Cwj!6bf}xWMHB~F=4_BO#wYYFG|)1Qb8IThz7NR z-XI;-BYH4VfpNCIazPHrwajaYhQ5Uo+dv-3M?=s8q$*Dv(p=X#th)K7HG^VMN|Y6p z06j3Ep=cOtXa{A4pGGvC@N-_LvR0RXe$=d1P>n{svTRTbh7fH9bzlG(2nKH^5D_0 zmVob~A20w0TD%wxLi^G7P7k)PlVdQ1_%0}ep)d^XK)cc2SH25;10#v=*@<>pT$Pi> z)kilGn;%=#P~BMT%)D?zP+@U#XphCCS=>-M@ljSk)ak)se5aRs@BerySJQLrzZaSV zQ#v*0eXC=tGJoZmVLp>@XO3|%4|wHYU`nUzyl+K3i?9}EqeJEm?t$H)4iek95dA_? zVFA=rvJO}Xi(oM n)Bax1si> 6LIJaDtnFms#wWXZjKSgudyjKwIFu)-Z^EKo_kc&?<+W z76sY`cf&pCTl5|J{*?k*gP%3ly^L91;@M06`KVJtF1@KBd2hxsYs7j3WB3`tc_XR9 zgMk;iOi20(kwk(76!?WjF;){29Xo>#{0g2mEBqtruSp0~_=j7A9Xt;&m=F2O=r;I` z`JjKS>09{yE5TesSCPsJ?6O5NKfx>L8oKdXGS}dZH+X*&{)(=nUr uDF-m8f$rEv7xt@8}<*(s}4P1{47?E->4CB~WTU92j7xC2~<9Eu~yqX$ktHl@3CG z5{2t7@iv8$#6Z?choPsfbU6A8sk&wzR%+>JI*yXH(=ouER-nI0;_{3 1@GuoI?Za-mf&DMEAcU9&{?mRW@7+euhr7T0ldJDR4VY5C!h=I zVlo5VQCTZpf&u+{rj#xxGt@Vzq_q>nm(GK(pou%!Kv&XLbU(V9uA%$WwHUBC4saOo z7zh~HU|@@Z-3C&81k=Pt(1VGi$R#eq2LpS{mjiJad4#!DK{E4BX|TvrC}oTpUQH6f zT1$j&GXEtV2!hT3NIlGVr4FT?`bLkUX01iaf|nc^M`MdnTj=rh1bQNEq7ep87&v1f z!oURsR}9?N)061QB+<^Lr%|~WxMLtD#zc4!+j;(_p!V1W^kU-P=!LYIUPQlxfd>Yj z7 _3-!UjyAfT{-E>tAc6r2Nw1UMz>ttYg>~UaB%`1YV-SLrUECK4rjJqo z(x1}D5rsi0sxnWNrJ7DqaUJwY`V{>IeHw!>48k#p#31UG3!}fXI42C`7VlK$oD~~r zsT+xNZ*FWDGNi6CI&2hqPOq=kHB{Gzy*VcjjOq~>_TpO}9oBzHL(|B{y1<|W`3u+A zgT7!1u^2>HVr*H-AW|>a1}a|6((Tr>{VZp{9J_2Ci?)oJXN3;&yg@&tWSi)l^sn?S z`Zj%szDwVu@6!*=j$r}vNAzR*3DJu`=s(H#UlyH6!Js<^JuH9r#30r3n?~eq2>af| z(;aIGV>{W%*miwz=u}GUgmc#kSL?$I`7&b0lh{*daASya^?u<*8DDBvJLAXrGXWT+ zV~~YG&MRNaNSTmM2kH8vSY~8QC fNqS>vGSdwMEe1LQIVC*UCza_<3I-;PA^i=)i2OE-4qDWYaHJ)?7br3p z_KP;3>E>+Kc)9g^Nu`!4p=28w9h1xCG5JgZQ^*uC#TXP}K)#8G(PLo1pcI2L49YiB z!Hj_^Wy+Xx#>n(x`dUoPh~X#<$6`1g!+99)z;Guya&*K`ih&HNFFKe(Og%H0c?*L+ z81%)U0)xs9W+*d^X<&w9P=&!t43jY&M0U-Hyr>w>jI$6jh8c@NKMZQxm= q17>L23 z4rU%RpIN{x#GoF7CJdS}m}tp+!pyDFuI8E19j?om6+{&n;#LN?GAl7Dl1QSZ^j5DW z@sw$0+AtV`!Rxw;S;uT7qGHxF8!#A(!LT-F6SEnE1`LK1VHGH|%ok#u{B|;X-dsfw zX5J&N7K28z3dRPjKOn)MIf%hX -$T%umb}=4T8L1{i}$7)-`s3I NI`Ui}059#$Ztw-m-qIKO4Xt#b5~ri!mU FxZL#i6=WT*p0zn4EAC0J_a9P@F4~tVQ>Tkg5W0@ z9JfH%vAJxXxmF!UY>UYGD-6zK@B;={Fu0DvT@0RJ@Dzi8Fa#J17}{g#grO^jVhp`7 z^u;g$!%z$(FpS2Kq+nePj2&pTq}ArT>TRzLj2&VfUTfYOKdH;`2 g&-JdW&^peU)=BOYg?NIl5_d{eb4KOOSQR#wzE1<_GFtW~bf?vv*Ra_?5A< zQ>`mDSBXHjd1tEE?s-WH(B<@5*7 +vi!Qw^cbC&64UY^B?`( zyKG)$o!w!6*rT7hJ|(Ej)H3VTF7xV?f-b|Wt;2g3cJI?=wB0)Tp82%nK)0^+ZM078 zCkIrUH9e$V_H4CI9WeV>*K`@)WgR|9c1-Rvyw5s(h=?TFe7I+Jm#Kr+sl#UPRNQ6w zh;{hm-CI-BK^KmEY8^jT 1iFafjCK4oB8D7`7|ipM zlG+vNAogqaBJsQIIrcnzf&B)96BwMtfViPAI@oX7@2Fh%5(cL+_|g)*&k$oG-Ar>; zhCK2Y_BPr0KV2pE4ttkux{twG48FE(I!89`$&kc8VgIt6^gH_p`zK3O{sIQ%yo(ro z+rj?LJ|mm{#o#*(zPD_;)Opf)GtLY)37iAj_&=Ri&XIGXaybzOKVop%vgs$J3Q8lL z)}Zfnll!#9C8|iTRT-})J*+rIf~C{ ?AsC-n@D P3wadM92cE4b71B06w{Mx}qa!~|u z3 zkafSa$LJ?O?Ht8`SUi%NrraxaW#prbZ%**z3C;CdYx-0s9xPJc$u$rqO07-EF z3xmHc0H0X^mUT9?XO_Q&7;9n3i+=V?E)V7!{uAPGZUliy0y&ZQa{>{Ps*uQS#rbKM zNOU}*@s1tKO|)=j9M{5)=O$nXF{CkMFl0M86NftW3vw9p7JMxFWy)$X&&%;N&F1F+ z=aCDzh2+RZ7}{WHYdO;H1y}TkW)HK{5EmC`p&=pm4WTaQ*8C^HwOp$e3kM7xUtkfG zW;(cXZsoNlw>rD0acb2oh1 r>E*#u=TjHEU< zEEe*-W#fNY7ccNOR4#9aVHk#T%f@iB@nCL*NyL*p UgqM+{$+ @l-i>t{Kums^DveJki4fn5?~P$M47<1S8GI&& zJuxhNBX!`lodE%+R5=fP(f uirI=dRsRr?eNQ%@^~em$8m7;q| O@+0|C{AjcR!(0pr0}3pXE3B_Kk(7}~ z80I5KW2_=4YRK@Y21D*koTu S^R8%4*xcWMHm)iSc0J*L&G|L z9wA}@zmPX$SZbl7979q|_3fl$fz1lbX{0hLGlvz&xU}-^7JAw+?9+vwUM~;d$ZxZp zwTa)%Z{gqNw_;d 2mK6B}>kKgY1Xl|P9gsf4=ZGrTnofP<@?`;c_1EPYIU z%}Wfw=1Emy;l}w+eptCN |+B>}Q_XbvxnK zH46&}qlOViwDULkn _q7N|Lub&1v|lkwE6^+eUEMx95Eb2ijolqiNRIyrCc@&Zi2fY7CZz`!AtNKd@vk` zVGD-iF`R(mL<~(B61~G41wT^M=L&&>M34$W6!A%uNPSOKbTWohFr13vH1Zr{zG+x% zA}_(}hYxBPR@YQNbR>Cu+0d929arVtqjpqtZQZE){&i9RXF544DK1lysEUtD>!nsk zsZ>g3RH8Z~Jt{7(w<;qevsYSty2>ynF}^BZWvDN(fG)TGBt*u&5VN2X;)#L?YAk^> zS_R@lX1$>yLg!l#3}?Q6Ve1rZZMO bmxao- zLO#&~K_}!2gy#7eF2HbMyHFq$(h3ZT8Er=-doZ6X8=6-}%~~gv3r3-j&{rU~Kw|R> z4A)@Tj^Tz^g{9C>sI@?>7HR}y5$|BQ7{ev)LY*)`7>MCg43}YODe>l&uMZtAH2>Gy zk-{ipG={`diOQ}fYx^3#LMI5M)%m}0Ckc}UBB!+&wqn>u)~+-L#Lp6lpZK4(kQL?& z3oLrrf#Eu&>Q4oRKq~O8@D9 L|#I-ZmRf=Fq7K19vhOnpm= z=Wc9IQbeZ;p9r4{$A!-{nsU {u>i @Bc(DsP!QQJ>!kK3NNy=nWK?ca8coybmX7i1S^7j746r?6AnsqGT%G q0w*6B34fdPtx7csB-)_Itez*Nz`(yT>+J9z$ z!v2)~Y5OzwXYJ3~U$MXIAUOCsBsv%zY8=KmOm+FyCRJ!y<>p4r?4*9oik%Ic#v) z 3LiDS5<%2Dmu)6rDoIM8vF<4nhOjvE{|Ic{;>>bTwUisLQEhmMaNpE&;E z_|%DW5;=J|c{%ww`8g?_)J{E|Dx7MZu+v 0PI7PCJ}FaQe*Y zoYRj^KRNyEbj>-|ImtQSxx{&}bCdIG=XU4Q&X+{2$VKEWl8M4Z;i5>9+9c{GN)>5D zI#HgeKr~1+QZ!C9UNliOSu|BNT{Kg)MD&s9nCL6f1<^&(ccROpE268S>!SOjXD+l0 z>%zO(xH!AGxVX89T|8aVUHZB-yG(FFE|XlQxGZp4>(b`Z;j-RkqswNOcU`u*eCYC# z%Mq8OE}ys@clq4qq{|mB-?^B6aRsjKt_s(D*FLU;Tt~PzxsG%l?K;+VlIs-LX|6L| zXSvRC-QarK^^zOo=HMoF3vg4p#k(cCCA+1#^>E8_)4Aoj6}T0-Rk_u;)w&IIt9N_L z4Y{?sZFk${w#RLs+xu=GxP9u*xQpCf-QC?i+$Xv(cR%QU-TgQB$L_zo|7j8fF(c;0 zf;d1NDOQTr;skM$I91$BoG#83XNwEPC1QiPOk5{!7LO8-5swp(7f%!;@g(sAv040% zc!_wKc!hYCc#XJKd|Ldy_!sd_@h$Nk@jdYa@!#Tq#Lqo|2kpUn@E$=PJw1v(FID zSmCkSW35M<$5xNM9;S~yKJhs2al+%2$7zpS9*;aJPdiTsPbW{2r>m#CXP~FlGuTt+ z8Ri-88R?ne+1s
}dwC5Smvz|YA-t>Ip`Mc*Io=?3Ty_~&V zyxhFRUY=eOuQ0E0uSl
HCZCP2XF- zcYN>p@qW&J9)3Z7nSMonC4L6KGC!kVgWm|hCclw>qy5JEP4b)RH{0)RlixhQ1%9jj z*7~*ib@=V{+wHg4Z=c^Wzfb)>^E=^p-tT9>Ykt4@-Sh|kv_I?5``h@t_`Cai_ 8|GxoL01R*na0?Izcn0_d1O!L| zf&zjAq5_fwdIqEg^bW`l$O$m%0`dY%18M^r0!9Qh1&j?mIO&;k}yexBuWw^Nt5JB3MIu7gQQGil+;NYC1WKmk_i%%WSU7bLo!P;M>1D3 zPqJLHL9$u$u4KDpr)0O}u;hs3W63ee_mZ2E+mgGI2a-pUCsHV7rM%Qu>L7KJ`bq<& z5^1nBR4SLoOOvGCq&=jm(q7VhX{EGUS}PqW9V{Ix9WHH>PLfWMPLs}*&X&%V&X+Ef zE|MOQUXtDqat$)Y29*T01WgH=8Z Kz&y8Xg)M8XcMtnjV@JstMJGmWB2Stq83OMWHi8*M=SqJrjC0^q0_IL+^y% z5B)9lN$8)Ue~11XW)g+DhKa+x!hFO0!z5wBVX`oJSVUN6m_DpNY(m(au#T|(Vduhr zl~ZyXxvktmE|z=9z2!mjV7W{lBaf9U
F@Qyg*(g*UQV~MtOhvVEIt_aCwt_ zq %#NG3&I=2=Z9Yp|1E-!;38}y>?52aTq4{fJR^J} zA|s+B6cMV3goxyb?h&aGy(2Or`bLb6m=>`r;=_mskucIPGCWcl86TMxnG)GEGCNWm znHO0YX)1{{M9z o!jM7ADqspR;QGKJTqS~UiN9~N-9ra$c z5bYlAA1#Rvjt-3uk5)# ?EF}B?Bdv^v1?-2$9@p|Y3!G= z_hWxoh!v5FBt^2Ko1(iSM^UOUDk>EH6#W$g6!nTxim{6E3X@`zVya?>VwU27;(DB0 zT(3COh`8l(d*Y779g902cOveKxG&?b#@&f~8232tkGQ8wPHCrfREm^hrI*rI>934b z_Eh#)4pEL(PE=y$6y;3i9OXRa0_Ae$cI83khss0B!^+Q yo822~$brK(yrKvl0Aq8g?erNXKes*NVqCe>!uyQ=q9w^Vmk4^)p-zpI|Ao~fRz zp_) mb)9;U`YrV^^$2yddbE0+dV(6M zC#$EaXR7C@=cyN}-%&4BuTZa6x2ikT>(#r}d)52Y2jU0BH^q;PA00m~{;vcRpJ0<< zm*AMND4{i>Jz-tK#zZDjl<1o1p6HoakvKSUNaC=>5lInAiAl*xDM>w(XD2UBUY@)% zc}?=e !ibsN>~j}#__OA%7+Qp!^Xqzp XFl 8V_*YpQ#yN2+&P-?aL)x6+2D4Np6h_Cwm`v@2=XdaHV;_3qs}qjz@t;`H|P zchk40?@HgBzCZm)`myxm>7S>cN yCEb8qJU%mbN6Gr!Edn0Y<(Ugm?$-!dO({+{_f z3udude3osNeU^KcG%GSIDXUjjMpkx~HY+cyG|Onps>rI!s>!O&GG(pL+LLuD>w4Dx ztiQ7PZ0Bs(Y;m?%wr_Swc35^qc2st3c3gIDc60Wm?9JJ`vyWtdk^Nov)$HrpH?n`t zzMcIz`;Y9uvY%x?*8q*J#!cg|iO{Gt@tQ 0HMyDsO_8RLrcTqK8LyeD znXWO-)Xdhrty!#Drdg?3t!dS?Yu?rD)g02C)ST0NqxnwrgXSmAubMlW` 2sqLlB&}M0Kv^uR`Td5tWZPrfE zBJE`DH0@07LhU=+rP}4%RoXS$joMw>kF=j@PiRkRPixO;ztvvSUe;dGUeo@fy|4XK z$Lbt)BAuJgL+7mv(#dpkU4$-L7pqIs_0|>W%5{BpRk|8ooo<+JgsxdPN;g(#YSB&6 zEzqsjZP0DjZPo42?baRCeWd$XcT9I&_qpy`u3fHIZdz_mZdq>s+~K)nbI0eJawp|Z z&7GUOAa_yj;@oAqD{?z>cjX?+J(+th_d@Q)-0yNP nQxIA@ULSAxSN?wL3uPCoi-k`h@dChsF^Ty>($eWfoGjC4b+`I*O z=Dclr=ku=S+vU6EOY@`iyXB|m_s-AE*XHNt7v>k|_sg%zugxEr|5g5v`9J0VoPWI_ ztDvNys-UKzu3%8XTLr@k#ul^`OejDFlMAL5%qZw6I9zb9;IBg0!l=UJ!tRBsg}n<+ z8HHJe{R@W|jx8KtXeyjkIJIzY;rv2#;o`z&g)0iz7w#%NRrsjz-y*)qw#cE#smQx1 zv?#1dUKCN3Sk${Hvq)2 Tt)ihtGmF+0y >=+9zM%oOv* zHpOnm(Z$`0dlaV?rx#}yXBXENk0>5rY%DxO+Aqj+}l;^L*nD~eYaw-$F4uP@$N z{9*Bh;s+%jC9;y3lEjkkC8;I7OEO9dO8S%xDyc6STr#9&Y{~c%Q^}-~sU_1(7L_b6 zSz5B9 KQ&K2e{n@2juZ57#&8N9o6szQ|<#G`(qt zewMyfzfHegzeB%E|B?Q%{)qml{*3-x{U!Zn{m=UA`g{5Z`bYZT^-uMG8w7*M;AZeJ zco~8X3PYShX;2$_88Qsn2CX5_P++Ju)Eh<_rW z@^ePYXk&CX`WVBEF~&Hf+L&nUY3yapFlHNbjKxO1v5#?(vBB7A9BCY5G#Muury6G% zXBo}L#l}|SHsfC7e&YwmL&i^x$Bie9Ul_kMUNBxZ-l))3 eaUw#uEAyDRrr9;*Dh@_gmR%I_ {Rjd9tL=?ZT-}A%s5OU9Z&OQ5{bKd*)&tS=2@QD-sNO)}gNAJ&U z62k+tdqx|EQuWj@YB)858cB_!MpI*`kEjM}A~lKnn3_y|Ld~Y;P)n(0)N<-ms+rnB zeNOG9zMytdyQw|YUTPopHFbhINu8ojQ)j5N)H&)rb&2|p`jPsTx<~y+J)r)go={Jz zXVfd|HGqHvJP?2d=m6}1BX9+72H*< nc%I0epzbD$9}fS B006x{e-7*V7~Dk@RGG3O$vcMo*__&@<^-^b&e0y^J<2r$41v&@J>zdM&+^ z{({~`@1_sX2kEcq6ZA>?0)2(PN?)gM(6{NI=%493^e^;X`ZfKAp%}nGhGrOsWjKas z1jdT7WyFjF p9Awl6z?tzieVL)c;LaCS61hBdH=oxo0Hr?6Amnd~gq z$j)UKvWwVd>~gk=ZDv=qYuF9!Ms^FkmHnLE$?jqIvIp5i>=E`TdxAa5o@LLmm)Ohf zH|)3U9rhRYF8eF{gni0BWB=wDj^#K5$8!Q_!C7)voHOUbxpHotKNr9Sa&k_^b>yPC z7_Jl7nd`#Eaw(jeOXboy4VTVkaG6{$t~Xc26?6T$0bC6?kQ>E~=EiUzag(_z+*EEF zH=Uco&EytyOSq-nGHxxmj$6;| oci^SGjQ8fl_;6mqEBUT`9N&%a&d2jT_?~ -!Y+lRj z_zJ#~uj2di{rGCWKR=is!Z+|^c>|Al%#Y(I@gMWk_(l9;ehI&nU&b#_;G6hnzJ*`M zujhC1yZJr*UVb0HpFhAK VWp+G1U^g=J8To@<}5^9CP!VsZO7%DUf zV+DhNgsH+bVY)CwSRgDEmI^C`&B7L8tFTSjE_@;E5%voEghRp^;ev2cxGG!|ZU{Gp z?}Z {hfDskb3+C5YLI($V+mE(Sd? zNJsG)WMPnv)J5uq#Kel~`r5kqy2{cLk%)ZH?N>V@qjY$6-%_${w6KtXP~&HUt8s!b z(a?*)^GeG!rDc_5GYiU+vZ8uZeJTHSR1sB7l~8@CQmTw9rz)sQstQSvJMuuD$O}o4 z40$6T 5JmEH-{BA=h&_#3!sY^r-@7PPPt*9(X zW-A9(4;yOy%%V8Zo`4c6t4fE})F)Jy4eM*>U)=hC-^#k&!8O(Oy6VaiMwz8gh`y$D zRPC_(yt>NDHm=7~nDTF;3=~5CD4>ZNM~z2;NRHITDdHYE)D&vE2|SgWhJsLV6E%aH zi9(PbsSD$4>MQF8mDX40rI%I@Y9nW)7EpH0)Ld#FH6MkdFcjWQEhGXiMhYTQ0WpY| zby@BTs;QA`L`sz3hSx%Ep!`=;E2&k~YHAI&mRd)xM-eCzMIjaHh@w% bwk~WihB@F9wd%2@(vw33k74MA`~G~MZ*Ouic(P*sEfTbauce{>#J)AmDY`F zA}cYMsms(AV&$vUHR>DcTk1M>gGw>x+2(Z2K#3?DQ7HXFs~g;+BATe%)b}U}r6Sul z`F^7AQ2ve7&nUT(`URyBeg`;2cQfyIpZdK-WS^0nKCHg9tfun)#?91y)7EV?9#W4? zH2y$ojnreLAvE?lsKZ3mMe1+D*mLRy^^&^LtD?4i*ucs`_1YXwVSV+$%Axh80|%o_ zl!d4gQHAkQWP-8SQQFhI^&3DI?Gto)32(79wdJKIv6}#(V*VY}iV0}I7>9~N0c&g& zg&M~?RvSnR04wSSu%TY$XXJ*Jl@6`!MLz2)YY4^Rl|(~2lxap50kJkCmvGnwL{yA< z%^o-uztcf{U0vy@W?)ZsG=WW&oruc-XH 6j>0rx0m$OhiM2(aT9N zNPyRWx*w2IDZm@`BJMW@5wT6g{HTaV;E#I0vk#C1<^Sh@AOb{!D4+rzK{SX#MW`5! zK$FlI^f8)j3euqRTH`7wg)$cOpzKzHt{@I{1KmM9DnWfvDJnzdD?v|?0OCOsNJbT? z3YDY2s6TPUfjOU8fJ_rlS*X&u!r4Qt1^L9(K!^G@f&x@cOnt^VR9OVdDgTwA7?glM zpcIs$0jLHIM1xT6N>BkRK^5o=`k}#S2&zLv(Qtwl; cKEnkA@k~xp>LJ zXfTHIU$FwI+j%t@3k=kCfWbI40gWOaJra#KZnBNZok&GAgGu0HFd2 7_*^`V6HK) zgAB|w_UYiGGgDds7J^yGfDmfXle}6}Ns`&XS`ld5X&JHMEHsYTusz(~@W%Y}HUdDi zDFV<$lx5uL`kB`|hXl>7&NtC){Lf5^-h`$aN4rVwz&5bMr0MNwdL#H8%^*74Y!%)G z>;`*Hu{I3_H-dd=CQ`o*LU0g#MLY}~0*AquXcqbe&29!q2zSTO9Kzk^)&y6Y2Tq$d zIfIPvJ?uRAhIkmbKxDcEE`uxJD!7K`qIqaOT7VX!MQAa}aNs()0d9itz%6i_WVj`$ z8Er(X&}V29VeGWseEB`_kYqRT8@LaC2M^Fvv FQjNqixY}a)u>TS7>TWD+1-lPeSCfi{PDsp-ZcQH?$fU`VieiU$n)T zA$E(fcxyN)hhda|3k-t6Fa(C8?Pv%39PMm@;ZOk#xrKTcQyt6dazzpI$FdZFeB>GGz z&s>wZi*upYw3>$wH9{RaOjgfExGJEYYHEVLU~lv#I{xlBge9 yh6kc|9C%+Ibi{*$79VQ|6rw zaExi^k6;5jjn2K_8Nu-%(47D$qBH0$q5G}|@#&7Fl 4(Tu6G;qTsY61i!Q;1a1mTgS-~aL4Y&+0H!gKglinnjy^L;O zfh%Am0X4y9*h0Wd;A*f0uA!b9d5;XkO>_%gY3I&x9bEs`oo}G4?cI5^$(^^rt#BK< zhQ2}H{;NB;d1^a9Zd=;l>b%!Kbl!~GfAQWAIEKdvOu2eS><6z9S;tLgZv8{tHi; zoOKxy(Y7@^!gKJvG21hUZh{w#nVu2!C3xAm$ Fzhd0zsW4oF-@bFB>*xohHk0|z zWXxOeHu@3Wd2h@g;hhf*^9#I-enLN^o>@NK@#YU~_&faLKOTKd9{mON^yxlm#rr2? z2+L35KjavK&*0ziIeY QH^c%X5eqRY+!PoE&P0;{7z<|cU1_LDq5ya QV!S5xFm9Fl8j}LWMo#7;_M&B!T_Y_;PaA1(^o#^ZxXjJqPX`hu(E;f1Mp}-Z zBXzq&<*nb*p)@)1o1rZoPAkwF^a8zXrWK}N^s@C=tur4)S#1cN=q~TJibbzb&o)3e zy1Utf+bR=-qJfkq5iz7liB?55G_*aKKqtMUkc AHfJ|;CzLpHa49+2E7bLs1BV)Sd;1!7K7K}p zkCT!0$u`dS_RVi~LV6h0v;yV7Q`jgPnJhh;9z%abH_&5g0|vGjbihD_ffxfj4D46Y zm>x&^gLHZ#MFe-iz>&lj>B|&^54G`vPqX3^nk0x8dNw_WHqvu3aKgYD0~ZWjTj=@p z0>b ci?+R9B%?T8-3s%t7L>qs@ }^sB6^l!k?c#RXOmYJJ?)Zb~~#wd!}@ b?f=z{DL0&&{ zE>uXBZNMfo5AG%&+Sa}|uZ5Y`j3ogzeSW3?r2N;?_vqi~`}FVh1NtHT2mOeCj6oy@ zQ5dK&=!iiy1~C|P!k{w-UDgsOdqO{@pOMe!^b7KrBo_=~G3bgxoax_g7?9o&lagI+ z3=X_*u%Me)5Tmr3fU$1>r9-Qyn*nz10gmP`Z=Hs5Vcbm7YdZ892?jmirfbHNYHDV@ z7%3yeAOQoC3{u}^ZN`@gXidfTZ%= g^tcO`OX1@! GLuCX>lxvY8wvm&s$aj1B{mpYkx!VnF`S z$Dja%LJah4C|{ zXk`ttE$Q_!7=^(|3`SruwnP+9YHpb^RiX4a!JIbf^dxf%gV7j_X=2VWXE7ieZXlv8 zR7BBNn5)LK3UBrr^9>b4{*xM=l%9pxnH%Qwu#M4M3>ki`Vs10vGe0mtGCwgtV}MDc ziNSabCSWiTgGsBHUzoehugpE>H|9PDA7d~XgE<%&F(5gAsj0yZHP(hnwyjY*0Q;xR z-zMEY!(d7y^BjYzZ*}|1q}$ib8w{pl@X0&fvXEtos#uz3Fqn?Pj3$<2c?@P^(p8#t ztMjmB#UDOFSF`r5%A8G}m>uaK?ZUd6#cB pcWM=@B4!2%5C z6OFd>DBIwti@!{%y7*QvYycZX6wC%PCoxz=blk)SvmqEP#$XANXHb;NFM^HyK$UDq zmh={zM9yq98^d;DJF{KbSmT)}_Y5|T)v)9QU5)|CS>&W^!C(~zYcL@0v;l+9FxZR% ziM;I?e2&2v80^MiF9!QDIEVo`TE4=7@O>PE6NJ1mS`}Ezma`RXB?hN3Ajice3~pd> z8-t%PxR1eK82pXFKNwON@)%lSXp5m8hK?AzU?{=R6GMLtgD?!mQ29X&vi;4$_Nj5V z>NCf8G04`Mmm5n&4aU;AXyf*dDeohctv5rPjkeK~+aZlIFRv^SwKa=QPVd8=9cu=! zE)n%0eyt)&twTGS %*&ffMC!MD zaDE>q&UOiiU0{BCONmI|+TCvM >!PcA2@I7SfQsd`cz1xYt!wlMI#3g0zmUo+% z4-ky;?KV1KUOr^DWQ;MaTXH+3uguUdjURWz?UqRqW6I1&wz+jrXs`7%=JjJ_>l9 xYV6&qQ}gnkAmloGn`H9;8lSM=vp-Pj zEb;8qm`rWrF*r*CFex!O h2?G0q zeaZgAzQW)#23Ih+iovxO_6 Qv1a39Yy9kJHGj!bDg*8g_Cg7f2Atpya`ob48F(U2NTs^KfWb<;v<7^?=cYy zm5PjrVj?>>6po3Eh$QnOMOzQU1##hoC>P9yaG_in1|*f=!QdAR?zV6WPDuzyV(=>l z_e_L;YnAUK ~{ FH{)J{GS4C)&lbxI?FHAIFqF!c=9~Xs}6`ID*5mAv!LQzGA&h04<;)eb!#d>ZS zp-7Ha;tQ`$6iFv*GU4GxYj!0XH>lkd4cs`BV#bn}kBGw<0t_LBG=@wIH=di&>SmC| zWB^C7O>Sm-Z!sj*#W0JT`>$Kh SLoW=a7|Jm8ZsDGD zq;uiOx$A?;jFV{4?`^0gqz5QC-pYjdZ!yMO^EOmEPxKyuVW0`o^p0;yda%KfCq2r4 z#{w_m-OcO;V;J&IIO4gpcU>6JswS24otk(bo{U`n$JTN_h-@8#VHk$trmYpNR=4;3 z)os;}#>5OyMFbyBu=z+nidXR+F^s@462mAARV{oB--%#%!H}#+o3LZv#(-^RU{oTX zLP{t;iBHC`GlsEEyqZtNFb>144{8oRv-L=TT}niKTTjN%GX35kBz&G3+SRzpwJiRv z*YWv$5t(!G1$-f|=X>$JG3 mqLH7@&oK!y zgP+OI;y>YMW0;L$4u-iH=3%H^$s36v^Z5Dv0!&8JM3Mpw3o-1~D#>h%Pffe6z%bv) z=Z4#@ (bZ 8!#WJ>k-9fIdZNQf29NBdBrmK<(Iarg zKmsYkhZ1+Ft{fDqtO?au4Kc|YXaZXa)*oysbP!0d( >ozfFW8V$V|gS!B_AT{DlBAK7`mb zKE!YwhT}0L{yC9+?`b@yTVd!`J-A=(pvu~zox&nYM4c*z*H=^yuP(0)HLrIrjfhfJ zl*V+7j;`n!6|GXll$XWCR4OB)DpirCsu=P`5u@x>Ri-Vi8`v>QSDj^|R%rf+2~oba zs}Lh}CSD p8dFsvZJKU2shHW#vlY=K11EDS%vaCWnhCumKL&m0UtBSU1h@o>Sw?A}z< zN})(77D|LZ0`YJohKn&=j$spqtKRjbLWR)JM6pt+68d5|7sGiN&Tkf~h5iEZL=uYR z1Ycz8d;N`viad?W3n%ui7e@XY$|zy9K&-O_!=;$KOHliCCsP8`PqtLsI=E|74;Ci= z8~!BWV_`CepJGU&ypc#TRqxetra+R$f3Zhga;`AXr0!-(x+66j@+&w-`cop6xNXO08vD<&?58|Rtc+H z)j|HQAsWGOEr#n>3DsbsuwK|eUM&*6EI uk6Txr$ppUW}We5nlZe(epHU} zbkS_X4#Lpq!cNmw1k*K$*0Oox0sI_8@|uub^AL6kyUmPLHVM0^nBu(JiqcWi(t4>f zva>Qqbk7`H`^n^$vOy4;XWYVJs%ahDS@=pg!uAl3vC+cU!U^G|aLUwhLz3;bnL2E^ z0|$^!9PY$$7lwN<+(*p*zAF{Zo8540yRP(o_as~~L$|kc(*NC03fIj~fBrw3I^nh% z{>6t)tMIdVdH4TlLxp>0_}&j2KH;HxdH>sH%*A-Lj|2Uu@R#vsA7{fM_87TdcY|E4 zd%*rlF4jFGEzoNYa5U)};>jJkBCdoh<;uBAt}j m wpsX6cr3iJu(Oa^gj#gA$h63|$hFW~ z XPc4C^ zvt_VlhGn5;mE{1-ftIzF^_IgeM_P`yG)%VKY`Meou;nq!uPsknp0m7QdCBsM?vRcEUltNvC)t%h5Tv>I*ovDJL5g;tBLmRc>hT4B{> z)nc{HYKPTMt6f%mtoB(QusUS*rPVpB8&=P(t*isA6RoqY`&!pqH&`32vGsWCiPkf% zKQUO(v7T!^-+H0-HtTP#@7joLTy4B @Ed%JxhLRfo6^c^wKn)OHxzp}B)$O^1se9*V@G&Z1;drl^;wNK_&! z74;Vl77Y`P70nRM6)h935H*QfM0-TXMQ26lMHfYvMK?s>iEfL25d9?jUG#_OvFI-` z5R1fiVh6F4*hTCnb{Bh!L&f1@r8rWo5=V HdGix-F& z8N^G(%fz3G8^z7y1LEuAhjxy3VRq4Wo$X@n;_TFR*>=TtrFP|ZRd)UC`rA#in`O7u zZnfQ7yY+S(?KatMvD<66-|nE@VY{#Fj@li!yJ&aI?r(cL`%d;f?6d9l_T~2d?EBl- z*blNFWk11ww*4G?qy0Slb@m(VKeOL#ztw)bz2T1iL;I)pf7`#X|HuBdgO!7mgS&&L zgVe#>A v+)dwBtF)3yzl^uR4C?1e|Q0#7_23PEIaPZcYJC zVNMFC2!m6UQx~VMPTid1oq9UeI(_W)snZ^-dd|HaYEeI_Y%U>8#Uvr;ARPovu24 z<8;^Qp3{A&2Tp%DJ$Cxb>8aD-&aAW8ImEfUb8qL-&Xb&t&P$z_JFjqVa&B?n=)B2! zi}N<;9nL$QFE~GU;a$RAVq6kjvR$fN`nmLXsc{+PGT6m1$_2TMbD7{W$z`(3JeLJ7 zi(HntY;`%{a>(UNmm@CcTyDDDa{1onN0$dKFI`@_ym1AtMXm!}=ejn!HoLBLUG2Kr zb(`xB*PX6sUC+7RbiLzx*Y%$3eb)!B&s?9ozI1)%`o;~oS-Ls6dAUWqCAg)#Wx8d% z<+^FzirxCSmAO?I+^XFAxlM9wc01~J%k8e)uWrA&{q6SB?UjU*KnWvpk@!ghB|(x< zNw`EQNt9$rawS?xzNAo6B^e+YD5;gyONL8EN=8d2OO{AlBpW5WB?lyjBwtF7OHN2m zNzO>FNq&~xmE4p3E_o<< B9hOZQhEP99z!{vHt? zT8~nXa*s-nz8=*cV?B_^IFAV)lRPGS%=TF5vDjm&$8wJq9veM2d2I36=5f&Du*X*( zM?EfjT=ux?@r}XbCyz%Se|kLec;+ecwDWZEbn E+|)=M~@;;uYql@QUz?^osRTdu4cK zdF6QJdlh>1@+$JG@*3(j)(d%!^P1o_$!oHg(QBU9La!xWhUH$3Ud>)dz3xa^sjIY; zG)bB()k^cFh0 3dnXgPKi;{Jeb&_?F zb(Lkxddo^=rLqcHm8_p^s0_(ImQ9gOlg*ILmCctelr5Gml{L#+WLsq0WuMD-$@a+h z$xg^l8f2$rXJkLi9?PD{p2=RwUdi5gTYGo#7JEB*JA1o&`+Lj1gT2GNmEMuw-MxEy zCwixNr+RC=3%&b!5AYu3J;b}-dxZCB?*{Mb-m|=CdmFvyc`x){?7h@`x%U?Di{3AM zJbk+Ol=w{andvjjXSUBApHF=@_-yjo>a)Y=3!gnchW$P#ea`rt_qphE+2@+iw>~#~ zp81M>gME{HwZ6lANBB ?Gk)j%F8E#cyXyDGU+N$3 zALHNEzq@}=|0IKdfq$ugg@0fFYX7nR$bY>5ME}YD)BF$kANN1+f64!<|F`}({cri- z_kZaB$p6oP#DJUtZ9slNVL(|xZ9rW>eZcU5@d1+pCI?InSRb%G;AFsqfR}-`f#N`i zK<7ZWK#xFapiiKGpgb@(FfK4YFd;BGP#vfV%nZy9%nQ^78ioX-z`22I0(S fgG52DLH G$LqJ(3qfQL3@I!VCP`pU{!ETaF^h?;P~K# z;N;-c;Pl|);6B0S!BxT4!8O6P!F9pIf=2|;3|=4nMey0+hauh}Q6ZTjy+bNP`h^S# z85A-kWOPVF2nrb=GAU$o$l;LRLj6JuLMuc2hYk!K9BLRAIx=)jXhZ1K(CMKwLuZFx z3jIFx$Izcc?}l{_OAgBl%MH_o6^8W=s|@QGHXv+J*pRTHVavl#hy4@o7akF=3Xciz z5*`=cJv=YGD7-AZGQ3}S|L_svAB7vj$Ay0!J~ezs_^j|{;hV!Rh2IRn7ydB(arl$) z7vZlIlmaTO6jFmit_V?tE0l^J3XLLDk)zNm3KUBfD-~N6I~BVX`xJ*2M-;~uClu!u z*A%}i{#F8|Oc|(5Q5Gu)C~K4hm9@%`lv9+`m9vy{l=GAel}nUsl t0$Mbt+$N1Ted6Y*!n(}?F0|3tir1d)!B2G2;JNdHKAWN>6mWY@^ BC{fkBZoxJi(DSLK5}#9w#d&T_eAcGJQVq5 }LtMU9D?95o~AlPF`aK zRUOxKT-R}9bZB(v=-BAE==kVk(U+pHL|==(9upm7NQg;_Nr_2|`6Omp%%?GpF)f{n zI}PYGuv2ZPy3YGMpX_|P^V!Z9y7+ccc8Tnw>JrmsLYLWHj9un+S=i-CER1Dhxmb(X zsj&-U7sW1#T^@Ts_Id2f*jHVtu7zEzy7ueZzw5xRm%4u6^~bJ1cfA`|9XC8~WZdYu zhPaz?_u}ryJ&1c`=vLRw&<%GR-)&NNuDgAA$L`ME-MTO8zN-70?(4d5jDHyaPyFj1 zR1dmGd5^(8>Uz}o7}4`s&r3b8^t{&ddZIkBV`8_&_{5%xiHXUHS&6xcy2OISUWrAC zRf$6rQR0lm`H2e?7bh-FT%Nc(ab4oZ#7&7?6SpVsOFWu*I`P}Y9}^9C5`Rs+pZGBG z@5Gmhual@GI*Cn^CM73nlNypHB^i^JC9O-^mb4>jXVR{uJxO0B9ZNcqbSmj=()pxs zlkOz_nM@^HBwHohBzH&_C%YwkBukUMll_tdk`>8alarJ4l8ci2B$p>wC08fcB@as; znLIkVA=!|;IQdZW+2m&_lp)13#WBS@B{(H4MVS(n5}ndLrDsY~N=iyvN_tAalvydu zQjVmYNx6}7H|0snYc-{YYDUeeJE-l{j%sJMo7!FNr;bp^s@3Wob)H(ME>P>$1SR zwR(Vhkb1CslzO~+hI+BOS-n!dTD?}iUcFttQ@vZgSA9TzNNqTwzNo&T{#E^0{Y3q@ z`lb4HDxYeZYLnU_)h^W`H9S?9T9G aVGPrcr4YX;x`AX&utUX>MsAY0@ &*rVURs7}6%E%}ZOJ)|l3kwmNNH+P1XM({`opN!y=xFzxHKi)pvheogx= z?f0~YX^+xgq`lHm8mM74yhfyP)%a_|H4z$>CPvdmlb}h~q-r#pOii{%uc^=s(TvtK zXpm;SW|C%>W{zf_W`Sn0W~pYSW~=6a=D6mh=8WdN=90#6Q*&GMqvmJLUCq68Ha#T0 zb9!0&fb>!66Vhj=FHT>Uz9PLjeO3CV^sVVT(s!osPT!k;B>iIgt@QipPtu>IKTm&| z{wjmZu*k5^u+0!>*k`zB_+><7bjgUzh|fsKNY2R0$j#7Y6lC #*~aX z8S^q0W-Q5Ap0V1Hu`Xj{#-@y|8QU|?W<1SgGD9*|nLRTzGka&2W>#eO&8*3+&8*9; z&%~MIGbd(F&U~EtCJSWISzK1XtYKLwYkbzEtSMR3vu0&2&RUwaJgYIQC2Muo+N>j4 z-)B9^mSjg|XJq%vF3v8^uE?&+?w36wdv^BX>}A<2vYWG4Wg9kSZ^_=Cy)%1v_TKDc z*%z~a&vD4{$_dN~&I!v= LZH%^yHclI_)o3%c+1gyKPFtw$ zrESno)y~$=)h^I3);4New5zpiwd=KqwP&^GwCA-KwYRn3YYjhWf6_kEzR 2$hsU6rm{SEH-d4bd5NQ*{e;Yjo>% zpXs*fw(EB4cI)=(4(iV9F6pl5uIaApzSDiL`$>04cUSjV_bT5hKQzBbetv#!{^b0* z`RDSl ~8yxx$YPu8dEv-NrUe7#=ZTVJW~ zs~@Nzt;hNa`j7Qf^|SSJ^$YZi^-J|D^=tIo^au6F^e6PE_2=|g_21}k=x^!2*WcAY z(myXME-EeRUo^7FP&BE?ShS+3xoB0<+M*3bn~Js;9Vj|n^i|QZq7y}@ip~_BD|%Aw zR-8~gsCa~-*ibyVcv|t?;w8l^iZ>N+Dc)VYulPXmq2d$8w~Bu#{<-*W@o&WsiXRpK zRs5{@Me(cRHzn33wk4tx`;vl^%96e%)g?70Uz8jvIacy@$*De(eY*GQ(I=r#a-T(g zR`praXI-C-rIw}6rLLutQqR({rPE4hl+G%hQ~J1!DYGc+KzX&!93gD|poAyp&$hp1 G;{O9$;;XX& diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index fa02d6c..805aad2 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -10,13 +10,16 @@ import UIKit class ViewController: UIViewController, UIScrollViewDelegate { - @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var tableView: UITableView! { + didSet { + tableDirector = TableDirector(tableView: tableView) + } + } var tableDirector: TableDirector! override func viewDidLoad() { super.viewDidLoad() - tableDirector = TableDirector(tableView: tableView) tableDirector.scrollDelegate = self let rowBuilder = TableRowBuilder (items: [1, 2, 3, 4], id: "cell") @@ -33,7 +36,6 @@ class ViewController: UIViewController, UIScrollViewDelegate { print("end display: \(data.indexPath)") } - let configurableRowBuilder = TableConfigurableRowBuilder (items: ["5", "6", "7", "8"]) .action(.click) { data -> Void in @@ -50,18 +52,18 @@ class ViewController: UIViewController, UIScrollViewDelegate { } return nil } - .action(.configure) { (data) -> Void in + .action(.configure) { data -> Void in data.cell!.contentLabel.text = "Tablet is a super lightweight yet powerful generic library that handles a complexity of UITableView's datasource and delegate methods in a Swift environment. Tablet's goal is to provide an easiest way to create complex table views. With Tablet you don't have to write a messy code of switch or if statements when you deal with bunch of different cells in different sections." } let myRowBuilder = TableRowBuilder (item: 0, id: "cellll") - let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [rowBuilder, configurableRowBuilder, myRowBuilder]) + let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rows: [rowBuilder, configurableRowBuilder, myRowBuilder]) tableDirector += sectionBuilder - sectionBuilder.appendRowBuilder(TableRowBuilder (item: 0)) + sectionBuilder.appendRow(TableRowBuilder (item: 0)) } func scrollViewWillBeginDragging(scrollView: UIScrollView) {