From 603c0f15d242990e2f4e1b3ab571551636a20c6f Mon Sep 17 00:00:00 2001 From: Miguel Ruivo Date: Tue, 11 Sep 2018 15:59:35 +0100 Subject: [PATCH] adds support for gallery and camera path picks --- .vscode/settings.json | 3 + CHANGELOG.md | 23 ++++- LICENSE | 22 ++++- README.md | 79 +++++++++++++++++- .../org.eclipse.buildship.core.prefs | 2 +- example/demo.png | Bin 0 -> 77990 bytes example/ios/Podfile.lock | 28 +++++++ example/ios/Runner.xcodeproj/project.pbxproj | 59 ++++++++++++- .../contents.xcworkspacedata | 3 + example/ios/Runner/Info.plist | 7 ++ example/lib/main.dart | 31 ++++++- example/test/widget_test.dart | 25 ------ lib/file_picker.dart | 28 ++++++- pubspec.yaml | 12 +-- 14 files changed, 282 insertions(+), 40 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 example/demo.png create mode 100644 example/ios/Podfile.lock delete mode 100644 example/test/widget_test.dart diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0e14d8e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "disabled" +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 41cc7d8..9072f13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ -## 0.0.1 +## 0.1.4 +* Changed Meta minimum version due to versioning conflict with flutter_localization. -* TODO: Describe initial release. +## 0.1.3 + +* Updated readme. + +## 0.1.2 + +* Changed license from Apache 2.0 to MIT. +* Adds demo screenshot. + +## 0.1.1 + +* Adds license information (Apache 2.0). +* Adds CHANGELOG details. + +## 0.1.0 + +* Initial realise. +* Supports picking paths from files on local storage, cloud. +* Supports picking paths from both gallery & camera due to [image_picker](https://pub.dartlang.org/packages/image_picker) dependency. diff --git a/LICENSE b/LICENSE index ba75c69..e8b4b28 100644 --- a/LICENSE +++ b/LICENSE @@ -1 +1,21 @@ -TODO: Add your license here. +MIT License + +Copyright (c) 2018 Miguel Ruivo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 95161b6..14c9cbf 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,85 @@ # file_picker -A new flutter plugin project. +File picker plugin alows you to use a native file explorer to load absolute file path from different types of files. + +## Installation + +First, add *file_picker* as a dependency in [your pubspec.yaml file](https://flutter.io/platform-plugins/). + +``` +file_picker: ^0.1.3 +``` +## Android +Add `` to your app `AndroidManifest.xml` file. + +## iOS +Since we are using *image_picker* as a dependency from this plugin to load paths from gallery and camera, we need the following keys to your _Info.plist_ file, located in `/ios/Runner/Info.plist`: + +* `NSPhotoLibraryUsageDescription` - describe why your app needs permission for the photo library. This is called _Privacy - Photo Library Usage Description_ in the visual editor. +* `NSCameraUsageDescription` - describe why your app needs access to the camera. This is called _Privacy - Camera Usage Description_ in the visual editor. +* `NSMicrophoneUsageDescription` - describe why your app needs access to the microphone, if you intend to record videos. This is called _Privacy - Microphone Usage Description_ in the visual editor. + +## To-do +[X] Load paths from local files & cloud (GDrive, Dropbox, iCloud)
+[X] Load PDF file path
+[X] Load path from gallery
+[X] Load path from camera shot
+[ ] Load a custom format
+ +## Demo App + +![Demo](https://github.com/miguelpruivo/plugins_flutter_file_picker/blob/master/example/demo.png) + +## Example +``` +import 'package:file_picker/file_picker.dart'; + +class MyHomePage extends StatefulWidget { + @override + _MyHomePageState createState() => new _MyHomePageState(); +} + +class _MyHomePageState extends State { + String _filePath; + + void getFilePath() async { + try { + String filePath = await FilePicker.getFilePath(type: FileType.PDF); + if (filePath == '') { + return; + } + print("File path: " + filePath); + setState((){this._filePath = filePath;}); + } on PlatformException catch (e) { + print("Error while picking the file: " + e.toString()); + } + } + + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text('File Picker Example'), + ), + body: new Center( + child: _filePath == null + ? new Text('No file selected.') + : new Text('Path' + _filePath), + ), + floatingActionButton: new FloatingActionButton( + onPressed: getFilePath, + tooltip: 'Select file', + child: new Icon(Icons.sd_storage), + ), + ); + } +} + +``` ## Getting Started For help getting started with Flutter, view our online [documentation](https://flutter.io/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). \ No newline at end of file +For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index 6aa97a9..e889521 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,2 @@ -connection.project.dir=../example/android +connection.project.dir= eclipse.preferences.version=1 diff --git a/example/demo.png b/example/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bf21ca2445a8b375c646187bd9dd559db6d26e GIT binary patch literal 77990 zcmeFZbyQW|_V9mDlu$wx0Rg3(L&qVdyFoe*aDYR1NQ#tncXxwyrxNE70@5WdQUcQT zJ3i07_jxY&ejVR2e((FwJ3M13d#<_WTzh}kT652}>z$&!1P1yubN~Q=AtfoQ3;^71 z005ApQ12j0I!uFR5r5EZB{dxYfCrC%{zC#Jr{V(u=n7B~5k*Ba8%G-lGaFkHDG?D8 zTYDQ5s3imdaGgn0F;!LBe9C{a@IzQ8$R}3DMj02CL|Hh*=SdV59Vr^NbP#FQG_F$T zBQY^#!oJL)yW!zJp}0y64};OCP*zE^!{6ov1;Z|u+;c1@T29snuWKg-HcAiEs)tcJ zP#?xivMF)+JS-A^{^-lw-VZ%XtH76U&?#&I*r?UUqz+f)NPtr>K0bP~4wNLtJ zkr7}(?Y%w*@JTyOaz_Ga$CBbAWkvx=9z%je0cN~_(&1OZVgLlSr6zK!hTQ%Kz#^cRtoZ`1t7Zv4Eo5)T>*YcfG6Sy>U{h3<=7i^2vSK^e2o+! zu{YYNjCLsM>cHnTLsEG3PdLGMz{xLxU2aJPtZ&${z8nq!0GUy^h@(Bcavj1f9~$Be zufx=5{MLT|hRo1#<$7(n#P%fsu;l19a?QY0{mh5=zK_*)Hsvm|ncjm;r;`wqDy)~a zfXvMq^+VgAY{ar68>gq&R#&H_KL~4sVd|dOrd|3S>Q|O$UVN7)M_<~ODc-Q^zL7va z{n9n?LpG0SI2z5*aBe+9;|*#{}ZMh&_rD@r(a;iAc*hpc&I?}VdiKT?j~ z7%wj}T-+5{Vk&3nh0Q5vDfU2-+!Cq7VKs56WU8NA=k4}7sj{8KN_vShuTpDot2~&LN62=xr zH})a2H=r%`6{ZOotR$v0VEX)$n7u>EEFi`f6WFEJfXQ!*bq+>N@1$vYgN7{Bhx!;y zIunFs7_31aj*6G$e@faZiHs9MLDC=eM2So$ibIk`IarlMO_KP4-~J9LP)EEeinkBI z>U$Z`BEb^-rb>zb^TS$^#zL-Ve&X2=J{dc*Bu6~WO!;JA^Nc@~Gi&2hi5b>Rgn&pd zbH`VF6t)kR%)p**;rHAOXfa0c_hh9HOM0GFzAC-j{O-tT_`M4<&Kt1~G)`m}VG{6j zAxRBc4f!d_LJ}eh_D3^lTxfUwl)9+NVhUwysG1&~eZV(lWeL=fWFViwiFnL}?H(lZ zfr|p?od_#+W8@vF_qnR0IHTgD*2?6Y3`HsIlF!Iv`e%$Ss!%|&3?%e@{;O%L-K%V? zgsY?n+URM9FYR(qRhDU#Vdl~VYuIb-Yxg0EtU_uz$;$JES*njXBD93dvg(v8lmZJM zvpXe&2H!rFlF2K}jvISshG%vHt@!HL^k_crxqQMW^-=hy#MgwccYnA%#0bEB+Z$v` zLy&@xf^SOTf?ts+n@=znLeQ(q%*C>mxRHdFWTU1*S4Zc88wEp;la8Z`Bcx+eEh^40 zUMPN`cBlqdjVRJn@hlftV^divLi-$FqE?)yxTQj!o@1?!IQX zY`20)u2SZE{gsv;k_Scv)vgSr78oS~PH#9qP`w|V_Hd?aPP`&+4&g5@$^wb7NwcX} zD<8(12%@Yc+MT94%A;-26eJva1us0=qg|#Y%x9NvWP#{d6vrpTYm`WqD3wTTwQ`p4 z6r|<1iZyFqyulRem8RCAmN1PNx|g=0GOaRSfL`!aj-ThK99V3TN0`+t>e6mqu$!3P zrstC`Yg4e`*1B;{;2rYzPQXt`=J)D_k>K%}ZxwemH0>sqY+wLqGA8fsd))#7Do zWt0=mWz7YT3L52O-y`8>Io{>rtZ&{*ICthf=vzaOzS_Eckjlu#&|Y) zhF$TaU<6KMmJn+ZdpXqDKjC@BvyeQLx-01U@kjh7lc~lq_V5(jO5I~P?FVR@O3Ijo zDV}Mg!`s84kase^aA1M}Fom#ZzOQvv+VRLvcj@)$QCdoMO4m-|Y{f3;E_63=E@OZ_ zgEn20&EZpbpU4-bwGqJw8F9=Oi=|!)A_{LzYd6T5jF_U-%O)%9^IVEgz}@7@T#(Y|wW`r3oE zJzS7y7IIuQy(1Kw*(ii76yaOuyVhAoYSykNTr^&EA;pwM0aU>#%|Rzn3^eDP;c8-U66^t* zXby~Pq-jW5$`FBobmg4ZmTildJBNYGY0D2*-0>2b`gCpGvWB{T_!m4a0^%_6#J`jc zlIM>7E`&{2_%xLA;IRv3IJ#RGahE9>(+KBC(3FS{-E;W^NjkaL(c4ii9BvdJ+430H z8vUq?B3ooJWam?O(w`WjHX1Z?T3@?TFS6zR!4yk8) z9*5FzQ5{)&Pm>Y7PB{Oosus;89ZHocMBSu)@Er^kUy@EgxHC`v;XH3wDk*}2W4ui)OJ4|sLIl&>MUj?QXap=3urq1>yL>b0E38@*1L zZ)Yu%#nuBg^fiCat+~k^T?Gv$&Ba>qc|aPW0Pefs@+Y%+3Ao-4&_N2Mk znxc{qjmEj{|F7}GN~7>loJc8-q4W|)`>LcwDUEz zKnnVY26+Wlb5(z+o~v^1j?UMDCr_c6#rQ-n~L0$E=%d{5(!P%CD*%F+sm2f!X__?K*AGg%N`j zLoF<|XPMkq)NOV11a0x;IR?*+bEtdi63W;MXJS)gCUfEBgJkg(mE;R;L+vJo0fCW; zZws$4C1zh>rLyyBx=A0Z_CsejeaB)<4~9e2;?g|5fM;_Cv)Og-8%9Hm=2$j+P1uf0 zqhdE98@w&NLplcyjt5nuz$g zNtn(xH2QNw15=XKU4iaM8tvvFszIAL7RLu5t^*nFucV%PI`|;{x zr_*K5g?KM#5ldm!gT$NW#_a6cA~iHDa)Y>bF}lZP9ss^O?1C(C1G zV+8~o+ZaNCu2!~)L=*tv6Lhr&8(BacNem&TP-}j&z2jaWG8(b4ag%U?fGiv!ZdP^%5>{pwP9|m$6AL>dGYbzhh=-Yl zTkjlC%o3kU>aVrFGxWo1Ov zV03V^b_BaJT04;c>Exe&L?I4F_E1|#sEswrPrqP88z)D8GP0iy{pu~)URu@v}ol>N1SLM)#U zql$}!Mh+ z^`BGU*v1Iq{$B%xhtrsYg$2yY$!NmC#mdOS!ez(^V&`OGG=gw|IM^X3TvU`7ZRi;*EGi=h## zq0v8^_%Ck$qbW(K17bY6{cW5fM%y2;M+IW{@1_4#SVI4ZA+}(92guK<$xrsrx%sc4 z^RJll)8>yU&I3038GQtdehy%WF(1>vmHxF`|FZmt8T3E9^M8lnPyc^2|DW4%F@sqD zYWV-@>W^Cgvl9m!6Gs=YJw(V9F+%=#bMsHX|897@0Y0Xm@!Aslf1xWJz|Q~wI^usf zul^tDh`&a%kr~+96k;sE^v^;3&w~G5-~HL6|316^Ib;8GHu4!8@tD}yTY((~pjKd0 z2$QX~DIe2cg@3il_g5Sev9YwVm$Na32(a-n{kP)(YK6G|rugUOHvtD_31Jc`F%eD{ z5GN-iE0E>yZvIy9Z+?EB>UaTk~HnHUF|?XZ~k%e^~xa^AF2E2h`tEygy>apQVTd5|O(y z{VRF>k1+DDc>8~HlTn-i@$OGn$IomZ(O&4 z{962t>(_j4X@BFo1?1P_Z(P6Tb4&Xh*DWBw7JuXVHJ@AB-?(l8`L*~P*RT29(*DME z3&^j<-?)Cw=a%+2u3JEUE&j&!Yd*KMzj56H@@w%ou3z)HrTvZT7LZ?yzj6JV&n@k5 zT(^MyTKtXc*L-eif8)9ZF6+$gjoUxPHy&mi9NUTR?s-{>JrdKDV^Laoqy)Yw>`T0|4I)5bu~K0swe6(fS|70f4PADN!L+*O~1!mqenEBY`E& z)YfgOdyX(rHUq^=GD%^wq=!@~230Jb8AvOsl}JXuQmjD~(Wqo-PZaOOI>gH-9ImHL z%`d)i;K6*v@V4X5xu>h^EB9))YBrA6_VVI#;Z|!mE=c32d&nI~4+Cd_F=!LGzDV4t z*KDBuI3uMg@!9{X0RBD~fT6t^hnpj~>!ym@5K0+|>j&w;5yt=2neP5F z&iQhG>g{yZN!g*G#jpA0~hv$STpUzC0vAMHv}>O|~Lj8q>rQeff|)nh8`J}ha``07$ePp`fD z&6+HDdbf$ieOnqF^Z*en47q%;t!y;X;@75eqNRw}&(j8JtIFa-lOAIh2Fo%-WfMb% zltc?cU1s#;CCB4LjBJQ6LX+o1d>_9?NqIa`%)iq_w|4)D`qZJfFjXPrN<-+zJ+&ba z3JE^tLlp8{SfWED;;TD7S(MOw98wc`#xqKgQfXr4sp>+F(Ou0aU!z`B>eiL>=uO7c z!X{XJhZm6iI-K!4CA(0O>icj)ep<)vnt^Rg$~u@eM(qUV)@pp8H{2DCU- z6R$*G6S%>*t-=u4^N>1Inzb|3VK{dz-a;jPErvxn^l&0~N25Gn280xM_oPh=mOGNW zCbxFboh)ms`}zAia;Fc@J}nTk;KFV>6JK>GQcMOO$^x33q4z(a1Fqo+p>>B*m$fkH z#(h_>{#F-CS*r9st-}`c)dlBAf3*i~cXJsMR%N*t^GgraVYV9DqfOA)dyDBa-X0OD zW8pOYSS5QlR!e{;VZRrSz9`3Q&Dc*xHq_J4SScDM+G&F{No`t_kjiBCi?l@L0 zdF^8QU8_u$M@fkxt9T;GM;QCJ#_k?Wep5xS_I)GPSoOWBg}or~ifKBt>zoI=eCrH0Dfv}nI9uXWYHMaAuPnE)BF!ni$ z1Jm{XLVEeJB~K|MRNq~ASU+QQuTY>-1qCm5?evwJ*yH>ybxQECzTs%T2=PyzZ|$d4 zaSu0Hdm`&LGe?;rd?wrhgDqc0R8-El_i@ST$l>+%7(lH0JWE((K^8{J`e__IyqFKH zC!wBDx(BWWfty27RG~eU*->#(S!+>kltS%v zJEaOdsaShYl_+rrr=TJ7#HzN&i*r^OMY)?(z{3)pl`pKjF(W=z+tpMUeQ@-iXecaE z1k@R1zmQrZQ*{K>(eJV)c*zb?_!{G|zq+m*UdtLL+cxyo^As3-Cp8S0y(KcgbwVj>a@KVlR#yJV#W|o@C6xMO_%W z6-PM89U#}9tk&MrcwT+T6RJ34H_H|eZ=@p*UDW@Cv_eGe_;oL&P85(Y^B6Hn=)j`P z*HyZmq`@%&TTDzNz{^idu5hQMR8Yfgr{&rA?Bb#KO^36j$h2c&CPWGLYUc+bbf?Cv zKTN)y3WnW5J+?V>>v{XAidH7kx+fcud08Oj|03Ir6EFqLLBVUiJVq-VMKTGRnPsid z_kOagoPeW%9{-xg0dWU5+h_9ieh4v3~bs zk*htbpkqM_yYX9u%1;lx<^>^Jsl6BlHcGa#5te?~d8w@B(%gc%;+OV{G1eK=T)FVE z`?vzHM=E(uj*p6z8LTp#MbS_aL8XP<*%4o#ZYI5u)GlAD3{ptvsi_g|r#LPp&g>OG zqUF@>0kQX%z2~pm<8|p<9D2@I$UcYobPQGzm%^5qu2)xPmrTUBg=EKMoEnbq2nMtP z?i-0cEP-i#jo5pbeK0h+5ZT1=-w}*SgeL^cZ#Qb@jbr zG7+V&yRZ@DoYVXJXsTq^hrnoIkmL<9P1F)*HuLZaNzIezU(j#3pUz+;YQWyW5c@)TP{BPN z+t+NSAEQv^{_2HlzccNI4>o$S@(1c()*+A)OkB+*&SdkZ$!tn+h?w=gg0;4lq0aDj z`q>-bNayoD!*(*c7s~j9+^KIjN0;InV_rk*_hw<{lX9CWX}F)|0;hrXM9v!nZ3;KW zs~;s^XSz=Cdn*j~e>6Q5yKyC}ichE*RAxg-Yfd3mf zm74t*5E5mkR5~vKsTq{(91msjZ2B~sp_S4+m+?IC1;*)4(bZ$A*?VR-@) z;vV*MwwV3%q^O|SosfL=JLeJi)gRIiSxY}->3(E*W)R5?*8pPVo1>{D(_(Y|)9sz`lp^krK(~o|=q1>~i;%+UK zVntBG0?oBlr<#Jaa99yw#<8peSh^7kPKfR}vv8zc;gWKOEPwW5?@F(7R_o3*GY!@eNa20Ytp}60*t!sG+ig?^G%)@KDPo?1yLJ zBVmUc28^ZGaU>aA&K%9W=2V$Xf3GW$?|#g3b$~8x?wJyG_G1ol?%|1@1|C|s`6GEV$SQo~YBo~54;b}ajRK-~Zm?*~*(pbUOFosn7>TK9Y2cEnfsG=LT| z)4(-k@=zs)74{kvt>~wV6-Si541pXqgcwTIS@X=qPvP7cN;xdnoHc}uQq62hPsl|H zY@{_XA;{#uN)BD-@*3%nmAm>JHAI@1h_^a~a<&9#R3`j{?jcST>5exNyc1l)qJ*>L zTe~jKVWpw6ggVSNo+?5bxZ-D;S~wF)IWiZ|bsHOjk4CF)xZ5Vrzq!i5@?%jrXbYoU z)F*DPqL(Pu!_GG@+yO5W-Y+rRCMl58#;CwrXQN+?rfVvVB{DOmOj$`U@&%8C&~KSm z6!v4#eN|~QPG_B8xc6qi)m{gN5lD(WEd)`~HJme+DFxO_T({wJZ1#OLR3x`y!nYkW7Qdxj-VXpY3ayo4gb~17EtMg4$`t0gR3CfQ#W^2o)~8~qXR6V4b0|-@kpk~@)O7mGIM zmB5n)MZ$LPYimi~OsTk!LSy-8G9hx*SC8TyK4j2WbHLqRWR zoI~EWjon|rr$$@a9}mBe3mNYXgIpvtO0Oxn3q3;UABZ#oqmo_kBb`2hnrGl7k@R#r zYZ}3(rm!)fu!i84{MeD`I{b~5<~7qzSn#*_<4{KMlTl+BH-wL5C3voHs%_pP`(15w z@mTx{t2lOcDz$8Zy0v6Xf14RPKsGRZFJ7>L`9R5Ot0};&uG|(dmL;H>{E1O8Qxdqc z^=t=1yQygJ>r#RKltWJSg zFS@ma5z4K4KGV%1Y%o>B2-W4PJvm!};jaNVY)UOIFPfWYRGgg?bc8yQCI|CcNWp3B zEoLw6zMj}vP8z2Ysxk&bP*!0&i$m+|8+^%j52}95#5>9>wnDV_Oa)5OHqKFft&WOP zGldCUXzPhyuP0W$Yjq%o0UG@5jOJ3StI9#(O?1$g%=qpnXbHxfM@nz)B=L8ro=+o! zY`)0YQ!BaYly5j?XeBmw%(-wi#?52D`Fd_w+4h!%$=|uf?Z-hdZd8m!Jj3inlbN=~2PSf#8nG+7 zq`7u>rb04gxO3fF;Aa?LyGRmvtf!$iPXMihML5<0lQ~;Ew{E_YHYZkLJH~>?QO0w$ zB05y=ijH8s)mFlY723pl_F3h!$U70bu{{ED*J9=6L&%kyQgAdh<+#pIpN#WLBLN8sg8g~bsdit@Jx85*?5e^PK)OmE``>jgX%7$THf*^tUeouGPTznM?(-+0` zIx{bgZa)Ba;K61$O#kAj-$n4cca2=ZCd~By5kvF(b^BcP_b?^XNzETw3H62OJ*W=@hwzggTk63x8?g$dECnW2vHAuC{X zG0#{=I$H`V*AZ;n8>T*bp_STNzzAw!E}_VkaD>gaNTzd~}{W57G$9-rE4$F`33AKVC$-q`~ z%MAM7AIEc3NACt$_|dOfty~r3l#fZ@#bnkwui&wr>v0w>$AeO+Zru9CBFfGNi>_`w zH-kduumtwb0`Eik3Z)FjVmI~p-Y*ZuTpTf?Q_10x7Fuxy#7h8^6}>j3JQ0hcqS-l* z(V*psJ??La{DUBbvyKpvbzw4KxPgJN27Su7MgcYP*nPhx)**U(PyU0eB!xgd7U6(y z*+AlH-g;B74qF=AA#QaD(FA17B<6f|fwQ$9I>syi?cy^;LdVS!Vl+n=Y}Si0P>`zc zrJAQt*^AkiK)KDDUSkGH_dfq*2pXHKf}DL|EmDVCcV(xFsLZt(c$}5WNX)Uex@aV5 zCyzb8Se@r-bukh-D2Qp!;LoplPdoo99vYEMjmg*qd2IuSfRMyu-qA$`0jWoapybl! zymb-|b3a}+vWthMyIrr{a6v7Hx7Rsy7_AmvJ%$5;_{nuTA^UalKYozr zTrJ(@J0(cr0p5M+P)?xof@An%k`A@#k#7Ig!^j{Xk2fR^W+xurUXt@;(eg>VnWK^A z*a@sXu2a;emg=1}@Cxo&xo#jr&iA-Z*^s zuc^IQE|{@+`qcHW5t8+C9V@!jPy|>2j6%2KUp9-m_QhHs)XBw@S8CW*K|Ayd4fr zsU7sG$spXo4I-lR?_%BX>Z6!lU8Gbz@tV*bxmf*aM3PoScJ;qnEq+ z`N_wjDUTH+UL;mXaf2IB8gz+!jOEfl(QlkZZ0YofG$Cs?;c4FYp90== z6Y?UmaRqf-k%3G2T29Z&Kv=$|-=|%Et6o__N+L`_-i!X&OG^3z(6i&y z;FfoB_qbZ#n_myTe)#phBT*!1IL*my+w9EZ2M$Uw~` zr|4DikGX(itYgkV)g-&;6RR~VoD`ut8L!VX(KE>0q({J(8tu;u-+x^Q=QCu}zu2|# zbaOb;7o4ifB7MEtmyS;At=;4#rN#!)p+W_4qo{SoO~1h%XS_P-iiaDA)^qk=toir8 zT2<>E#eL)raW)VUktJP?{2+x`CN?0sAugeM9Cw#2=`0cExV84ynBpy*%i3&!KmgxN#c!o)pt;%J6O8 z5Ds~iQQA)dZd%YNg>kQZLc!ZDgK{A*`5|J-T;}<9VC|lzB@Ba3SC!S+GC^6ONWuDq zPk+?0<&nU044#$M)z#K)x)(&o>a#{$3BS<@;>53~r&54DfdAkEqDy6Q{1Ncwa(~Up z-FQ+0!w=iZOiXDvaFU|JJow>9Q|>}mk}H$}jATID(0>$B_KG&yKH)tk+9uDVhd z>#IZk5jnIvLXvSQ}lA$4w zOFZ4fxX9hOwi!K0vr@l4G@6Or7R6fQY#%thC*o`&tE#6w+=Gm_KDgU1 z=;PT~7F-~lqPPxv?ePpOW_Wrdy)HMw@cH;%K!u(+I!GX1Ne#hYo*50Mrb9$%7D zyqm4Zv%SbAK5x&tT(Cu)z^QUV&HIj;J1n%9;Vzt4JEfhJk9NYGF#N$sic-M_FWtZp z{*B5n5xv%>?}l3(NNaLs&ezjeTg)a#&AEf}umlZa@>kr~$`|l1CYOt?8`~Dsd0r;G z1FIx`iO(e-T}$`xq>kTCu^SGa)n8avyxvkdZ*^NajiHL2tRb96(u^0NeYvDaW%MJa ze;zT+Ku)6jg2OM&c?X;c?sTAzOUS8_Nu0pPpG4PTvP1nc8|NEN`+}nxcGAMa&cH`1 z`JD|^Mq|#y_-fHB>i3_Z2+qw5l&d={CU8TlmaBEa(Y&+ad_-v2s zdsU1)zF!Hv$Bw3RKNfParZit&H{P=)Sgu>mG*QjW-K0>yQ}rRB2Ty%G&`C4;ok$~* zVwH!z$Q<8cU+_fiJpV8js=t$)u9M~d@kAhysIH9kY#^|fQgbFtI;fA^QA5hvy+=zM zj}hYnk>79wZZ1a42%qH`!R*!0LOzEuk;$mP&~7XNL3Ba+^-G^h^sX8hjoj80wN&yI zsGupkP#H|7q3f~F;4s?5jl)+q*1?cXY3-g-ifrtGRtvbB*Gp}cNdXs!Fu1GHsH=-< zYj*>kr+KUUsC~63tglMvU1n&jpnMldoJKIy?u+0v4S9manI{p?j-!j8!nlQLvP)h} z*14&4uE$PC*Il>1j;K$Z&ED>_7BbqB9&#%#0y4dtE#qFa)$zsNs5G`2YcrE3O}zV+ zH7k@-wm{pN1k4RI3Kh|wiAL=~#Q?&ZRuVg1PT^MfWG~;pR4LrVxr}MM4429w#zR7u5<1kS;S{K`D z=fDO#;&(Xu`i63e_xiozQr$$+TXeo1;3)%A*tV6N;Dyp)LplhLSabiwsAs#oor91h zC4OV**^@5NYX^}Sswfaw=$7V}jN=nr1z^d9>O0a8_@);s10WP#s&IJvMP(hWH4d6! zRfBow`nqrBM3FqUZ>SvYTeMdD*Le4F^0#mw-2o)*2Pt5Fv#$V)A@airrXpp?$G%w;52Uc&~}4fn>fV~Ieh6ksNsSnPhet!$8qYr6z)Msbf!@Q zs?ZcQB3^kd1c;Brx1*TvE~HjwQhZLWluZe^3NFWf8Oc8XCNE1HoF5MeT;#S5>v0+m!I~&%XY4P7E8)YGf~9Ru zbxWO-b;R>rc;pS|MMrksM$YOU+wu3(J^o2-SSh)mLb{bHCqZ}F)2cuFgyG$a|1cs`9yAd}nU zCPE_BWBJR2h;N4nuy17kH$TF+&h=k!)Vk=kn{Ebc)?b%je9cm@)KI|pwm3etSK6Pb zaT@KoT%m__=Y4Fvrd}`0;3-5UH!BP|Vn97r6`m&506iOBYsKilSX^X#?;`IO?)77; zig1YVU}2bgU~%qX`5?I^l1la@r0+qI0aouYavA-KEr#XDbd&c$= zNe`)2<5=L6@SUhKsVTxAS9ECR#7=X74(CSwgkd7JgPA6A^XhO_N!Wpid7VBIj3E$% z;Q<$QDdLP2w|06Uf-cmTMTCz@y zny_c-pgZx5%Z9tWfNDkNg_he*wC4t2O%+LLI&)npwkrO_Q%kF}k)UP9qyF{Waek)E z=h><+d`TgVp@*4tR|komm_{zG^>6HG9)6>pwJQpW@pykR=+qmJxJwT;GAd<(%6`*R z#Qr23sN8cmc{`3gmRWk%S}guXK_w88Bs$kpGA5kkq5&*npRPZ>xYLKYpregLU#$IV zvNj3G+ra|nVV|rBr-M_XLM&gu+`eJJY<@vx79A%2d0ya?&oTTcBePL z!{brf zo6&fv(P&%6MonBF%UUm%!5I%94HjS{P8!$;^c7_m4PT?i0B;Kg!*PyN)0MjoaJG#V(VSx|wwx6GHj zVdU;wqvbdftYgAGfO0~N}*#O3YYJMbE4T$F(5E+R(7?LKN$z~S%Xe##6 z@?gWuxbFy;G5Ol~6D?mt)~dXjO01=31mcX())09_eZfv85Q{$IE322G+}q^63hVIp zw!uixE6(yl__2&kT|KmTm0u7ws}d-9V`t?#@NoT%Yn<}APQwWzslL!+y>YccTsNrp zkcQUXls9SvlQrDFefHY3vUatx_$*JoX8Lrn;d{$TadENr1++LT>!gTnAl}Rwd<|{C zIve$FZ#a94X?ENDfnvCV~x zJ-o$YiOKZ%>QM8p6>Kl1{i5^4S)!|$V*4y4D>RUu7LMn!-kp4wlA;~stQo$mTuz(I z4-srEeFix2r9)QhIg36DOK7m@YPwvQ3D8?xN_HlPQ|DaS;bhQp^bEGQ)sAIdX6)^~ zJ6(-bh)07>vBQ~Oa53MMVaOpKHX_Z~#t3Y(q?YTIXQPHd0oi8_d znbw@&X=}!uNym!l#}vZknV4gE$+zJb`o~|F>AJI%f$hg5z}KP>Z4s&%^W&miN=V6t zk)fAbaYQmxd2s?WZ19->MyZS{hF}Hu;wtl7TAY(a1OpNv;LA{>woTf?Mjz4{R$F@k zsX1R;Lol1bRo}tn1m~r@o0GN1U}6m|SfG)Qw1}dYiA#KN8gB6<^!ZI@F{#N6X7ktg z9Eja_Lt4vtaLoQ;upshZrf5lG`(baHR4nnr#jw_Tq~s*ST+uKLL`tDxgP%v6?!<>L3A zR3~&zrkk(E^3ITI*{&V}Xl(D8Nh(d`_e^zkegArps>ZPs?ANlcQwC+5EeNL>B*izi zJn7&@d+9LKWb1m8N#(6Nmb|qW#A)D%Eu8MsT@k5rKUN0$WC)|Y+=}p3bZaeWVO=Xa z_pUH?+HnrGiC_^@4dbjsM>>lzeuuUJ-af6`PEjQg?$;2yh3csJEs9t}X}+l~%TwK* zb+W*OD7kJvK*Lemt|e0&l!b0Vc3? z;OHZ3h6)m+(b%Pq{$5wdiw&zuVRQ8Yp9Hd0_Bn^11P4su${<<^yY>sM=Xy=7kmjM|>Z_~~ChrJepTt85NW5z_Il!bDIIIk!ywae@GqT)0k)Ynl=aslT@UPW!a zZQ$^-EJ6eh#$wpeM5}#pFc5OvjV)GUC1Q0WI` zN*gOUBpa;C{h-|_4wXTF3wNn4!l8Zl6%qH&3$CyqwYL;;zPFUnR*FZgY^0cBXf(hz za7Ig>K%M(^sPK7{1hXL&_t8pL`fCrjCDQCw(Z=^knp@rG=+=_tuxDwX5)qb?p|X zq15xvZkyL@BMDw-8;U}DrTN!uf$2O)doGuU+a)oxgtbK*{5PHQ`Y++Ze$TZl>7RV= z5*UZ**GrS5yhN3@_t+|4DY!XY$*z3Lm8#m)A7WOl(eGkQb=3vqX{YlvR6^$Jk<;vA zJu^;Ldi88Z@v(#tEcnh2?W}f4zaSc>bQs#!F&@{3SWT$dNsTdjcX2_ZZqMFpC&CS% zW{OUSFM1KrhlFD6_>2S_TX?85&6Fjul1qJ9UF2Ft6@?@nXdHBak5!X%+UxVq25XO+ zfEyC3LrZV`FRqV=p4YTLFp^j7pB41Dc%nRMZCx(&G(athBy=?pZ`bqmieICPa&4(r z?Y+OYHmu5%cC2+X2?IdV-%v{OrC~ejqgn*R%mbo>u4Fo+3^M*hFrzKa&@m`BZvCr` zwb>78rh6Q;yqN=9Er^5>%Iam@nZ6zQOfj#*#z{aEaa&ezu3?X9O#I2cqX!XRN7$%c zXF3iNxYXL)o8R+oKQ_5)B=I52I3H*#u2~as{ALE58eY^fYG%l#wHtedIy0Xh%N(2} z?^Novxv+kOF~VE$u*h6N6KIrb0}U?0*(8e8fr&KDwUZEWSa#=;`kq~PrG*|Ex#P}; zx~Yxx+0^Kh9$YUfChSMjMKHj1D@&qS!ynmV#yZH6(RIc;q*N_5W}O?G$XQ*8N&KJ* zJ7r903T5fxsFdk$Gc^^Q20u)m(KJYL=)m7(-M8Q8Vizqqp}%T3n$v5{DwxrE+}bz?s39*IPD*Zu8n}tT`pQ>Ixm;=c%j> zvzFKJ`+{{+BQm3>PTcOMRgokT5)Gt>ACK2SmIKIlm_`koLmj*}KcJ6+>j$P|A4iT+ z9bF?HSt4%|tGZ$pmL%0kKoiFPM4{m7n&Zg;xmnv5;w4m(;pD`_L+0LisVSKtQ|$=j zHsXUb7&**Ng^Y$ilLP=%J@Af&q+UG9mToxIvKxZQ!}n+GWIfTcZ(#_9boH_ zl0bzt3Z`T{3$yT}=d0vCI?uk-2Kx~lKGn3_(^NujTc3Js!OiM@Qt&k0;Y%tChg3`@ zR7F$xQO5Qls^7=wxl;7VP8?9*N8%ag=EL}tknH|Mw(IFU{!|CF93OdR;bcEg^!@Fz zk{|B?EvBL~HsiW-GaJ5DUV| z2A5&!$_QqmC{>Wd^UsiqJrl(}SG^{^q__3oK!nGh*?|DzWF1_&_U7s=1+UY>-FwM? z85*q{VOF&ufjI0Xw+kHi`)Xa9O;t?sUQm_VCDw}MblJ+K%CImNKrWmj7xpNls-C~L zsoct4#$HB+Z>OPoRwaG)>cdBW#ZkwH3F2(>?mfp^F%6*?Pl~*S8mQ8tlK5zFC|jv> zw>f-jCt!zJ9D5l6mRlH)*P8tFT$vZ=nc6${{80WKDOdwtRH(>FU4e4lY;qkUXhc}d z8s?WtDYM5}$K9d-W+>yrRa$PbIFo9Nf7r!@BOVVg&Mt~wyRYh|u3g1wgvi#~8_RZc zk|(Mv6}k#Z!KD^K_tij?6>UvCbc4O-;T?0Pp}(u@+mi z_9&}RlkCLg2gG8aC!ZRVc1Dp5n*tUCewtAFZmC z{)D)s1?tojGwyL!64kC|s{46}{~sTJ8P!(vzJbEQgG(udHWX6a-Q9}27cT^gySr1M zKp{YJr?|UYafjkspt!rgd4B)3-g7>ktb9nacV_m?TyxKD*R7EdwwzuEPCmAggCApI zMY?~?%hrgUNtAV6tR<#hbmt=xBSTatvf49iBv*O5A zpL{rzQm>-kJ4Ic53`P0gdUK-JdEI2q?DsF#Xkodr{DYvY!30HZ5tAuad{_iBFfV3^ z8KdZ8yi-Z!r|E6WKDNn3&}kTtOrqP%bzkt}McraltJdI!hU}<|Lh^&zmli^V;TyV- zC+@6%P(Va#gK~V`bAe3TTnPwLEdPmGjMjV!fH(DaCI_uf_^Qw|X+#6v87JDg(wk4b zi%$|;FB#~e-W|i`lP#x172+6!$BODWgHu#fBSLD_QzT?+8vQZ#h<#k3(3#h6$#NOH z#7QOrUsQcq;d2Gg;T9MpxJ8-zZA9KJ5OT|SlU zPrLP+M?b!$%VmhZ{MyeAk1kNktHX1A0_XE6<+b(UnVYIJNo);te<)>>Wu2FzzeYx@ zTK8jE*4!5GS4J}@B#)=Lu-@jv2`{ZNf7U{+B2tj^g5rqA7D#%T2B$+bU!~jp$Vk$N z!npqZ{)g8DYmIj2_Z48uXMz%ka3-@=s(#+BzjkqQp8lI|ai6HuKXlFjLfRE&b)vi6 z&XXWnB6~<+y%=2+2ygjWJi<$p%@6ZbFKmD%a<5K3(y(lA-t^@3v~@4b z|L(CkIa=rumLvWB-u9GD{t?`I0z0g=k@(F{%m0zxIEWQN)DOkBqv6UJM|gwGwI>s0 z9sLPo$wzUh+s5-i9aBV4Ztl?h=-Rwjrp%oHOti=DdHF zT(_sE4EIL6aYXQ})V^6{E>if?-F`S6@9!gnfk)`(q_&{m8XJdr7s%o%L0>IsVXJPzH;R}Ida%;Al-XuU8z0aW^`fwX5{(uV4gVk)sdMsLq`7`A}gkY82!zs z3OAt2qT3zCX%bTlpBm`@()+2UjR^R1D+0JP#_V^raz60W>cNbaJ)1}Mw91lUom`}UW@--aPlHtRQFr>(!Fe4uDA+ePQ& z+0=`vtFL~;Pu_;@Cv!X}o-QkvH0c+IS?gRT|2mlT$n4jfZ<@8~Cxp37L5I{veTwR} z*vbq@NxU?G?qL41|DN(6z8K&ocu@^=*CF{E12vq1B`5R&OYS$TrsOMfxKLz}Brbk8 z&$f5Uw^(oZj4UvuwPAbw8(tgQ?_gI?nm*G9XiW0XGl^! z_$bg@d?pA)Mhp}sziYr3*F7u$3JnRAiJ&Dvl$^pWYOc1qY8w){4u$&=$^PB$zb&_S zQ8=91n`=DvG+TSaLbuwIQMGfO$J0)PV#bQm0AbD-CC39I2icSS@PgcF)zu^ii?#Vc z$pa#fM-NVslsyn?AB z_kRr`LSQKC*5%O%fujhlyHZN#*1z|5S^2kCJ11JtU%4}Q%iWGqIa26PR==kfO39=V zWj3Ef0au$vGry?_|2M8PCJHqc&wn~TKikO-_ACA0E?R6RNA4)z_Z&h^H_X5yu^ zyv-i*12sSxZ9VHZhL^2|F#)fc_kSPI|8HWF@IOGi8%q=0Qys}6=m>~GDjl|E73qC+ zLZ;V8th|o0|x*m(s6SQ)BO0MAp;9&u(So+^h>kEG^D98KCaku8y&l}fUOkWYwU0B63o=ctl zjrE(oI)gVK=v|U4i;?HeV3fwcuwzb&tglc>I%v4)1q2Y1P1Sp-PWsAK(7cZ*MsD(T z{49*H7l>11&=w8ZI%`)=s=^hhg@C4U?B$%(f+%ZB|8GjDLuzQ0A`zPyLt3RBpvZ^p zOUwPAr}ZJMkCe|1)pDi}#;e1&B*Mk%D}qXzKv1|k?kzWxT+m)h!qtqIJU04f@MBUv z`(jpQ8L^79_3xh+pA2asgEeZ=gOA4v2)~S8e?}ugS?d7G^c3peGVpg^)VDDY+jt(5 zr&IM=KAOjAoCP$CbhbAw(r30?f4V&>t-yxn>d71MTkSK7Z%4YZ=}e|YeolcQY3JO% zn+{c%Lf!5#``uz{pz8Q7)#wAv^-L+m{@rk(Z|tY~)5ZCF!wV?iFkMtQ*VVA4mlTlU z(bwGnd9cGaFePrP8EN|f`SlN)mWmiCFa!aC7Yoqk%%P6MjY5JXF3ML&eFv3*k+kRI z9_~l-f8LWOKpjC5&Gzeugah<(a8S^LqXUte9&cCfKlcRS@e=CKRg)ayX1~G0K^YfI z1OON@0NDhhKw6}Ju^wYpQ2<6@)9*{4yQ3F&)3ZBznu*vpjsYNSLVztia3sK3rR4*D z;MffrN&tdN!z<^8b4RwZe+T!BwHUycmnfgtYt_>I9eC&m!XPdyW8+_QV6~3L#2V9`;a+-ellwVAM_I% zXcu6mkFQIX(_tg{hz8<7R|O6rVie-e3JnF;$NDYSAaYohLBENOV-dZ{J7$V-jrl>) zA4(>Yyxf2bwYvT9Ee)mA?E^S1VErI)QplwwNnU802C5|f3WCTEe4e5V-*VQUih zFC**|o+RgXayL{Z%d8|M5@}GV$u5ySFo`qP+`|%d$lesL7%OjYT&d_3l+79PQzq$= z83Ss+u%8&3M=kQorQYN4LVjO3CD-$}Q}+vksA3QVQ8fWcR25)?JVt^8kP?H{Wb^fY zq>oHB=J*h&YKil*gEp5XQgfg#C@)ct$^*_Ur+^b*k={aPQ>Yl<6e&B+?BHWdDT)Gz zKQ6F(%x+8hnW;vk3eJa{ksRAvfW&k{zoN1R#j`druGu;DZbIJ5f>JrU0>d?s!KpKC zdPLj?5vio%g;;7h$v`JsfM{vASXlm;9yYw6aPj`l9h2xABa9UIgSKMTa7K`bl4zJg zW`c@_n3BUa`w%{JsC*EML0TimDg~N;l{t@OrIt|ui)b^L;t&i1fI!jWjL(aQpuUA> zhAd;?FUq&-w<^u-yrQ>2JC3_6Vl0w#e5vhBx}{uaU*8jXTiZM&=WmkamKQK2DL+YI zA9ki=Hf4kYnpHv>Zv^S^do}%J6;C2R>&E5RA9Yfmp4@gr4!xUVZ>2Oevdk9wV~Vmy z-;ea z`Wtd2lJ4i~w?W^$>XMt}{kmCBa~woAj8s<|&)TTpSe&d$oJp6rx(X z3Fy-Gy`k@!DZ3jBpbLG~kY#8FMCw9OrpUE@IO^lP!VW@t72mROn>+`M^AB3$w_ znx4Ay#37ACAsL65qT0X#Mt08PW-P#Q7@j#j3?DwMIYqpnD{1A&al=gYAkSM7%&)IMotX-_I z|H;m0La;jAWla?7%+T%>qV~q3Q^%&gWt9m?4j>0vy=kM2fQz;F+H!6UwU>q*TBok- ztqZaE{9bPSA^}8MyQPX39GObW2Mp`J(cIYpd%G|5<2=ds?&esD_V3E)s2A#lou)VD z$9TLgwu}_j(&C@yLjPSd9AoyEh6x6Dh%R=3(Zy1^~`C0ygkcWz#7d{!5fnNpm! zW)$=8>EU+t7Z3kxZ8c9`d1TF0!F0R&Y#@r6HAkyw&i&daI00h#Z7<9~)oq--nd*0C znteypQl_wE2Q<2creEohMUVUSkJ{lTmy)H7AhJ|jHc>C#`dUocDF*%(SvEb;W7a-K_`0*PSni-(1~d^+)-B5;7*gZi24c z0_806j%_R&{f*nJhJ~H;FJ|yDc37*U^GW^Y)gD=*M(LinEzC=Bwzh^T(KpCSj|7r+ z05X#DFT2JeUy_#1`TbKDO!Xb_8p%#dWj}}d?Wo+}Fb;Fzl**?NW6_pHrm>vbpwp@K z=P;v@P-KO)?=BPyZm}b8BvdJ=X#Wx&E=&#a=jf=BmXrnzz@+VTnwGy{A((;t5nRwq zA4P)TL1lqx@9-qn3waQp0}e?zw|Tl97dSckf+A?t>tGGzC%bNuD zwCdVNqI>Am5 z+?-^kKh9UmC;NY`ZfA+3wSu!I4Gz+J;adc&G)uC!y?!L)hbYTSAzn7t=QlnF9{Vjn zhD%UeniGl9;zGJz0v#*lfqBaJjshY|c+-@kKz-D7r0xI_U&48T$VL*Ez81ENFZ=ol zanaol-BA5xylzs=GB(8Iz}_Zi$Z&VAgOz=XQ_~R>M-d=9CL)&^a*^`J6pWROB)V(q zEno&_9M%jnL+ldx5)CkJ(eIY|(V^{1{K8{;B-YHp8h}XN9p@wqQF*&d7lj1a1>mI5 z%4e=9veSXMMG6{Sz9{p(*?CQ^FyPkkvyN?T4mDtv$y`&HqrCqC-9CD$86lq!kF6jd za8LfAW0i<{&cSgVhq@-$9r9Zfkt}_e1v{6)Xf)r(;}vX_N!H$x_CZrg>4@po2F70! z@noH7fZu(ZbxZ;Bds3iYk6q(6NH&W@e`h2|ttq4I`}L8^W0Uat=;fkUz8p+yJ~0a= zEhbQ4q~Y)$!ey+c@3|Wy@iJkyRB!}T(FLGfPF!RxDtA1%nyxXs-(Wq@b~xDvA&EMN z-HvyYr5|Dr?zR2m5GFAcS(PTtmu2mMDI7wC+GdCUOkw`od+SLF?S&7iPI$Ugq)v_d zX-mgeoTT^-`lJyr&(NmM)z`ioB$XK^ALvjy3+AYTxd%p1mC zoxXrYp!!ce0Ew3wa6$`q z#+>v4(WkIn6WXj5f%U zd7@X}%Y?nz`5`Zc?4uEvel@Ml+RhrU7GF-d%dyX4A2B=4ZPJSeEcIJ8UE*}z2Q}BA zXTN5lx_}k`Hm!_}P6PAr%+&tEpSh-O#7X!%S_wJs?S-pQxBpt0TS-czry+^94n2!K zJ?sk`gsEFtaC6QK{IX7H`4L8m7Qh{hJ4(?QqbXA4I3S$<1u&6OW-XjA2cJzC^5p4y z;}X{0<V~q7|{2{ui%n$>}w#Eil*H{LBIOk&e4# z+gMwhvk^+mnGnS{-1U3f6W#E-BDSfHdjVjh*a*V}PSd2r(3e`y`-q@y<(_MJ#T8zw z7TGkMvCG@>Y11U@rm|A!MmAF;_M)$nVrQ`CG$kMC*5uO$Rd8g!4u3Si8GIgKYuDnY9u8W%@YcWcbN z8tzZ2w6RfG=38piP@a1%7@bm8jE{YBH=jNlg&)NU!v!?Tb9x+Lz(G71KSHD zA42}iT^Y%iNKTSh!YePJPaRk1X&YZpLMm-D=I}A6uJLpHWX zT0RVSY{0cK473GT*=p~kD&Ld7Ap&%%Bp9RkN#X&*4v=G0^dmRqQAZdK_UK;a5I$|$ zW8Vz+kh@Y^8qc2Zzsa09x?hN)xZCll=ZtW#s|AQU#~bl{rn|~(6>%au%?o7QJsCRC zl(y>h66Pp|wRxq+;IA|e`&lH+G={r8FoZEnM4r1Ux_rhh_7B}=GH5yXydmH!lLJvMx}mWMCXZjiovOK!+oU^Ucx z#S4=eL}|n-;9=XyaUX6ZOFuXNV%`WP zPkL>u$Y0K2h&e6QTrGuzlk3asSSk7qIMp4?QnOHnP z?3y6fi5(r2S*6-dnxym1N7Gu;U$}ZDjA9QzmySKyu<_1Mj7d&$3@jB+802YVU~ zg6JUjVtL(0pQ<$SZFHlFf@!AwavKG1sLk+w(7|5SljyXYKTnSLx=ogpZin)HXMwld zKy(Csy?MGL)uwe=Vjm+hzze$1!?<$YpV@Hv`1Zw1yit*9ADnfha>D*|O(@E_$w@{w zW=_!G$Q#}OWW{mZbKPcrMlTH*wERh1&__QDoocfr#Pg($37E~B{h>$yxM(K{tsWDN z=#%2@(Af8|5&qMC9wD-`BKeD09)3JgGR8b&T&=>}xQi!X+gG<#5tl+kl75S}_;2PL z-Ikvx7=5OrNM=HRDNj%Avkchk=Bxv7BYjdy-hi6;Ob}i-$ql(|vXCvhk8)H9ero?x;JjKxR}MYy^{weWrOyk(}?d)C9f8_A=Hb2h4w zK@R#X6Z!OYocor>{#`NWEqkKD@S*9Gwsa{^tg0*e+S0M%Yo>1U1`0wSFXu0hMxfsb z<@F#tdO&B>Si4<^CfP2o!XFHzB5k4*qJGSq=HzzEIqnw!%);C8{sOTT5#malY#yd6 zt+|=M)9$v==nAsWl0ZE50lo%1uqNd_T^u3F7^9L1H!xT`aS9h0HTw;Y}27w zwHu3@Z{0IwDspDgfPm`f3DnS+W@JFc`{E~?y1(~7`F6;=?@tb)#8phSkZee z39o*$9UV;bqx}sF&X!j=+%^TM9P}D4wU1<5fRMVX6Q}ut&1U|MSnVHtD%oGFBxkwU z8Yr}Wb~+0(s4x--Y_yPS!!^k4^gdf0fEbEN9|C#qM_MWj1RRx(0dj=h+^(M2_^>+P z#q3&|u^1KzQM* zlt{LIW7Rdg=7f=2^Q%F=*Rk>_t1lB1dm+sX_rdHPWBX?h6uw*A6xcwDd z>PygUCrJkYKlXTuPV$UcOi7SzFDA3HkQ#aVG}-`k)ZXi@$3JjeP^3$U2BxbKsO9+k zTN-~@TN`g9kN^X~yw&00DYzH!r;inG{AsT(`b(7T0pIgZvU^i&+WrJh5xm^MUV@_1 zA%y`48Qk*gfJrJoHHQ96>4jy*s2HwoGMDF2iJ7%*IC(rOv~xyG_&_+yU@O9gbk4QW>+xMg3%UZFLqr@e2oWU{z)Ivim&RZG79EE&^^hyfx@)u==X z^5KJki_>HsiO3<{=WQyktH9XfH{Nmphud&1M_|^fk-5IWV{^3ozzT2Y4)66i`hkIb zIn&tDz52C{0T~BF#u(lwyvDo4-km&#{23#*8qTW)PA1FVL>6=SAnwhsCb)1AZ%a0Z zooNp9P85|+sIN!5Yk36hkDTm3=*PR4E&l!o0qP=m!L;Tb>5fBbdg3t-i)R7XMX49KYQFfZK8CpAtj4WvKI2Q# z7@(+dXA20JrA}$A(@IoH7(&=s)4VCSf0qMf#vzZ+5yYejDB*US;k|CC9xkv?jUAIS z@X2|tw&dR>eGoQrF3Rc7>3g%XmeR)<@EJoF1h68&DvBdSJJm*w0U$9qsHb@=c`cp_ zX!zdOaMrbd7iu0w6cHyteyc&$<2v-*(A!Nz0r)D%_BD4cni+Zt*VczO(Y@LT&G19Pv!Vk_D{ZcQLP328A9qj z`h%TRs6Mg$jCng?pXjo+Wc$R-OqYqmH|v!ISu0h z%)mH*G)~~PE|w^fq!pfC2F$Fdz5h&^(${!>y4tz^23N@4a1W#X<6$}pbr{b^Pz0i_ zY&;h;OS6-TIqY(}?;Apn!AR+I0uwt=-^RZ4rMkQ>Efps&4rrOZy-(b2>2L0VeMpf5 zJAd9BJn7V_`Ne0tyLSP(q9uMvEO0&7H)w#X_URHoXB}BN&F{MOSG;_U{e6&_{d!@O zG*d@Qlu=(n6aYk5*~~l%$_PI`B}=8tnM_#;4rlZgZY?R`G!EKbKI^<^<$L=MI~%2Q z3-g2a+Owc`W`Nb$*|(j1!I1S*C+jzYniBS;n4OvVLi{3rbEW;xH2WOha+Sv}evN&@ zEFU?HIK3=3{qFlXE~kEPe58ad`vOa+*jDf-96#Yj)cmBl}&~VL)+c@ z&crxDgL-H$O6x9c2ZcyFIm+UB7C*7ono15|Ls&f&)GS+dH^~-l;O<+UeO|yFX;UUkiE=MS!7}q6$?^{WN}NpM>7EGsb(|WJb7>N@b2%? z-|iX<@lIW<&IbzL5ojQl!0JrcU}o(i2dlvW>nfNuaAqooMq64G0pLS$^!-AlqRNi6 zw8K?uW6Sp{ChyNLZocGs5KG2^{1WRnS@AZDID_BO$g}AelX`ELW|!Oh7hyh~1krvV zFATL>Jirlv3WXfenI;EW)OB@_z;qm9>}`eG?O_N)9yO|Wcp9uTL7?>))on{BBU#j6Q|Gn2_b-( zXW`xi5#SCk#=-iV_aFl}tE`V<#7uZ5d!tp*U+25lR{ol~bX&LP`MRVcV&Uz4TeYUE z^07#UFLm2T^L*PW22eF$IdF;XZJh>BUc=Zg$`VHM4U@qE}MtciYE#>1_An0eU+Tf-0&F=|UQCREFpsL!lisAMdU zst`VMz%N)4VerW_%Z0}pjgJND{z2a=mJqptH@$u0&*YOPbBe;w?w%cT5X_W_->ZYXK}dms1c0&pDHZ2V@cDdScE&+FyLS$Oeh zN4!^)P=i0B6z`TuP0LBB@p(7zM_bIj)*YAH)$806DlKz`Q4mCRK_c}-F9Y;@F_T6k#q_T=k?-Z;KA=RZ5 zs$KN-j$NjB-`UVFyh9~H#aa_y*N}oJsv@Rn3Ab{*p6S|Qs6r7~Xi0yjW8W85K>MYS^Y-?3ArkoeHl zWYluT7}F?Ocjb`-k+ynhKt;B;8}F%hbLvq>)nh+1F+R|mcIzzUcO|%(vAlr8aIlEJ zMD_w&KWhR;Qb^5!M*|Yy?qD(8TKITK()nR+KW?$MxqQ?PW=F zz$XmE0Jq>Q0WC!xhozDJO#aVA;sBMmrW|3zD1LBH=H(w!B}<*3SFfPtbMekxJeSSo z<<#k$_}Z|sy&qBd^q3`72=$cNVT2cdG}u2Gb9B^k`>9Q=tm$?PS8+3n6v^NHCLLq{ z^y_xqT49kGn-Rw5)k(dS?l``ekd-H!8e+s}x$y&D*NB(4V8jlzo#r}pXm|5rUMbmG zSj;uF?^DUh;e{oUL`A95G??zzW_~urmJfPu-wEq2b8r|fE-;KVmI?c<24xJuEQH+u z0$8Y?RY*&@p>RW?lh?UxX66y?EuEcjX?YJPdg}C3F?3EuxF&1uXqHOXut=UW%^gk- zd;?z66-7-H^$p@Fygx%k1d0h=kL*SHVH*2mRXHo=3>Wc_1B_L#>1)ou=fRo<(ud|HS^Sp+n5lZ&h)Ev@NGDXa8}q~g@8}j- zX=4GR!-(j?%sC3_o=PbQxP{_81HXi`nm2`Nxrb`G%$hc|C(GV&ea{x_jDEd4=L8@V zB7>`T%dJh~%(vvx0cJMjAPw{tP%!QLIB7sO-5A#o_j7Dd7!t-8F!k6tIdZ69pU9=~ zClxI@t=Xx(OeG7;BDUY?VO5bZ0Dp&umtU#(ROzRM*!Pv#ocX+oo8Pd<%dlgZ^XA=~ zo!y%-0&5VTX3Z_;K1oCHRPoV_!Cq#Y+V1>tktj&UPN(r(r;)Y8Ge&A zMe5?KeD_{YM-}jgS{I6698)V>%YiK6iL&?>`X+N2hKz?+6v@#Uje#^+m~A|GxtT_! zb6ZivCn^zdaahFno0%*J&{cmq#^c_)+S5cmqzdvL64h=u?WkWqP6@s3*9|1ICQwnO z+}L;?1|oH*b95n-Mn+_P!Xy95PeTErJ1y2Pq1!0(w4yWB_&?`|&f=tPwM7nS`n83Fs3$jOcICP^>TWRzfys zP}^s5`oL+{m#y$Q32R$)iPCOouDYBbF)!|)`zK3d;oh6wYHX!OIA1AS-H1DgzE5GC z&&;xjH@d=Wz=e+xO+_b^tkaGiM+zYXFP(2b8ypdK;c_O2rI#eM++eU9vD2e zbNr~g;DBJ^-d9g%cqrI0JIvhW7^NM;MpV#^`@VeTXTyY_=?EqVnxK<@7Kh>birt4G zQO_SnzGf1>m5k5#BuH+*qf_&x_|_-mAFd-y-pA4k6lfdDQ2lonv%SnG{$Uqm83h;N z)s@iQKQ)*Sd#d-}ghVKu9Wi~U65Cm)x#|Tb&GxUCTg85z?wcMI_=PRY?_%qGFb?&8 zgg*KSbu8Cox;3P@^%U;jvNZWPI0hrPUJxu-C!0K(Hd?)k^#AEoce+rZuVMV=4Eek)xuzWfG1LaC4od*?Z) zHc_@?iSKA!DF7SE_~Z-kEhH|7$}W8(k);z8_?E#uS%(aptG6yqz z^v2;`V3?I4JL2HL`4*snWB>0rX#2Fmk$BwtU&kGSvh|Qn10LW>bY_U`VgH3JRw}a* zMI!aU2!!|5vdx{cttx>e!|i!KA{9ckqqKnpGLVfHgM1{E zI~XbGqeznMKs?>BSYkG7K${j0pRk$wi4G~Qo+F?dOL?!2GN6QD#knOJ1s^0>ayd| zpmC=XFp2)afJhB^U6z9Gn8a1)P{wjo#C=(dQ{O&_9{j3Ar1y|K6rM<-ch>JG{?m8i%f59MRp1>%9~DAqDdx(!)8v=(WHWV=p=#=N3+`W7*Zu=T{WE5p z(hu{M6f>6c{hQm^cs+4mX{)pd^IT1|zc+4_N-?@eXdaP6Jb-U|lH_|RSdB8-5qXlS zti87Jxm@UYv1L19C`Ycn2xwJ#WHZFexmA-Il2Yy~->kLfvisY9XlS9x9~))C}I zk+tYhwOe4zqv>NZW?31~uxjFas^CxQOoLroCx&JCB1$1@iqmv{ z735ZIwJf_>QgXkcrpYGHB4Yr3#ug@z#TxEaws&LBv@j;!`C24Aq=_g(QZl-HZ1|E? zEH6X#rRn9Jm)Qmd9m~Y?_8`P7cuJP(SI^yUL}!9#b$xPkQQ>qFdftwJ{U zxGRa$F~uX)qcYOYDu30PKb8DRnFULSnM_wwoc{A?d6HmwwH2)7WK_p>a9eXCS3ZA> zP73qHLwQ#LQ&xuUP2Xky4LJa?NXXVUp7c zpFl0=&-7i;z)x{bMamzy!(qOG0NP!!sCb0G7pHML*-{6*xG!BAx4BJpHe(Tf$V;B;K7pT? z*J~x8mbcdI&wuPEXB6PG4smjk00LBd9!S3UFlw@6Ry1!g$HNHR#cm+a6m7iwHc*f> zaV1M(NtDkc!*^LRvmBCzLHFhh(Ztd^$$J1LmTE$yxkpS4uV`!cNUx6gWZXXp3L?f5 zv4t>6V#rwss28Y#cucJg9G?1N6t+Y;58QtEA(2Bj=8Ep*Gw7DX*K5$v(ChKI6NvJ- zx9wl>v6o}R;dq;l(oh%#aR)z|X@HNuzGr;%b?B@P8}fDu8wcou zZb>j}L|UeNKHU0d6R0F0SoXK6_r~x;KDgzX4}ZLyB>9n218;93cB2$~c0ED`?t%zU zrE~@Z0s_J?p0iwvUdVFs;0@kz!b1=NE7gD->yxUnjdHq7GD+Rf(o%XP5#kKjWU_#Ntk)Ggrr3CgNeyRX0_(;W<^iv_9UhFV1C}FTOe6@tIMX+(q!Bh zK4Dm16x%K9+u?BZ%myXbYJwmY83+LFdT;@@bKs<_vb>ae5@CVSApj=GIof0w1rP{N z+UTPK1BvgPNO-Z#R#Z`nsK#QBncF=gCuYXVN&Fu4w|eZpg7=^1va&K8S82AfTzRkfP;ZhsfH((l@2-;9D2sSkLRA4nyg?z5?IpB zLW{qLkN68707r@leKn+Z(-gMLV$1Uy8c5HhA~c*D8e@`)H;PcgCzV&t0n=u@+?;b6*&G z^J2N6Yx+GXcDuhD7EQ?h^18(3wGb_U6C7_WjhQ7upzBO~2h||CpXKyPU zAwS@+#ELNGPd6ct_W^iwH`9IhCisD1c^I6ZWpGK_~bMx&zUiMcMOi{9s{Eb@Gs! z|07Ev0028#eSI5M-(Eb`J7Tg|a_~;T0Zw~F{eVeV>Ww3o#?#2Z2;n%YY?A-6H2!0K z;EC)0e}CkK$zT_z7lHzdH0gM4HvQbHFyGujVOYO`5Y;!*4hw((*j%*cPG`cK0^f*x zI{7iCRFk}6phO8TFA;@gA*wjAzF(iLWlNId819=@cDNgV;vE2mBMApY1}_RLcIN|t zA<_~Kcc1Gm7JI}|)|7J#-uhP-%Z!Jhv0Q*Qe9f=%X zuE`PNKnv!R$w{XQtTqY{p#4tI3*J}3dk{-be>)}8ZDKz|nj>yP@Cg386={raprx8gtEm@QuY{|G`k`CU5k5tKs@Vhm80 z2Wh&uz4aSaqy_DhS@{QkvQxq-xERRcS=9vMI8LUW>y?)8#AOz0H_pg{aGkagv&`|U zNG0j;la(Aig4ndoq^5A@iXplFLA`#k6X3I~a8|4{b4bmGLlPmHeR{?XBOdr4xJ^?) z@=GMDPJACN6K^z{)h8g;g_s=+{9mUbn#(dj2&M4n#n0Ns;whDbfX$3|YuU6I5J^o< zM>^ziJ~T2KeE5Lf#c55Wsl+2#)w^%Qf|aM?j1dWOU4BA zwg2Je|M?hH89k^<1i#wtkJkSaPn-_=>ML(s>B9V2(%wWRD-LX~7y%s~AsH_>3~s~k zTOV|w`M+)O!a!T_O)^OB!N@n#nR%p!QZ@unH;Jv^D2MYWRQKFt#nnJcm9~JT?M&R- zx|B8t-f@V^|9W}_=_WyS?df4EOy~gpMY!dPLb8~YEO8onw#D+4|325thO8-yekp4?FBvEoYyfP!u#lQ%zUR?ePw%}c;}02`_^VlUW!vQj+wpY1#Kgpk!^roP|Njx~ zV()-PjE3ixH?LtQ%Ki^Cc`^J4@P6>T|FIF`;=+um-FwDUWP7?(`g zXBbB3|8kj?BX5KrGTGvKh#1)Qe7i2^;#9Y2*PJ(0>KA5S^ps3h`ywG|_9GN)&MJo9T}u3Rt6|K(nX@g~aX2~qM= z91fiS6EYn@@dy*pkQw_m$=~y)EnXudxi8VDZI|QMhx46xf1_wJJ-#p!sT1xDGgM-s z2HUrte~SGeRMB!!^6>B=@ZXIBr|AOjC+f;V*9)exu45l6Dl6wX$GkJ(#fkLw+u+NG zM&{%2JMwMk%XQ_t#}@W@bEB`V?eX8=QI*aAQi+Xx&UZy#@5eI)$UL`yz#Fy5^fZ6C z+K0D!G*`Ynn!@pTweNhtlg!covTS4dAL4b$0-OHB@YyN~gi?0;@wD^xVuU4J98w9A z68wOR8XTF++OI!fZ~ItQJN{0{tM0JH$mAJ(L>sj?7vkRWid&MkaUrJf8ljdC)0~Q8` zk>TNzq9WsH-+C4*xVU~@lqUb*#_*9XsfU1`XK{LO8T7iXJrNa z{gZm}EPQ%+Y!=S0V+$-lGZG;ISX6nzI20jm?gZaLOh9l*eUt22_BdT@FE1}Q5Ltsi z{a4O|_O(X)to75%^78iUIX#w+JNTRvdtWS--u-K_vp{qa{4g;wAr0i>;qhLdf3qHD z!W%<@_20>p!}uTPkA(t`W^qW?!~h=)3rpwUNCx3Nfy_>P; z4ZV+#7Hi4;pU(B{+g&$%LWR6<+BSkPD>@zyer0+c(1_d*^?iF&+3{f2zktoN!fHKN zwmsLX=c_dzD=9C3{>|c7?YPyS7b~2K$8NJwm6SvTXu4hV zh6@HX>~~jF(qv;P9J`s`C$hh0{=?7qP=bByaf5EH`SZ(d=X#4P1E8+4@pQ2k4IqgE zh2vxl0;deZg`$A+FCDY!p&Bq2s_n9H-Jei{d7;CyT0C*MNa_hefAhiTtXqNlvNr2k zVWy5}&10)5FQ(=GUmC&&ywCRIhUGP{!}9-j#MRyu+R^rZKR(|q?~bMMSd6Ft{ol)s z-Sf2lHYquIB1?n}GP|~>MCS_r1qV}oef>xhQ<{K##l&u!u&x23z4XzrL||pt*?;#Bs)nnUGd3t&dnbqXy zZ^JkE-AvX?o%vYm^t2k_tEFWMx9yUyMaFfaGYp|i&vIVVrxl(hzJD-TZ`)d{_W@9* z*LZSJT8R@1FTK~x`f?uYkM)kT=s=ub8{_DUrb=$;?crVj-yQUnDXkT^Q^LRfOL_p%3# zGF<`eg9AC_2fQ1+;s5lRy9wiH___yoZ@}o(wJHsLXH}(F{T`1M6%{o#HF1TmCLvfK z+)B1tyuwd^WoK{H%_to{&@98buV^0ixOYv5Ey1YR?>N6sTD1Sp5~}-up&JPT8#3$J zJp0bG_A@cD-sk>e;Da|K50CrZ*=Ds47Q_XZCPJdA8iUK7;GhEJUXg>Fny{N!XlZ1qsg@q=oKlHju=n$jMP2g^ub?zAgNq@y5 zd%s}f5igFZg65xbrX2Z$l3fj=Mg?*_9~!)!&HuqO)-n|~{ijrW-F@AciHT`vXD77~ zJ`*b|D`jPjBQjaFxHxzql5(h8Rd8~dlBn8a(ox2x9k71x|~l(Mbvr+(W% zq%|}Rs=xd;dbvneOyl<4+5A$ykSi5+aCj)y3YVd0q~cgQ|4C5Nem$)DPXE`p3|fK@ zdwGUpJ05~-&4G=66?%A$_D7RkJ{(rk zBn*9fLxb2=qFFjTJltTv-T|LSVc&<*41va~s!7*XIF$U){(rQ6c{JAR`|jH;sU(?F zGGq=RnKdBulsQA@AtjPAG|@)MkYvtS5;7H;D#;W=;zfo`nP-`u>urC3=Xd@%>#VcZ zS;yLI+goq%`}sVd`?>GyzOL(jeB4EA?4s%9l=EBk#Q&_2@0gz$x5Z&6AZtlA-TJUI zYi#9K*-q@$@#p)3+}v42E*~f7%Z!XpBsgT06Lqzgf~Xfm zq#}81X&M=$!zuREl^-h41o}{%RoSSLIG^EB{R@hFs7%sN$!V@EjQtrDY^!75sO65j zfs1t^w7)UCceT^v%fkR!7Q!3v)kPKd8%=VwTRvcmPDH#Cps0{|%3GIaw{lB*s{VXo zng)_&*^bZ8NNK#sBXfL>qs)iPYN{Va>((OCCj0#;xB77ossN-Ulz1V=ecL_^)yGH_ z&vW1^7XAZV6BXf^YnxPy^Y6iYLuL9mSLH$DUkN8|f~UNOh?SKH}%+ zhexpE_NPyukX_r~mZGqBbs0JCZ?gR^K;d-!zc2W-UnHAjUjE$Xwf2Zk}cr`1Rn&NSTY$ z3F=0>ND27kem!BgSGdK4=cM1A%+{#siQxLS#eL=3$sfeP<=gXvOlbu3hsVPemD2HQ ztjOP$-d6B^OO{n*^7#8K+pnwZ#UoF&)H&T2#5Y5fD?NHnpFXYk>;YE&EHhOD9*f#Z zxB9Z@Pu^$o+->TS5ub7x7F4BV{+s*zm?d!yzKIdVX(k#?`R^znwSySy3mk_?om!$EBd3? zb&ZtxN!es=R}+OXmB4-X6_f74hF8Ak;=um@2{bjHJ&$Mi574-Io3bVU&-daX=lb|( zXv1eR?$A5Zwf(2{84j{YjQFo-JKZzFfmw0V&HtOTPAr@+%8ZlCt$c)#yUTPe$*%x# z<`u#>iPN|z@d?$r_hlBHBFrgcF~R*VKHspp>l>~*bWUnJ?iw$-(Vvwt(e-8Z^6(4B zs!*%ty2hR>LtRA&v#oyaH&cz#`0`&Lw6yaq*@1K29>Z}v_R!p~=zIJ2EdW@YOS9si zpKhkg%6o>5bXo!KS}%U!FP(1&q9+h+61*4Dh|pP(UZSX2WA`F%=sn*TI*YZ)@-?g9 z-x9+))YG1L{wjF;c9CgwX%~U|&>>^r^@T7tr-t3k`=yt9r~4`{JYuL6bF{bjM2+At z9?wlmVrjd1T(Kk1rt!5w-nH`eMF6TE?>`=^kL8owOnpmVy+X6|IBRUieGT9&`lN;b zpEex3`VPnp9f~ZO#|2t!yF0zBj}%IgqYV-tp4=coBtZQw+jdegioPi+xz!ji_3o$Z zB{MU#&5dPfZVK@xMg^D=E#>w0h52sgt5>h;8Q*Lz{nI@bcjnTiPGh&9 z3&lO_`z*#MM$r}2JNnEWemL{x(P6A0k@>touIl=9@5hgqum5;$;8?ai)cf&XP+%ab z$@sXQJ?Zn61sj!FI3`-KIT^MhdVOsBkEgvV{bIj zOW$%=R<1))TxnM3f5a$8MF89}-CSuySu*w zG0M`zs{SV1d6X?XJ3GZxt(F(+GRp(u5{++*ik3g^;h*oeyL#0d-4MHaJldLfS36z5 z(A%u7_H0W3`iHe-ZLgCJX(LRp%e(vI$dTCQ=4R9NQ9Tk6M_*rfW4HlDFDh;M+xh*a zE29~a#;!!M;n;rBU@L=)2mAlLm6|E;%DB%6QGe!3bptrwbejx14Ljjt?jJN)x`uoX$2a z_i2>blqBRA6exy0`(JWSLE;ntiaxXpVPRA{I`kG#n$eg~SL`oeo2@(j)8(MWSEty< ztdNXXuf)+xzPt9*@Zv=w-;Fia$CA!KD(Tv7{FSj*f1O!v$?7q;BK<`Fm`NBQEdXyqPZS501fIV(Svlgr#7opSbka z$ZMhimp= z>bp28RAzT&=5QfzjnGk|*ZyO>%^C?-Q)h@VTF)Q8J(HOK?IZ8EdjDL#I*JU+MK$J! z_e-hB?%y9D5eeuiHQlnOJwC!LANX~J+&H<-5B}(n~{ht<2q1%z}I(k ze%?h!MkX++AwfocNXF%Nh*o+Er&31i%JOn$W#uD=Q`{#{<{(CP?AVdgzbEV=PR3UB z&QoC1%4kIkpUep&M?x^l0l(O2WMo84ObktPcXu~%5hwsxC#RA2oaA@!+}2kXZa6z{ z-+I=>!~{{%?KM>jfV()-@*wHu{QNxNsY-(MIw%K@J&pDCQob9v%*^`GSEC=^e?(k% zR(O$@K+twvO5f%_GCMmv*4Bf0_fp>jqzWY^rD#E`+UihN#nh?M z){MtTB;+-}W5Z1Kly7dVPLVM45pkE0x81 z-G@(KbNKoG6c10(R{`&pd34yLfWjP&pTB%*h&lb3Z5E4`M|`cpxsOrwTcMLh{4ftU z_j|XghTL%=XwEeVE%o3`wF_5got&=SOXzSLk)xQr>RBYeA zUHDp;J}=E_`|p5;J9h3A!6rI;ZznE2hvdD#*g}slGlFe}r3@SzL5= zcD8R$QFM0~HQ42Mt_k}HF^3)~Udqb{%d#K8OBq|M)N`Tw!UZ`wP3l9`)YOcOj0X=M z#J>+6Y6bSq)jfIgWLa66XKC5<=g;%=g?V@~Tqin0LqnOFnUVIl-g)jZH+1~?@xH!3 zd-YwvIVDZdpx*-vFIn)-0~S=F_11YGFMk_x!RK&CjFS41F3PHp((du^u*dD1 zcg6P8I^F8eJJ@*S`e*4UiVQt5{jYU- zqKF$Nvsw{yIv%zOeUEjUH@-PlI*7#7TeDulZw|iwoPw~q<<6NiE%WH2)ni4^YCbW{ zyw+Xffp+Ite?K;tV;(UnITpL zqw_a=_OsY+*WXZn)-USSZJcYVi1-O-SM~feS)cp5-ufW9-*7`*%ZLkJ_>Sm6Er*u& zz5F8vL?2_-NeU#SIP`39uXfH#s<(iD5Op1IkKoa}f6mOnzyJsX+s6m&Cc;{S`q1IS zonW-_PRJCeY`@(e=tos`8T(ORQxm|8=k|Q%Y|Eb8k%ynq`!AyzM!&7rl3!__XeTZq z;e`ZYU(jKmgWlT>S&p~Pq}cTYA72)TA~c^99R)mmeAaZb?hqH&LUwC};113}b2@o&6f>2y_jc`P-%sx!b=t8T7g>Fn z-k%8OAXe-~bu2~2v?Ph8Mm_@i%4k(;nFsmc(ed*{0NFbEb+Z{2fT@ zE4VP<&-|*Ko}Nxsj?|()}LP>_+k#i@Q(vA`_aFxStded7AVRYpX?lh>mV)Q~idWC(=1sl;OsN z7o7G810kD+@3z8xe0;bEhn6%|6o$rFv6d`jiNGXDDXHUB0p1bX+!2wHk?V<|aHpr+ z-#Id=Zf=GT17N&!AUfkcsO7*Xy#zgiLPM(9D3a*Ui!G{xL9s_!8F;Z$BKWsk5tbf% zczI=;l#0v9lqV&bqrtv&=Z;9sqtAnn4xj$=~NBL(gbFdGMer zg!z0hlg!b>hc6i#8ft1b^y$xdIK#Zg~JA z;Hl0nw3&uKSHWakk3z@&b|xh@s!)aRctlw4==vdmzSftT$t5L{LP9MyHFl^X1@^5; zoTDx3GCy-HE`U|UE-`%TpxANVViUUw8DdS z0n1X8glEsHos6)f0N_^#BTZ>&Xtby+oft{E4B6&GkDi8xfK}}i&1Ct|2W{D=kxHp^ zL-oq4s@_mdcxi(2^71OpYZ@B%?c0~eIl4H}$;O${I{N$fZ`_}Hyd=@SpaE+&SQ`;c z{NC6&g`ZN(-NeQLw}yIxI|7^(kGqD)EfSLnN{)+*v|kvjY6hJHlN8>(HO#cUdn=^U z{A5f$7~h*WZm=p#yG1=zB1*o%)iv2R+t69aw4A`i^8>7Sf8ht7Q?8BK zp+RE6uvYS#+F-T$jS6ukii(PMc3g{G1VYK~XHh~n<~$#+XlT(7Wq*RQWNlXs3Bh4M>F8+i?f83O1+ znn0nS8*a2QSVa5*&_*F%l~Mr)5F%JCkqQBXlovX%nsAQNk`jhf_AYqnKzl*7{N2TF z{30ShY=zTOQc}{=;>B+U4lm46IQff2eDttm? zU5Q~t-!M}*y!($r0&|Mr>1E}18=s%br_L-$=x!^iX4HRJ|0t!dBtQ0Xb=jY&!AVJ0-Fs}{c&Q10cnxEZoOI>J z7aNZ81CJc&1sQkCY3{stXTD=dRPdiBTQ*~pkVPsa8!LlZt^wneu|XSBbzNLI&G1NA zRi=1rD}`zcW0jSqWylxqbBQ6Jt)kNu9X*5poZW~#+?T-JN@$(Z-#Z=ld}PN5Woi0D zqz`7(4yCIVpxB*G6Xa)QfbH%h0yWhmo}%w;x2<~CqRp!TA;DKn2FI$L@Q%YCUcS_p z%a+tsUJa~q$Mbl{+Glp8PrTiAwmC*{nOCqY!22g-hBl&~^2wIosSH8aBfE1KANUGS zEXl80)ei5wH(dCEd(S)m@bCXfNSmh0KlpC8*<>$M%#Q5ZdQ^VsFUB~dv6BQf{(pQU zrEt>M|L)uE$UBwn1ow3Jc!Y6qBT#Ol#_y$RBJr!WkeucKeI60)pL@LTVw6p!isqC4 zPe&sA|KZ)@wTnRLy-8lX*yB^h@LAvh5IQ-@DHw5goE#zkY38?D}Be5vV5bkd|_IJJT;hDmmu0Ow6|nhfIrX zD#sGqYESBBkeDuCe%@-2&$A*T>2h$qz&0mg7Z*9XO0+_OK|uyjCt5QiA3S)_YOkuK z^xmo8Un_mQr@UO7yTCBhzF-A~8FV#cl@nuIh91AVy85aN85UA<(=Aq8v{dV35)yoJ z)6()XF^|12mq;Y0r>7&^;fsXi@|uK=4GrxDqqc6_c7i78%rQ{Hc`=M zU**G;P^;|ixf|!K^N5v|$JyE0`S}|=J3Em)A|iHd-`=iw3@jtMq9jfTM`L4$4;_-* z>SAX%f-0V=o1wsl{vtqwGv6?iu}aE&<$F(0f)%l(q-6EaRPp=wftA0Yrse1xy}M@o zNWOo39F>DBkeinmulMmm)&!-8%b)H$pQ&3nCt2kL;Z}&@k=s;v0nvdw;uRVhOOe2& zu<&p+ThSs{Uukf@*1h8Diaf(6IU~tWO+Gg}JMZaz{knibt9?z*(|PrfJP5Nx@*814 zKRYpU>FH*)I*1&m*cqorOGTBWl^(y^B&;e#A>{J=8(@{|=yxs&iDKXZv@QX`!C4ny z1ncvvDJx%k>tFyVprovf$9xqU*3R?V+TW3mxB|(^$TYYkkT+R3$*@M`e&!IY(SsdH ze~Jt@1zaG0b2O!81b7fN!Qh2j9R9zsuuvftBuq2B0BxC<+)(%MiSz=OZ`WJnhGjOE zEO6^J%ZDY4>qLX=s;hfN)%YU!_?-(?_$)v{j2Lh?mvLL?S6AIk*V?PG9^AUQo@fH< zbh)%oiUj}9VGv5H^6e)zhZ zL>G(`&r1hc5dji2O-c>3+s0hp*VZceo1q82xj1fc?_)?E^f9R*0iholTB|z-(dR7m->a*`(Wt6opPu~&kxib z1inOA92Ix51=>NOLyjjY=@(x#079etSq2cpn}#O6#QQ@h6OfXMW6MKzMeoeW=wRyX zFgoy z!7sH*{Q_*$hK2zY9sbM4%E}<~2S7uD&x#$mghgr|YH|QO5S-yrQC!sI^!{Af)+#E( zG4%syR9jp$H8su6S&Akvbd`B~0hR;Gz+gdXpzY)|gR2H<;4$+{&fiRy<$!7n^2JzN zHV4o3p|AAL&cUT~`-hwLuE){&hbpBmDny2dhsVaQecZ+5?&Wo*paXIjpRlm7xOj)H z@cW`7KYxFd_b%z^{|91UUwom45Wdn=whnbP%cQj9r6#MhH_=k?CY~n{^I|UxRe*x% z(;7=1-OE7m8yg#zz$l^l*j^ogDQ~Y{3QQ8Y*5&@|bHGf0)r%J|s=j=&wzQO8o5Ul+ z3xb1!k~x)Lv@{7%OirrN433T(8W`AZQkR-A(a`)TxT3czWMA+e08=$uIFXaY-l(gp zo}!}wWI^kQ5CA0yRqfl0MlNczSttb|!oXO4Ul&($X6Jk$FXc&b}=xQ=6OKzsbIU-0xg=o0q4juC{i{ zix;pSJ^Q)|ptuGak{U=<4v+tcr2BQW71nvnfW1IrR#sNQd)~F3DJ&`iMhk!67#kZ4 zb_MAU^5q0tOmH4}4Q?7~{Mxl^=ypBQ} zPFqIv`i{5fpxS`{^PC;1K?cyvG`u9+2u6Byk%-8`@h34uCv$Sq{fv4 zA!8kA`HZgLyouGB&N41m(6Bamo0N1ni8D%t=HS5_%d>-M{zLOl`kixHU%45jlGZkM z<@-zK@EV1+%vl3!Inv$B_(%#0Hd_jkNQ!jrFyrdn*CyEI^PKX`EA`t>*A;TO-I zy+d^1x8(*nh%n`8#wsj}2nWXlBW~bjhqkOZi`5}tucPJybTs@X zNN-0dDK)gTl3GU6)DwEffZ>H!6_C}uwn9h&t$xm!-bVSp=hlW>x;Sst8{Pztf zr;~IPi~VW}3JMUcv$GvRr>3dKpoXD8k}&^FHu^{RH~=07gST!CJ|bc5YmLVUtCc>w zq4cwt-dz6JRdj>InIZ@)zkI>gwu6ffyUFRsjf?5pUT?NUINB8wJ0kf@jxvPs48JFJidFU-%@iY@= zh>MM7EQfc*bCHIB`{3q7q67P|<$zmUtgi+&sawQO*tKIv=$ct}VZn>5RgA}If>3Te z@h-W!f?8>t11=Xbb!n-oLueQl2Sp_$5~RFH&qKQddoE7Kx7$4DpGx!SG!PT#KUL+8 zX=rQ99!1mSC3ni;c$}IWZa*+E5SQHBdpT9h1GNU+k)@RtbPZ+!foU{-i|@V(UoAhG zffUE^Xb2%QIXOx0mxQi3lHYVAs53l2d}BPX5!LKg-=`gTZfK>!M}*Ndit3h;G7n%9 z+AKj27|NuuD%hz50|OvozkSnij)^nL*5i(#mKz)%4(DM;s(?R322x3F1P>BCg8vW` z(^R2lc+J50I3qp1U5-9Ga@NR5R7}j6`wG^z6pY5u(2%^WEU!t)Gsyr~S^_~wfsHD- zpNfh~p@24>E6?;JIv}tU;-2%is08K~7F>ZWyV;nT6Oph%zBStlqo`bIf72Iuh$r9h zDo_tM56^_zJu|uhS@TWaIJFDhr#J)Al9_^BEAg0PS9x|UvQ9ltTyE0*6*jdIU$$C# z9dDhrwKcN7A$P?4;$qY+F$oD@5cGmk<2qR{ybj$HwEJK+C^h&l!OE{y+59ufLNbq10HGC+#Z_UJTNLA~%mGg=uA97xnkS72r}O_(1s zE7$8KUep3nKQ;z7p#%72-%-gzl$;bP;f`~qYd+uUikO$Swl*ky)ciSw1fTw! z=O(3|P))&E>Lbgb)kRKFBXO!(FJC^B@hyA&SRIe247>09cWn+1j@2+g+q?JfA*=T< zOws|Ym{DnXld#!QJ~L@bOu%uivf;;Bp%$lwFX!!adT8woHduE#sNOvBcZf9jo#+}+(#AZpfsqcTC< zb9Hm`t<1L0%N|POg<|mXO zBxD+1+fW|?Zf@?durNVE!7q=Q9Qpm^lXFT+Vx52cJ#snyaZYlXmx>QObCa!#y855l zS(cM+N0pH4SXo(7B+ee~F7qxfEObZJ6^T*hr6Ji`Q_}N^4nIa*ERWtfgT4%O*tTuk z(2j6(3o<+kwrh8U+thiaG-Bwr0C|DE)x?| zU{Y;e9oG9&zOBMxbHv~ee~Gg> z$kl%5m`7^1a4iqc%+G6cQV%ftGhQk!Emc-lwh|;hme~-s|Nipp*RPJ{>u6EZ5lDhD z^$?M6!4O$}7#9xPClQDgT0I)GC>5}M_NIa(Kku%T%E+RB{;MOUsYIdS!F57V)eDQC zsQ3BC!-&KAuLxTT5}~uzsGpG2L=6SjaB^}28agKB#6=xAKJMUEkIb~6jO>^y&kNNU zSI}DE#UA+kL)>!0(+^f|DO zakJwSn;iwc;OF}KtKg|g8f$Q{&qDU~vcPptFE6hk*(4O)@U%U+Mc9kyVbsR+ekk9M zHcFPI2_K7nHrm$*_2Kd3#=*MCxw$#Si1*sk3_=4sx>IUM?#uYh=V&(*hh~xtmQZoM&ipS`&>Lcq$O& z>Dt_;rlwTi?4lRJhy}X6qzyYFMNI#d)RVO7q?O_p2)?geaxb1RaN*2!ib|^g%ncg8GO8 zoPQgN7=o15QPOjs)597cAgtO+dkR_vS_tBPVVWR0?ucu|+~ZPG#@rD<(l0)c6hpk0 zd9Nl_?jU?f_`JWlGop0yRZ0qiN7$iV0M!9768m`-AQruFkyYK(1FZ7nT}47dLU|}W z0Ce870|AHuQh)36`}*&1%x-RO1%?y)JfR5*G9I%7lRt|)6F|YRhX*9R1h=aiCmzvN zU}|EbHrk&^2ItYbRP@MC;GhXH?2W( zH#9Unskm%0@F1aU2tA;cAbn9}LuIAkN}K;PiVAHm*MW<#Zar0DKNuiu$(#~o?vKZ8LsW6G7dYq_Xzq~o&|jOQ8Xp#MC`5U=y=5Cj?@I;-%h1m8*FXCF(Z!(4iTdV22ylgx=_IIB)~>#Q7`m8V8Y)%1-*)4vn~9(+_||cO*6J(kShye;MR@$P5UDvp}WbRFr8+V)R6RJ+q}c~73t^+b1IX;noWm%B56 z!|3=4u??a2OJ}tW%1TRfrSw80s~bh4js=+;JiRYQ^<+Y*w|BL1r_~t^d5xXh2lYy{ z=Oi748EW>fkQltLPK@dNQ1_7Kw`|!mu!o(4BfQKAj8rSYSSFs4i9uS+h{DzAb;`uH zF%W1L-IwWxKp_JXp_@gBuf0C}NPd-UH)KitLsm;xd)s0mBlN-ctxv5ozJDa@Ef7a+ zOmp=fgjV=jJQ~T1Twpx?J;9XizAsIKA%PITnGx`aFg?`kQKoe6=B=d*Ey4RI+8h-# zYZDUaBv0>UWnty)|1(k`W^$R8L{#3L<=M4fveEzQp)T34zXviy4PK+4tq4d^zdgG5^l%A_)3VN`<9}(@GqM#rtnS_P z)FN9x^jyxil9jW#`LlfUEen0|(SKzT-gC?+bXHrK$3e#8uPkL8AkHNA-~OU;)ivKc zf0WyaK7gLk`{=GnEx}hvS+l%n?Q9zAl!)@e2dCJ2YYRI6bE!~=NLto~14NV1uL2J> zIC(iaLloFR9zrj55NW7a;bU#}?Q@C<%rZIyBY>`}Va4R0nerkA^}+lx4xwS4s^tql->UP^}@W zClJVL3Ddp@ij)*`Us(E^L9v!)Nwfp(gcK4~`3aGxEidh3{7aDJ(#+$gH!K zF5%;f@=V*ZbAoWQ=HEMI+QsX|QM>rCa<0TeNnY0H(PEl6M@NjAsG8)vsQ+kno0Y6u zaSp!CCwV$6ax6G%rx_-Us%{)zH64vQTlcRf7Ju-?_+Ekd`r6;8mT&H_4K`RVdN)G~ zCz963lw=nzoOPW-eIQGE_FImfbAzE<^`U?-x}Cm;Fk|6WOCZf>cRe<=%nL~!dd zVHvM&Oj`emhSt~P?UclmC-tHZo~q536Wj>5`8KxW-$<$2lA%;QP#*Tax1h7Kec!)t zbvloFA)7VqIr;Lyhh+qBXdnOZ`2jp7N_ zmifbO)^&3w_0|>LkO;O9(kdRKe8a0;s>qs(X+9DuP81lDD^RJi&MSfsURAjUqX*m( z&WsOmHwZ3%UY+ZVdb+w0+75>?)GXgVmq$X_0}0#3t_E7@Dy&%)WzJ^SAnmGbyUQHZ@9TZUUO8FS~>jb zvcR)?>rjRHv?IPC(LY|M465X8B}|Vd+r7`tZN4l}B6eaBf(W@Edd>GoQ!~s+vwfhl zZH3AGKAq;~6r!*YW_To@tj{Z-@=|RuDv7gsvA5nq`yLv=>Gvs?$xZrNTIL0YJ+Vtb z%8hd%wbHen8THnGU09%~WvnWVlF4GM>Lb5-D!6WGl0e9w4OPl+o0H_H3F>({b*;c~ z!Lw9_J>%)ZZSliW=l@1xdl1d-{ zW$VS{?S$!`gF%(h^12lM^mIwsGP!M~e6o4`)z0nPpQ)q)7egfA77z##F6C(YxKTHu zzoc;Njm&^YcWWyidN89{E=V{4F-ZOf5J*E=FO-y)9?6KBNdKgks%8A%Wd!{i1k8{G+koBcr?<|(&&ccnwgD~~L=S=hT$Rg6 zGjt)>sqS^iU(hi?4yr0Dj(krCNm_+K#0C)stp&mFFoi##@%wy)-iZ_Sot=jz4iH{R z1@~)nA5v|>5N!*V01Ym-boI|;iy2qHPwA8_+6%4@O3ZTC<$_qlx;_pHih=bzD5ws^ z8JsOQprsqW)GBr`E!5|QDFiG>T}@4B-Qd91WXP?ao+~iDz}+)CKCUv!onz`CEA{g* z!xMw25p{zkst3jx-^~rQBG?l*;2MFrL)uJ$f%QG0!GKX%G?t za5*C^4(!5AXi50(D3lq zNl#7ff`${XMtJCPQmaJ^b3r2F<|dh;j`NVH9LPkYF5=^|gqMq-&2x9Zo_y)w9qoX6z1y=mmuTM^}`8?O=UYMN?Q%XIT_zimtraeh$#^ip#AWM)O;&1_D zfPfVOX;hR4RNUZx?4!82I34Z?*ba;4IVi~_B_$Dh>0x<>nNZkH@baR)XIr?3g-l7Y zgitT6ik%K24)h7q6iv|j`Z~QoGc9wf*2v+`rOh3gJnCkTT4* ztVvNs{DkSg)^B=aR)L+;7;}0m&aJzqy80Q0@bIVLooIOVr$Ix2LV0(k4Pr8&5977x zN+(EkAsxlQC;BQU>%6G65!eH9BaazQy#kj4I*#RD6Vw}U14Dy@PyzNKZ-2PG!Cbr`rL2OUsx8>APfjie=|5Y z!Aak}dsp0TvIHC%o;(CIMk!BWnBovB_0`pv>EyX1nuU#F^n=5jG}D0D5ab1hM?3$f z5`O+{Okk#_rI|qLMUn-TjFO0({s&nDowJcq7lcA^rsWuEaO?K4f%VxuX9?Q@%n}`J zj{h8B1#BuVmZ)+ncN$8ie`Lq*gO-uu>|uWi8koXdz*IrJGeMSy6rfn46rmIm8mft> zf<%ifq034AG$MljkvtPqLP$u+n>PYrs?ek1F~oRkHGp_KcOF&>9ZD2ru=nxX_w)kP(M;mJAAsU)}heaNmJ%c2aisHEQ-dQ%P zg^`wF%)3BsLaItBqkK1i_K>AQ3XBT~HE_tsg@kSZVf-ERCh6hOpD}na+LT;{&BG+= zE`Xhf8H?uL`22Vd9qNJc&@P86r&#RP3IT8c8Ld7@rT7~RGCphBzZ{!eJT41yi!~>OJ~j<_^s|$rmvYQOBsHOSz^CYo*WHV7$_3}NitrG<8R))`TqSou(JVnI++6(p3E%?}q_{d4DEg?>o*o|F8_UCReng2n{ep#sbkd2-Zw;z_8@gKP!cb6^r04Pf4%$cfl}=t6K3hjDV#Lq;)Y)KEy$ z$5mH7;zZ<7n!^OgJ2?gtM=#md40A1hL+sjlwZ>wV`Q$+y4@1MCY75kHLGCbK#&bmvS+ zOiVFwe6vaqi9`H>se5b{xU$j6AfhqYg*XLh!z5p;aKz#KC=@Z=C7;1Z5X&wOgY+c|OgucSdk&Co_bfHZ)Qy2} zwnmoWC&alOyLN$Y;HC~ls7Sd_9}^IG15+O_4KfJq0Hy#1kew3~6ER+ee>)f5!WtpZ z_5iRWNYOgr`~W11Sa@iK0Wi>C;p)(NoU;F34devB_%P%4!P6M<<>cZ*h5HG04n=Q$ zZH;75C%K-l!H0yd5Dk?E?i|$@RrV)lIj|DAH{7HXx+NzkA}0IK9E0Bg3kABGt3m+( z(c`;WT3oye+{_iIm9C8;D3Zd7+=0i41w_Q6m>|-Te1)NE`kUd*oBFvD!%R$6OaODE z4%0C(tSk>F@I=%Cil9KzP*Z=6mnuf()Jhj-XP0LWhos3PBg0hs?!(+>xB*IrDN86& zSJhn@F*3s8BaxAMa&msMEX=K#(ft6Hps;XS z654au&!1p9!ov?%Ibnw)Z$K-7#F&zD-^w7UlIrMDwfE(m$jy9wt~YO5(aC4DMysSD za)G0q%gNGDX{Kufj-s(lp?6VK3{YTmc6Ei8du;F1H@mhx@8IF(#XQ*pNy~$8-QSD^ zgaELv5_2o<3)EmRKr2Cl`K_-=zGrE)I(m9-Fq9*`hhOW(#no(y>K9GaP~h8LJLnvt zR0%VCE_M(ehXLRZ@F8*njLd(hN)k0*8y1Y>S}=G>n)Xs{!OnxbAx6OL9MoM12|$%{ zEKM+x?A=)b7=&>bX{38ZR`|Z1@B~2-JnY56B!}Zr-E8PoTWEq(^Yg!33a%^CcBMq} z2!42An7KGJLoeb$dbT!SpJ~DgrK!nGNoHhZl%i$l;ZcNf)!A8~;6%F)BC)8j@EOGj zu-mmfB9v;Fx#W}4wdrQ)BsXzVlY`Q28#~3YcVucBuod=_OYoW?now%enX%&RH?Y|u zCJhc+2{XWi2%`>?oO?V+9mgSeuqgS48_ABchQ?^4*CP_Yn@F5XoX-BLyY7F5xk3s| zG-7TuU)dv3!?t{8xiSm0QGfNfXZ1so3^!^{__LMim1p=kI;8vCkE=@SUZmDBGyN zWBkF=Ktwrx7$UtCmLk5&Prx$aN0(*w+uWTLqYWhI6&sWA!sg6geX#uoTXP6-%@HqOCP z!JnOe@~+@r=Y@OEA3mqxY;EP`)Z1NeDI5}+e^%j@k76WEPssC!CQ%#wCgEz?Ch{TP z>3hKa-fj!^{#_i|^zc#FmUHrCU(z5=y&O_#osDrFJ3KkJ?Y8|xQ15x)>O_BpCQvlz zQ3j`y)h-42*$2)rM^-_qY7|u{_ajd34HgZ6b zJ$$#{Icf)jyKzW{uVcfX%*8gb3>yu0)jO^B3o$q1qSy3+Ysx6YiKk_@Xsbnv-R%QG^I2rki# z`0dyb8tKw=UOdFNCB)j5b0=71h@RGY2FXn&ViCF|_A5i1`@j>^7upcbRoGcAE|lAa zZcR^mZ#{VWZM{^j5TS%`7Y~~4zP=g3l_>9sdk|=z)(y6b80eJyJedeRke(!d_Ho{A zt-bgs+j{!tm&BmVFU5PUU@jtTM0V#Z7Z23w_D==*JOOi0FnM@7bJr{TO{4(2V)jpR{;AI!6~yQ<0t6&K7iIBVoW zkZ35X#^|ch(W0WJw~c`01-H?M7tFncm`h`W}`rqp)R&#>o?g_2gp8VlG&Je*HgVFtlCrVO9D_Joq&Y7 zJs=gtN_qWo5NQ!6St0;}V&M_O=aVQQW#wYe1$!SKY1I}Wav%hFUV~e`2>fpqY^<%- z5~QVIJ4hQr5eAwCCh^5_J1Bz~asa6at^pQJaAS$Se`+`q9J&f2#KE?c3B-ppA%GJ} zO%mKZH59ycJ{W0)BL&pC*)tS8cd&HAs&$sRfEmCqTjUrBz1jU9CP@5#=d{c?ZXK=i z7;kYER+VTtwze&J>Uc~0QllTkpiDa-FPyi)5QVUEqc)M)6&O_>>}Q%ps{|GeZ6!(= z(3UqK0RV!XFoV_~NjyPJ6u}E~1rG)j;dlx}tRjSY5!l$^L{UxG z21{iJe<=)E3aH(n8>_3ycJI#7=WXAZ7F0;pf_ntHRa0AE|5-vpLX9PAdw0PVS~*SJ zJIX3%ona}>FR!%D^M-d8%f!XWIXyFj$5#YU>fkUAs|v~G4m#EB)BUF>E{RcwCHJxsJ>y%w~RFQRwH^s3ipz`g`gl~ai?5)9ez1#hz1oE6&p_h9AI(BnT6LtEo1j!XcsICMrP3G42w>ZPWM<_%F#+kP;TIC zEpgZJm#y~3Mn;^0&Q4C6oYXJ9?nTyG=i%O+wW4L6_ zNqqk$(nx0g=^jwgsfyw3Xvn|T){5h_DJ?B3oQ-L6k=m-j5RUq&EY0LE=;1MkJ3U!E zg~lLND}c1TZTEJmwg9TGgMG1!7Ku`UU)BpAXa4fFTnC~cj6$|eNjTI*gZdQ87s5Z3 z#|zIA3@GMM&|35HUBjjlR`tb+dFa(qv9T?A>%LS~sYeO=^^5wOf!ktNjmE5oYRiB} zE~A4l?5uQkxhcOxB*LL;>GN)YSHR326D8%Duq=y=!P~cQH!NAEgVLL5=bcA>R$jI`AN6)sHeD#%3r9E^AT|sD){$C^p zE3>TZXA-6swuQ?SvHN=ol6aB^C#X@GrQUn!)S-QmfH!R6GB<`)oSkR$m_VQsp&F0| z416~X(zP+&;owTRy{T~h`gIKrN-^8jr6rI8z+d3Tv*5A>+e@P7^mzeC7Cpsd>WBLJ za^P#hI{@fU67ybwJc6AIU=@7{1sNF<*%%0M{Dz?QvF!3P9JhwL-_~{-ULpyJn6weJ zotI-+IX90mR)N|I;|8hHYJaLi0H6mfD;~%Q2uci+w6wGw=>Y)+K6C-84rmVB9@J&L z*o`!tSBHIxHDbxRx3WI!{})4mfnhvpE(uEOcA*oH@r94SR3p0DN~S!G`Um9fWX^(v+` z!1i|JTGioWE?&IY|LYfoB~sbKyQ4m#{j|jqI*Y~PBu0*&Uh!yJYAQ(Zqmu3+`LyU0 zis1PLO96lDK?Vk;A$m|kE-u22b0|R=s73G;p50F9l`$`;;fSom89oYATfxNRBna$b z_?EFGI7Vg|G~zKz$Qg=kVF0i21Uo{M1h>u?IXpCEZDobYaKb1AV zgO|n`cz#!dpRc)T?WoHodG0}&pzZxsQGqFmv{rkx8|WZl(i28i!>$m6lz^PKkp<<_ z@7&om1S0ril;v(51me8a4N(#=y4|CWvHsc07^~)AHz_YY}LiN$0X0&E-|*=ElT7B!Tg{ z_Tfkcwnh4H{mg_9re`}S%dv@oJPg1Nfbs@0gL#zoN?KD{d3n&$5~8Ao*zBa~iW1An zn3#-~5tJ7Bqp10DNiSh`zjLN{VuEyFCKN)9^+4_uJdfRc?HZpV|JFOVjdpKG`YL>5 z$omvpD88VH-M@cdgSv8V4Fr)K%YiB<&VM6jL-j zSTP{Dzr&M2x;WVbPyq)gVg_D9qNl{;B1cYh<^a8x z^u(WK(8JMb6HQO&>1B_GEv~=-AuZ!k<8*XYIO^B}WBV+D;EPj24&zu_6?QmrL-El# zv%pf&0O`HP=_Z(A<)^%urvSN)5w3md92lVYf_x3zSzaEdOFc_Bu-l-qZjsXj{);a&~l6MRHI2MFB~D<5x-t zbG)r*LsY_}j+o}Ex34n2k+I7oiUwDRY|b5-8NQyj1>F{BYc_xU@Whebl))BhVY{6d z9zP+-Z`Kby*|N)&@WlRhTduam&SKhUqZ=)i8yDsz z8dP@L{ql%6DrPPEA-#=$z0JhxOD=DflV$XLwjAGJsD}b=!hp^!TalVVw}SMind4Pg z0(8=9lE#~2Q$}Sv&RY7crdD$ocm@L4vi>eUZNO?C6cm(T9LyRxY|Ztq>R{9R+s(rslUfBJpKCp3as8sJZaJs(T#cA=XHaRu zr#iy4jZ-%6-rZW2!@t2|4cd9>&po{!Q{FDyf%UDv;ng2QAHF>w{XP7OpKX=D*52uI z{#M>PavUI5ww#7)1Rn@Y+?Z;C3IXo{Qos~u%m6$=HGfZ%+Y_pg58ndbKT!jmmOPGI z&d@ypDjB1A=mYMUVa}!(OErn}p#a{I3%IyOP~nly-$OQn^gJ*;JUlsBhVp?SBFv1& z#@+(-Lt%&B4aZb)KUgQoz<;%2!(!K~o}QjySkV&L)JHGCbBhvs3uovFtC9>7rJgt8 zU`CM+#?c4={3D8EfdR}x$6{m+RVUA~CJYM-%L{rn56mE=Ul?n7@ffZK^e{NBgmhK| z;4KJtfF1+hrzGHwdlwg9fu8`>77z((P}jqU#I;}Rx@_Qz0!%H3U4nTYxPQNaAF8V2 zke2pA8Ksuvil~Lkg~#|3Pabndr0Gm|_rkoqIp8Wx1_Pu)rd|gVdXYLJCI(m70*Dft zd4PrnXHYm}9dPLYP5@IsUg?aX1A}H@3yKl`qexx@jHHYqr{jPNdLe5ZS{3#IbCpm( zW-y8fW;|3)?jRKv4(@@Gs=QoAP7`Z_0)pc;a54jgN=xKOc=<_&yJlHl8XWs< z1JnYM4@xUz71|cyMA&t%gWE=JfoTn^K$>&xuX>DQCludGLo)?#fdtU}#_T-K6T^dN z5_3+$Tf_Q`^^KAA$b}b6z3%AU*&x})gLY--)0{ZCSSqgs8YL(x;`bTI4*VIy^9J_7 znKr2msSLeLyK8}qF{eO6dT2F3*~1NHI1o+h>*=>mm(@fv{CQxW_?}nvA(Pi>o}GV<~Y*S^Z(!XeO>2uUgve*xNtqo z<=oc3c!9l}bd-=a(1gRiIgJOUDg@FQSl(;N&X5+QB*;rW_uX{QZ0UO!`4}EGX=WGu%=qFld(LwXsO}mE?;6EqucbF@kfFVz@6hPJD#pp zmX6Z5-_kw40e0h)qVC9E{ebGE;60$GwRNkFO-;Y5 zXa%x#Ggtu9q1#1v6{bBvjGdRCf;MS)BB*Kq_>lv0fv3X}ZN#^Wpj+Lt9|Gx9(#WQlvlObvFK!xzDuxM|!%6M! zS>_E)hI8IoiD|yg(^IR^-FOU|B>95Tf8L&@?bGuyRT!VA!h`T@g-Rs>@SE z?~M0O4?@Af(}9jEjo5>+u_j*6Ee;;L=H?A4C2am^MSM{{}p33F|fM}1b~<+j~6O2o9E~l{y@I(SG^QgQrkzAVR@dw&tj@8;%{m?BMl8V z48r*M2Pe4O5I5<`rrq=qwpj+U1-P}q zBm=p^)ZZUoe@Ik=3gB#W?7YTJq!^8|uGa#HLruhb-zY}~y0k~HON zMaA)z9qd=f)EvU3G$os3io`}3SwZulle2Yl@*~{SGnPuKkSNjZMoL0b7RF)p!6#2X zn0SIsNqiK8d6Q!s;l^~vj=h8igU4fONukJ=(x~9+Xa@NCF&U%ER8oHaqV&7GOonvB zie@t1t)ifSQO9D;4SA8IMr4tcIM{h-RUeLz7d>cbSeAv?NT7zWX;?p*=|9I*6%&8g ziH8`aqrC(lO!lSIPFCT-SOyM56U%8<%X@StHv2kpe1-bJKjW=4fq`0Pg8MKxD zamx}jmfX$3GE%JwY2%$jPNonK0RhN9RJ|~sOny^0@kv{F4wN*Gsi-iWz&MbtWy6>7 z4s2}p-t@q_{Yj0SuZREJ#Af3qN#^n}nWz(zrA|OG*anA!i-q=K1>=>*N(;1()_YY< z4>M1Z{a6$2iKRx|W7>geeo zy=jK`4NYU74r*pBghkFTvnD#MUE5rfTe@#^@!}xzy9)Kiq>wZlpzQYWHQbei%`?W=3)8T60RhFi1wA%_x0@qwdoMGmleMWct_T`lm-u5ibGQQB# zQybl}rt6za2$X0SvruqEZ>QX!vb+1-oHHK^-p&7$ix1Uz7Tg;h&%ByNFWPCgpXR)u z_Q&j+=9cDy>KE!A1f$xOxIhJ!U}s&?K@&4Y;y>Mr`WIzRT<@-r zbLo6^?fKXp+8gHFi`Q)WEq_w=TfdT*?kbMUdPcmK2=lJZp(X*kTQ9~-0$QWBTld!u zQ##$#zCJ3rqRngTF^6VTJ-MWt9!Q|WV`AVb@i)N`KnQUQ0(-awX{cNfkS1)_^^S50op4&~I0D{f4rl*Sa-tR{G9|l}OLkp$AR}AHeEI+Oe zcE>rLRs`A=qy$4dJ1Q!i{8I~lvXjWR%}9}r^o)Gv{^@4bv;dPw-n!K$ z0ZvWT<-gB!duDk3v$u@bru5k+!}3%HMt3V83H7S#S$o9R(6w|wzeV^%67L0*%T7m@ zMuMWtvFSmuNRgUk0HTfWh7DVtRZTqrPtI5YUsMPZk`6Jr-x3Hh z1`|!CK6mFKBJUAGt zhuaPBffKsIm=&*CbdY?GFh4vih8$RdMbeltiD0N{T8PjomEr+L@}Dk6b8RzsuBL%Ib4rS#L5W(S=H4tEQGRj0Z&;#M ztj+Pe4ODAoUK~yAW3IY+Gfz))Yx2%by?RU#`wrR#J|b+l(M$;n4vx@P zfhSY(#ny}EqdkV={~hLz9h;Qzqr4obFkW3(w~6l^C@()M)_yaFRFuZXoN7SGkGoHv zI`tZS42*?!4n!!->=-gyJhnhhJP-hn^h{lF#d!@!8bsLgYq8zEtn=^u>LzE5#Mp)J!ul_>D@HLKHH9 z^Db9xXk>&XR;RJ6&U@OWx#!Od)u{T~p`m{h>V@teIX#XxBag4(czDv!o~c@W{SvXY(s$yz{)=}xlxrTju%NWlmD5AQelJ?7WyQT=hV~A+u z#@C@*Ou)v+*AU=dgI7kDXHp#FHHHds&7D&*6pdx-%q1bJ8#gX2M0YW86}b`BA{^rr z(4E8#`DF1@J=_EVXMOtiwJVr(weZr~?TWQ^wkZxAvBQ844hE8+zL9l)SS>QDjgepT zuV~j|+F*&Etiu-+t+3{OZk&!3?J5jLzLf6XC5$~`>t=-37Qcloh5>o&u3}};% zjmBRiV%Z;9wYE54bPj|br4+#WcPfy}(9qDpAcu45nZvG}kH0P-Mm4OS-49mGqp>x6 z_7#>FPZi&|yAAIlx>?hrq9QQI^T8QYm>y3>M!-?RK>?RfSDtd_%sxhLlZP8IJqBY! zAB;h_EW{RGezwPN@fM$PtrTkhdf*50*_8(={BkMac{WBGyECW%8c%bWsrSzg6bQB$&4wQDL}24N_X;a1$Ggz8()BP1iO*Af5@+Vrb%b z8>^?c7{}xPMF~qckF(rOIm0rFA2-Bk;6{rSrH}aKMIU5Ca!k%_i{xtP#wjqrjTTPEx^qtC-dEQRc44h?@<|BD}oJb#X63o|Ki8u1dd6>e@p+qVlE7uEuvbWdpLwTcRKx#GxT zWH%JwX$OaF)`R41FR41^Gy$9x9`42VWb>(@V~6SoU5wV!qUS}Qd!3I@_v3BfFgEcE za&c8vmIn9vM|+g6DvFL8Xo>!CU*>T zAIP@S7QZ;SrTt~DjC%^vtH$T)ON%`N0mK5VoV2qVvDE1-xEh*@^!L1sM}&C=PciA0 zwkS{BLVyCAv>+PA=H{~2w-|vcDG6Rt&9S9vjA-6oLb**DiI02@dUk#ov{#1Cp}4rs z5C`IJh=cl;+ED|C>OF>}zku?C1tNsdQ4khvIJzgCI(4x^`Z=|k% zR2cqT@Zpk(1T9a>e7Y%V^HT3{^@x?-ZFB&Cxr{TjbG;6&!5GxGB3OjwE-n@Z!wbJ| ze}tk1JK0F;C59Eo{P1B0St;JN2vF{m5N1{2NL-ec|R#Yx|&!J(JNLiC%NTCp6^ac(bj-A^z zw}|puVmsW>pHDiL*ethAdc8B!uEegS`|0V9c|oI7ThiPwOv~Qj;}P%cv&F-I%fbQE zQ{W6DUrp+x5L4v53?DbYIL+01Y`-ecD6~>}a5Px1mW=-GdFBx@02#FC6JsHW@#Oma zG`2D9Oi^pTG)3L+cw!>MaQC7s)*YTcVy(CL45bx)RumQukx5pRN$!~UaJ`sMTUlA4 z^#1B6yNX94%xE9EX0h+%?WW%L_m*@KS4ASF*CK{zwMBuer@IiB+Rk;?Kw6 zu-kL)kDd}Yr|Ut)fJ4{Jdm8g5%=Zg7&OVorv{@y7Ux;c*IbD)(u5z)}HY8R`jtT&`yo^>&kG!5UnJ8}?aF2_??bZ5$^z0hvJm z!5aIWV=~mf)NIb*yPlFABn1?Jr!95PF3{1pj`&!fd8*2jCg?ExGdhPNBlRJMv8@M* z{q+~dI~FGoSn6mDyBhXF;d$CGnSH|l03LABDNDD31_1=ugEgJ9Qw~p(DQpd!;Tg(u)B%a_Y=oHwdR_(>R81!+pNhh^Rn4h!N!`e!|+OiZ8 z3kCIH4Xe^CSI(ovKsiJ~!4jsXj!sd>ZGg5wKFlvL$U^;~k+++(^FPoe#ee=O^pcb} z@Ocr7Y@`N0!D?JOQ0UE_TBy{xbP7vzsnpbtu^}fvKcj=`y=3x35;o$kC!}ZuV+y4C zDGsD>WN7VNe`U*w#!^*SlfvqE68|V>0&plTYC_xYbO%S_#1k|b2&%)UZZxEw226{K ziz83Fo<(Wkseh1={;6Y1U|1rD0wkamBv2C5lYD)x$wVX&Aw8RT zXf;z)`qpApj$Wb1CDgy;#n1=$z@^`1)O)ILa{?6rKp80`(9go!I&{yTDFJQR?4E~P zWr;1Kl*_KL^k43dff`=x<8z5SeBnK5N_LS6foyY-->Id#iMc%wHBMN8Y1c%-U4)Z%DZvnrUczdnkTJKz_MB0ms#%eAe#%gwSc8-?p z=A1`IM(W9_MU=5jv+Qnz6sYk^D?`ke`}<~mwZRqL`t37DoZ0Yw24Jd OYiVXPGtG4A)_()gIh9QS literal 0 HcmV?d00001 diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock new file mode 100644 index 0000000..652a159 --- /dev/null +++ b/example/ios/Podfile.lock @@ -0,0 +1,28 @@ +PODS: + - file_picker (0.0.1): + - Flutter + - Flutter (1.0.0) + - image_picker (0.0.1): + - Flutter + +DEPENDENCIES: + - file_picker (from `.symlinks/plugins/file_picker/ios`) + - Flutter (from `.symlinks/flutter/ios`) + - image_picker (from `.symlinks/plugins/image_picker/ios`) + +EXTERNAL SOURCES: + file_picker: + :path: ".symlinks/plugins/file_picker/ios" + Flutter: + :path: ".symlinks/flutter/ios" + image_picker: + :path: ".symlinks/plugins/image_picker/ios" + +SPEC CHECKSUMS: + file_picker: 78c3344d9b2c343bb3090c2f032b796242ebaea7 + Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 + image_picker: ee00aab0487cedc80a304085219503cc6d0f2e22 + +PODFILE CHECKSUM: 1e5af4103afd21ca5ead147d7b81d06f494f51a2 + +COCOAPODS: 1.5.3 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 1d98193..b694a11 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 94EE95F5D222CC3C902F7AA8 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E29C2B321AA1B6738D05DCC /* libPods-Runner.a */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; @@ -56,6 +57,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9E29C2B321AA1B6738D05DCC /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -65,6 +67,7 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + 94EE95F5D222CC3C902F7AA8 /* libPods-Runner.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -91,7 +94,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, + EE3450EDCED914F636FA6BB9 /* Pods */, + BDC8FA085BD2993252DE5757 /* Frameworks */, ); sourceTree = ""; }; @@ -127,6 +131,21 @@ name = "Supporting Files"; sourceTree = ""; }; + BDC8FA085BD2993252DE5757 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9E29C2B321AA1B6738D05DCC /* libPods-Runner.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + EE3450EDCED914F636FA6BB9 /* Pods */ = { + isa = PBXGroup; + children = ( + ); + name = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -134,12 +153,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + A3515840785C8A9829855BB5 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + AB4C7D1508951531E70F0A36 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -228,6 +249,42 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A3515840785C8A9829855BB5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + AB4C7D1508951531E70F0A36 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 09849c0..15b1edd 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -4,8 +4,15 @@ CFBundleDevelopmentRegion en + CFBundleExecutable $(EXECUTABLE_NAME) + NSCameraUsageDescription + Used to demonstrate image picker plugin + NSMicrophoneUsageDescription + Used to capture audio for image picker plugin + NSPhotoLibraryUsageDescription + Used to demonstrate image picker plugin CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion diff --git a/example/lib/main.dart b/example/lib/main.dart index c1b824f..c65897b 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -13,10 +13,11 @@ class MyApp extends StatefulWidget { class _MyAppState extends State { String _path = '...'; String _fileName = '...'; + FileType _pickingType; void _openFileExplorer() async { try { - _path = await FilePicker.getFilePath; + _path = await FilePicker.getFilePath(type: _pickingType); } on PlatformException catch (e) { print(e.toString()); } @@ -24,7 +25,7 @@ class _MyAppState extends State { if (!mounted) return; setState(() { - _fileName = _path.split('/').last; + _fileName = _path != null ? _path.split('/').last : '...'; }); } @@ -45,6 +46,32 @@ class _MyAppState extends State { child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ + new Padding( + padding: const EdgeInsets.all(20.0), + child: new DropdownButton( + hint: new Text('LOAD FILE PATH FROM...'), + value: _pickingType, + items: [ + new DropdownMenuItem( + child: new Text('FROM CAMERA'), + value: FileType.CAPTURE, + ), + new DropdownMenuItem( + child: new Text('FROM GALLERY'), + value: FileType.IMAGE, + ), + new DropdownMenuItem( + child: new Text('FROM PDF'), + value: FileType.PDF, + ) + ], + onChanged: (value) { + setState(() { + _pickingType = value; + }); + }, + ), + ), new Padding( padding: const EdgeInsets.all(20.0), child: new RaisedButton( diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart deleted file mode 100644 index 8b7e66d..0000000 --- a/example/test/widget_test.dart +++ /dev/null @@ -1,25 +0,0 @@ -// This is a basic Flutter widget test. -// To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter -// provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to -// find child widgets in the widget tree, read text, and verify that the values of widget properties -// are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:file_picker_example/main.dart'; - -void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(new MyApp()); - - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => - widget is Text && widget.data.startsWith('Running on:'), - ), - findsOneWidget); - }); -} diff --git a/lib/file_picker.dart b/lib/file_picker.dart index 4868fc1..8987b37 100644 --- a/lib/file_picker.dart +++ b/lib/file_picker.dart @@ -1,9 +1,35 @@ import 'dart:async'; import 'package:flutter/services.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:meta/meta.dart'; class FilePicker { static const MethodChannel _channel = const MethodChannel('file_picker'); - static Future get getFilePath async => await _channel.invokeMethod('pickPDF'); + static Future get _getPDF async => await _channel.invokeMethod('pickPDF'); + + static Future _getImage(ImageSource type) async { + var image = await ImagePicker.pickImage(source: type); + + return image?.path; + } + + static Future getFilePath({@required FileType type}) async { + switch (type) { + case FileType.PDF: + return _getPDF; + case FileType.IMAGE: + return _getImage(ImageSource.gallery); + case FileType.CAPTURE: + return _getImage(ImageSource.camera); + } + return ''; + } +} + +enum FileType { + PDF, + IMAGE, + CAPTURE, } diff --git a/pubspec.yaml b/pubspec.yaml index f3a0388..54e0f04 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,15 +1,17 @@ name: file_picker -description: A new flutter plugin project. -version: 0.0.1 -author: -homepage: +description: A plugin that allows you to pick absolute paths from diferent file types. +version: 0.1.4 +author: Miguel Ruivo +homepage: https://github.com/miguelpruivo/plugins_flutter_file_picker dependencies: flutter: sdk: flutter + image_picker: ^0.4.10 + meta: ^1.1.5 environment: - sdk: '<3.0.0' + sdk: ">=1.19.0 <3.0.0" # For information on the generic Dart part of this file, see the # following page: https://www.dartlang.org/tools/pub/pubspec