PK 7N|vY% tensorflow_federated/__init__.pyuMo@#|i+驮zݢFveF9 vK>Hb;/|H:vzp_fsX+=j7ן.X#QZeaᰀcٜ(g v8)")h,) 75|` à:hR9,Y(AV7$dГL&ʜ``SyFW;WeiCeesR]9Ak࿎ ך 4"cF ǜ!GZUAv):CYt>p J N%q`kpvx6>w]r3gH}7-A|P՘SI9%NTzB#hZ~ vi%'x_Q,;PfBfQ-iٹ`zHex=3nFz:'+<{qmxVrx,_Ôi,[!} hOW 3N-K4OjdTŻ1&nCQgV~~0yn,3-_9C}μP^zPK 7Nej&tensorflow_federated/proto/__init__.pyeAo0OɥXmO=4ѢV=:0Hڦ߁fVeϛWسPv w6Ǝ6EK(H{v T!x=^KAJ.y6 &RZ^8Ă=jV `ҜmJC;?s1 \,)(Q+[9՟uPaW_aL׬_6˷߄xyyG{v4BY*I0;58ƑԂǁu: ʑTSL,y)e#͗xH49-~ <'c6!{Li${4{@2+yެ9R5 -'P oKɥ^5Ƽܙ^*qAPPK 7Nej)tensorflow_federated/proto/v0/__init__.pyeAo0OɥXmO=4ѢV=:0Hڦ߁fVeϛWسPv w6Ǝ6EK(H{v T!x=^KAJ.y6 &RZ^8Ă=jV `ҜmJC;?s1 \,)(Q+[9՟uPaW_aL׬_6˷߄xyyG{v4BY*I0;58ƑԂǁu: ʑTSL,y)e#͗xH49-~ <'c6!{Li${4{@2+yެ9R5 -'P oKɥ^5Ƽܙ^*qAPPK 7N&0tensorflow_federated/proto/v0/computation_pb2.py]{w:O݄\cw'MғY:I'ݝscr.֘d?eKH}N'JU?J,T?~.*܂~*~fAG8x.FE88XAiųU= ]W0<Os|^WM2P<.aT\>/ *%(Mfo?E6*N/>T*Cs9mÃ)" tֽ=_:9saB8˞rp( -gt|\UN7_@,=Z 죥lwONoH"G?=wO \^'=/v!.G}L mhfUO´ ˋB'CӍ !d<=5'ϙg":c; "a-oʯǏ]W· KDwF[a TBS³i?ƕV)eq%4^/".q1c0cהUBj ">}X@jJ뿥 qN SQV2.w Ζ o%;T[Bg[2)¾ n0R[^L&ɓS^:sA z#J>pk *H)?-؏4` ,݆4Y GX' Z>I첚>vrqZS5νCpˆ$*qm?]ٜ^V-.g)l %hMvB)ЉGIKUU}y+!JHZ A I}eА\\~& 3q@zz_BHHUUMH}5ʏ8j!a:f,C%HGXkJS"Jt/Cʩvz乛MH< 4auF]Aԧ 15 n1d"ʣZ?3=H.ޱYIXa NRaZy۹pqHqO!xH [u4bK:":U0``X^<K40 ?w0Vr,P̞ f-M"<Xh/%=d0E-Lf0GB9q7b Šg (U^ ɒz,nR'lH%\EQ\Ǥg&RLA\ p 8W4H9 X6 B 5Y!~VPB&_¤ȃ?Mem'$A_ }H',WMf~B;hP䩘E+!~lkzBfu#Ɵ;Nz-(sSaIpn F!w:Da 1F+շ%t>4d_cL֛d„At+d܄ދWp6n!Ľ0C_<%Ɣz"iBqLQ*U~IAe7bAP,UQd$X[(ŏ{R۫߯Y߁Eգj]δxI:&LDIW:ǂ+ԣbB_CYBHɦGEԈǕ".Xw`N}Q:ZK4d;~gK|nI4Me~wKmO꯳۫`7T=1L` )&C^Y-jq'l ~z#mp#t ʮٖ3iN.wζ_\]f03t$H &ix'tiyeBE',#6fCpRw 3pfPt/Cv P9 o'ЁVƾy|Z7žAgHKglrT4dgHJ2n~yBE'1SQנ7mhzBF~W:qd4+#^a6C/Ҭ #_ПN'T4'AEpl {+];[V^$Wv~!~c:E gw` DҀoq1*P,#C)E|kV3WA$[GXOWlR2dꪢ\5+M+%oUjfmeMc ~/W r8-r$*mU@R:}:5^8E'x>)OhhcM"ШI?hNM.WRCp&WA&.OJB|tbae6jt/o>#'oM6IZΗYu6t{/˾w":&;rQ𧙁..-I{]3>ʣ 9;(ñhF B9ݸ.m\WRG+ "S_`+ijV+Fk:'ݞaob778y| Zm)$T+Uڎ[XǎLcN, IrxḎ"4y=t3 D;DBd7K"+6Z摷bz: gG?V.|:330ԕRFPrd80HG[L;;,#(d nĭ6`WVEZ=]wrqyvqXvi:WÄ̱sxW/)W~4ozH#^ 7<\yV_oQ4G/K|;jsqvԮv4!ܕַcĀ]dm?eS~TB1+HmSn7JϪfݤ1ټs?;Jrmg&qUm=3!.Ur׍[^8;Gǻ:9pvu눔yoݣk[ NvܭZ1$B$!KB"@;$~\r|Y9uTʏ(67nKa@ޱwsqy{ag,B&h݄jp+ զBҢ {/'gsKHlA,#,Xr4G-ޡ?R.lNx{һ:o蘼ӛ}bNu>eddOkb+/;gTmNp~["-0 /73 1;y6Iþ(@Zf>tϻ70bxn-yf'F486T/nN ANՅfLP x1|XYPQHxd#PoH^(t͜.I;KE'#ޝ[ɈFE61Ad gċohl=@v~\wcj^]dC]lf1r M_ZdU>7Xo686E pmJn]7Yl;_rl%O|hpMNk̏ ʘo& tzqRl*|*Unb>teNEWD4y lIM)D KwSA9*̨7#IE(x*Y{%l '8'f e=KYIJMz&ZBZ1<ˣ'D,'A 19`-x &1z~ :z\L{ u{yv/lsD'o Zbg I>!*=)#{-Ѡ|¤U ۘ[=L B\[D'][Pvz{r$QL]|,ɇ3SN͎0H`]\d>}H[eV >ddhzX܃a>!c@5"܏N ӱ :l?PK 7NI<m'tensorflow_federated/python/__init__.pyTMF WKZx鞊-rp6VB.,e DӎfXE+_,>rG\#%oWWp^`/!= (Bu%jf#ڄ+: !IC7yp%6| |@0~ rа R nZ մ3Y t2S*ŷdU8`v <ֶw77]ׅl`*]߈1~6w(v1Y?ŸQn H2՞?~X%'*52-%kjZ=nmWRnU5$xCVV dYӘe$(AF[a%ѷ&* rE/2"k؆w0G YB1vYO#Vj8 TMژ&'vqm^;^Co뜕ckԺ,ѱ=;PzVqBi1Ikg,HHt[s)*n9@681e1?:fܿRPUb [b1ALJxV~hILzQ(:j![_?RN;Ym/9S2GxE3bK*#󄻳\2>PK 7N-S3tensorflow_federated/python/common_libs/__init__.pyeAo0 sН4ƌ+zT& KDf@bH||YO9uScmuP.ƍb@6HKj-]ҢJX2 YKof$R8Ln^M`Q,(BC_5z] )Fnyj"rpgVVrj@|nqLBn͛2nn_VB4lf~łsůLx'Mvo)G'lUK+% WNl],^@.fy6w;QohKllP/?m< }Z-0'CZrYn5woBSmdErXb@M.09+4?3Da-yM܄% ~ 6E1h[2Kp?fU)THNXy+:YR @&[lؗd"e o\&j6{Bʙ@ 힗ERې|)nPh.d*DT4r"®43z-B:.hU';Yb : B V`*L#Pԧ{ QS5k]+qrODt ;=71QUT'Z7N}x!FT{}rL |B2u/rWTρ<#.tc`d>d3lvN;E.lޑe ̈́,i[M0ץco*^\fNRjzwn4XܖH< RIZZƈ!٦lTW;?6dZ.Zqb[B&uG0LueǧF e&R>Yg 'c6We4{r*ovK [Ud l-LLv>j9^@DiiUõrPLeQ0CP \geK?+JoAMYUYdTegU~h~I3!askc)i*؏hݻ.Xx0ƂeQN2VR;r›"rي$( J$`gZ8CH9JUa 7"cʉEf@A/4,u9%˗7HYM*B6 U6d`i;fzQUVbmϑm«=,si$՚7tՠ \yEP2QVMojf{/1@*P8'mhleG@OIqc^ @0)(6["AcZP;% u Ugx&2[TN[e5?& Gn-AA*jf[l$ŐR+ fIK%2M 9DפvĞ~ vR6hSBTp1`eq=҉g"F 'D ѨbwfEi2{;c28&L==]k?'Cq{޿3pֆZ} !6ZIu =0DnZj5vʼny8\*+0׀lW6dO(i-42!1PL; ūkJo_kVSjPtW"9Ɩţe3IWc4Eҡٝ(f;=bXB ˡzDJv-&n`+T2$謨f=>M 2a (Cās6TX_,t9ƏOOK|.cc_Wԥ2OrPTd؀y:2VgK[l31>nj! <@2kӥNu K#u+wᒍ6lK295FY:jr@QEª#F+Z3.asWWhCr %62׍O |aR5SuZH.=[Mk}6*@q2otIn%z}Pvuͻ!IB+azA:mD/$b01`[26U6{5~)?\@>uPRWV/D3갗gP)iTc(p搱sAu Vc_! ō2.Tb,9ldg锟 X^11·C/<ǵ6yu*XRZ= TxIo0XN%[TÚ'Ճbl,sz iJlLi*S~F21 '[t:'m6 7]zAG.1Ҡ:lTc[ZAڥK)FөYa~^)t>Quy}DgJTw/fcCIءCnVw>c&Oy;KhLڣJP';y2ўe듛vl7MN<3615LkDq;kxX5=-f'6sJ썼'7m#Qr+ĵ׽<) a(dvF _5ЉFE:5S/ZJM ºfo j5)]@yΗymp+lVئPhPX`tq_y^8㥫5Ԃ~! ۲PK 7NϹ "7tensorflow_federated/python/common_libs/py_typecheck.pyXs8~_Kl{q'6\'iddZmveI'Ru<DrmHA3xrBO$4rH])'l̀?beJ /iˁ0l0l)/^HQQm^dVRx?{usw-=Lj O*uuQAXCQTLA+eT AkD-ҦRjC}Kp1:߅_Çb~uͻb~{O0=yDPVd?GhwR X ]DU~Zl$l/(eSѼdj0ĩhtqqѨLbqM]8& ٺEX(2zY!ƘȽN,־ ӊh`?1эU2 F\[bhbD&dbR"+] #t-kNXKC(LmPŬhR`7Oac.|FCGO[llhdw6*peY#m!3L]f.F0&}#G`1\a{"`M- wWDR&{cm%DhW`nw" )*yG3N$R!wP-ZvM(|^])!s )DT^`8;tP:nW' 59eM` μ|[)Gsl'A0p[Y #1daǚe*x^'ފw D׫$È;B(dIԦ%v}  2iI f݂Rm~pR92n s,WޭNeo='ϓ-Vb*xJ3'[!-Ǧ.FKT=a {>jBk>QoGP]y'T{LDQh|nKBD DNAMdqui ͖&"x@Gr<\Vj~}%W89lF9]qq_qk3LC+%Rk>_G:xWuF}e㩃 :1H}pp@ibY3M8Θ<3??HKs!0=PZ 'ހx59/zy OގxO.W3|z"(.;wPsS'>检/"SmiٴH)3\)Nw!“^*L-޾w7㳏 1t~Fqw|iIpRIIE9b=呻k3#`td@КeÏC~ͯF{Ȓ%x&Gr<:ygxi 2dUmkriĦ&JW[⌸]/};u3?:b,KN6@KU~}Zjw)9K{Y'?FOpޤao쏘 Bj}7 jX{$GPK 7NprY}>tensorflow_federated/python/common_libs/serialization_utils.pyTMs0W줇3)D0h0QG20wV:)H LR7\ȲV<_8?{ %꺐k*fpQE%JUrhCEQRi"]EpM4;Be+V*5d@K\@*WeH,1 рB&Q6VY;qgiLuPWLݻ\\ 'W?*פV%D`k XbFZk y̚)$F2;jmQҋ DL:! &]¸L?fSh8\M`4r0hx. iES,"ɭMwd%<)%|D%(Qnj ah* :@NШ8+OFN, & Ȕ\AgƱmB*D˂ĊPڂ?rPTthW h̎>`F.e^`-QersKlskBBq%PǦ&ї>A h&\rd&_(Nc>7Y.11GÊ|' À"k[;valIJрF0't 87_?% <# ǹq7Rw[}l]hR o|LOշ:k7.Ub'ݘ4sa}puGk,/gՅmoYQd2ql2aO9#nP6#?G=`m5g9"%lgdBV6'M3hĭ Bkp'PK 7NXrh,tensorflow_federated/python/core/__init__.pyMo@#|i+9UzݢF QN tv w䨉rA;Kʂ0[h[iuX•nee$Bh׺=HbA!dŒnd>|)堠f ~!\9x{3 F  Y#S M[K2^j,3'a xS 8aGmMi}M妞<&Enc̝ I^D@H=hQjܓR+0 ,4dgjsK(؃A+q&w Apu$qz;P3-җr|=]kbU/<tڳ#zOwNS\!mAMg,T{Vyljr>YY35PUPK 7NMF 0tensorflow_federated/python/core/api/__init__.pyn0 y "l@teNYb g=L;lIӏ,i#"37n̕Q\V-X__/Vw1:4OUk"͗T_+]_="߆PK 7N&w8tensorflow_federated/python/core/api/computation_base.pyTr0+vȅdIK^z frym%W1}W!YoG!-03` %?0UAp{6QT-<`YL!jh6apA' EI`iST3NC2Pn:_\~%jbBc(LX[R0Za '!SefiY/d.;?b=&~ϓ,j$-,Y J5ҚUNp2QmFbIZlέ<*@~1 h z:^9|[>m9Z&ar17rA/=^F}~):ֈddj"yr\PK*jԕ04 K?E`0a&$g[qwuxa\vj;')2*H$q(m*ɶKN8ךdQTr2NoľWa}kdIvl릐+tđjLApG,!KӤB|CF |T ܸ_Nr&YsBT$P)ES.N\I24Xf#b:74\ RbSqex\꼩Hqmx;bNT+#'+h#!_*^o{B:y65Mi!\Up&+m rFM~g_Po5p ecjGt0ktPK 7NIE>9tensorflow_federated/python/core/api/computation_types.py[[sʑ~ׯ`ؖSY(\QtJ)*䜀$J}27%ٍl73͗G6"wR/mVFyP\y]TV| Y%\Tutf}R)mEN$PEV*rqx_'P$[hk $T-*BޥlEZlL%y*ŭjF1_5b$0:%|[DҐn(!iZxdW 15d]JUuI ̒[QT"YU5 |[FPŲM* Tn*5oxh+ŋ qvB".Kד˳ xsQUPHwe ( );, .e*u6YI*ndrD)њ5*ڨ&i΢/^|KK0i),k| \H_l\mǏٖ*6b6[M[ WST@k3>6ln> (fF̃K=5"$/½n|՝P,1rZ4K-{<[8#pM25"n5mg(3T!8yd^bgI*74fDw$x6  ꊒbMB?L葸كb}zt 8I&o$B-AD$ˬg5뤁E$.\fA-%1%_% /r~GBSD22">8JyќZIrqZUEpiHT-A( %Nd}gۂ\+plE4l2lnl dBL7I&DR3Up7e y1ZEPTND"p.r)+xd WxT gyRj֗`QQ-XYH6QU7z6_VA専-bڅR 9dihĩDb8 5F_|H-Iʽjn:GWA\z[E Rk!:GPbLxyŠh#nGXjȟ(zr, *݊)PI)ϋ\xi6m0Psy+д_8wV\D$xyhБ:$+J\/@8j\ZZTGd ORdʨu̠n5D &LRӐ| cjKI5IŎei6- pQԁLiA-;^WLj6QݣlzR\~9~{qx8 $a«"KxfuҨJךޢ|$PHBICNn 37z5nJN+;?8tx<%MjpdSŚ\BA)[!tk\Q&-"5R$Sʀ YG#xI^Ba^0Dq gFo_>D*,<èIIבj3yU*ndմJCLH ї*v.Ac1^@gK`\=_n<Wf2Uu4<썞5il@YNx>љ؋i5Z;72jS)N$B`4I 0 @3G%T 5#(g'j 3hBj=!FA  ZfSnA"rDU}g 6ke+3Z#V6`, õ-z* ӧ=Ph}6#CP ydJnώq;˅^8_qN.3?k (m͡FCӎΔGDup!VRFiK;s=Dvnp+h=% fuN-{%s=#`7iнp[KEW~4/uҦlYtՁ*%&[`'WR#xr3>,bsL Sz3'i1x8:G ﭰ<~J1hbZe~(be2q=t١ȳ-udžzMU+ⷶn ?*[x^kTS^k1 W+XĪx7t91mmfb٥4 ̬ rsj.0#)v )lǬ(8[~O#ӊ" n$yw 3뾾0y]܈_0ҝ;)UfA8ӯ_ i<S>c<=d[sV.ƍ2`R֓^UqK]]6"1uN(X Zn=6)#'{ip+P?A|rýZ0;%wm3}{F;:ۓ!p+ZC>EY-^ЭJTqmŒlOܙXà Bz4Cԏghc`n_!ⱣnVnmӿv/Y̾= vPWR;\Kwo}8cB_Yn 0n`?B3Z}ȸ9PHr% 2(:׃6#o`ݻuJ/oiެV5MgwgmϬ(޶J2qkt1ow/ g#d6dZC K8oێF@O9K0qUdP8>7;o'^fIG#ŕ0]w*$ L7fv+Qj߻\z|2+R{˥GN{C;滞W)?Ùݎ5:t Uc$sð߇UvDZ{ZTRW>4(]lve#d(c9fR![>n/Q 4 V7ρ ; MlSM@$Mm)^}u0c4"u#EWӄ 9 ym{3vOWwLY>ȹ>\ͼC6d;cZv<& AurEKi~-UcF3!ӘnL2mX QZݻG.rm֭Mk ?"5in$6xy넨SM`k4xY.2otgK-S;(b( -d1Y [wB뵄U@ƕ!-3z'!=1tŏe}!^N۪B|~>/ ôw/V*^N(PdG? **RxOz%9Q mbo)s=+%8FNK#4ZhwOPK 7Nk 4tensorflow_federated/python/core/api/computations.pyYmo7_A":/8\5pۢ,j+^-UkYrzKAbk3<}~mT:\&.\zzVo狨^x׉[ugƭSUW|(Fm5k\Et%KO&guzUPcZpRoTꂁ TmSiVQVnjnK6.xdn_ 75֯[=\td"z.4{[8?hde1Sۘ7u㬳+8TlZ9<^{m;JeCvŝhepKV]ߞ\^N`>t~Ix ~n~Uy7Q6i8i)@ġ2msNύG[G_@ p.mԑ?98T1:;;{gjk˘TeCOkJ%LFwKu_w<< AS*hSWpLE~ KQ:o e0~-NE Ѩ2c}?X6Vy8)AI. F:1p,Q rUG3CUѫ xKğl쁚G28[6L[Q$JI#LHa ']%9Y$ @`wm?rk#qxkTKWby.-1cj_bcJ=Y;PVY>$_ƺ.v?[q\q ޠ~ J#4!%3m)FjN*'J1*9; ӮΩƍ^*.Փ^|y7L^Ց Ȕ]DBZ ʼnb)6'9+PH S<`٩ vR4` p@ܜbsw٘f5c@yEDž P3}F>"28U+ 34Ad+)x,0a'dl$%GA+!Pp+BWbF^q4cu`1W}̩̉ƞЦ6_7q qu*h*pI1gPYtԵY:  (],;f׺]JXM|!Gm|WM BL2PĨ77E*[+Uĵ1n9E52I@'9u3rM* [&C vD~ DM??ޠR1M}jr M g.!g)9u6Ia?=DQb[BݍAHU'QD{ AҞ$@uI$Mr2(p]StK:Chm6u\5!3!\Y:Z R%?̤/v b zkp{/U| p Q,8kN72yx-a'$mTp :C{GF$Hp¾J?)|u\_RCK]v4lņY&dΑ|myOF*| rxIZoXEؚAn-51DCf_F r󶕋F e>X"Ii{e. 6Nɣ+āR`_wgBEk Ud }ƘVnFJNO^se ??铫nVY 葨ܾX!ĐSet7ey@`w:[KC,V (*M3~ JI v\98v`o[LO/<p 4CND4y[7L)kxzd6ٍL ħӛ,vX6Y2q ܨ96Y@2stLi=ςbD|s>ǻmx2kQvH&GC6ܻY86;*Fn쿥"-t;L5NWK7g\< 'Ȋ&ddL^ǣ@퇡f)#rFslC&oEߒ1n j]|#H#KnMiě4'A`K\ ,Q7FdܐnP-->'yKN&UҖ2lX ʧsWYNRV3ԡxʃ5!Ԟt}GCo}|[ӾDMЭ-`Nt:2ڶ։ه]a ?(')qHN2kWe:^cz!`Y=QC"z\Һ^*}i$2[uiW;4 %"Z72tensorflow_federated/python/core/api/intrinsics.py[YsF~篘r^$g/[QQV\%QqICk`Qc.BնΗF|13U])FQe2q+I&_[oO tQLϪ6.Wɗxazq5HVVQ "7bJTUKuUL͊B@  OKxsB60[5MufI$iz'ͫW/o/@cz,1Vy {} YB|5 rY+ѨΛ\Nыf#kR4u6k9``/Yv 2_n&_\\Ϯ.oŻWwqqSVzjю*C*Q`Y!S4_)\rR?Jܠ7 "_lɋ/~TT+MZ ]m= ^xgdQ뵸_M[{܆F`{}cYλ@>-S\Ү{YђV IHu٨42A7B$S`{-ǓGYZUBin |*֪^B!=#\zfH^ϗ7d/0#Ʃ,&d 0thBnUިmmGV5 RY b2,(eZkc@-@v-vdi^ɲ1vʪG tUN1<0 ;bs|x Q`SRd \e$=ZgaTȢ i 1M޴$qA(9I 6 c)i e }0O!07B=J>~H͙q9_JXZ&gRP^e$>iA*MEXٓ>VJg(D90gH SfN8EZ$l~BEko1ɆǬt[w j|s7}'ξw ^<0 @& BxWd(|"a\^>3YE@ Ɔ"c,NSkbaWiNs9ޞw$#O<8-0N:#.*e-V}`=Abo@1 &Q 0u UJml: *.$||U շč"Te/f U7࣢]26 f耡k c;jbѹg5CN ''[&/MD2[ĉZR1e @˴h<\(עFSE4$T?vHbMTp|Bꃴ.QvN"=OG@-#P„Z,bw@Q-p9֋6%v@y7{]R A%G)Ц;}Gzb`!ۻZlU;Sz D}RfVcA7T J1U|ŨH !>daeeEuHĮnÞݡnNȻl\q@)u9 @0-"=0HFӫGed-2e/Z@ΣZ+21˸%v6@K\QoUvr>y б5ʇr{([_cyH,! G7SDe>DFHeePLsPf>.AF$k n._]}4دm^>2aEkW Co/9? fcqqfdQ&vr(Csl{wP\ XbcEYJ.T6 P:ܿf^347 N/AU@fngIpn:I}QMJ z;s)kZ( K>+Vq7P휄Ƈ+1,®x\t>,dub'.XUuƠ/q;f3ۡI7{ aEDI?Ѹ{tu#Te^c^')eNQF\7\G`l7|[֋PYXsrđJoW.ӷ2*>w{v]osz* 溊+ÛD`)/NG"~GGF9Srq'*qeć rdp74 yҵ~a<ݞUq3뱁8 嬚ƫ2yw)aI[hWA^̸b0-JbLu~ub]{f'ܨm,Py^bTYlֈmD+wlXb-ej9'ˮGLpFr;铗)D~?w+\N(뺲JϨv8/`iEִyv ƽVB5s3a"6qOx2A]wkh?r~M3&5j}Tczxlp#8#Ppdb\sq oGS114"kZiK_퓼:<1PH'kb,uv%# d׎Lm$}_~ ?t펩}lݙ}LAm+6[.G{-V1I(wvkq+3sCו?QQ>:[lM3bkJ IBcoeA`߲sQN458ׇؓsX$>Ut!D8H8 vMG5PSW )҅Τ92ܱ澹=S +qWO1]'>d~>n #sƖz$x_7ZY*U?7a=vŽP3$U7TcgUqйgD> vU?T}cսCw0ӍskNtDt` ==Lv7 )>4G1 RSD!Nr} OkQB;bp.9fcَSoضE|gʱ3ArfPJ̳C MIk&Z.%}^>z[$C0jv×I֎ĉq%#r~ڧキ G!Z/tK;հec4PK 7N"%(WC2tensorflow_federated/python/core/api/placements.py}SMo0 WeR.C|`Ƃ=M;dIhv+XKM ]ؓ́˷)7nL+ S+Z˒1|iqRbEɿ12t^ | | 'A+N A)Z*|.H iBPf$a4R= F [>կq h<|"{7}Aml\3Sgr-Ysztq˂JgJ`!$u3ojCf''q"~ `IAMgٔ9>dK6y`vHt N7) {eٺE#V ڜye} Bc4]+}gy(J4TM&R3l+:Y>l%ٸ*C|ލ1SEQL EQw9,Џq(8?U(Z.Cɱ ;PeĥqO_.MJcؤJQ y`TMȎ)? giOBSrgl ?L2Z4Lg\% W+[Kc_PK 7Nx;Wfg4tensorflow_federated/python/core/api/typed_object.pySn0 +u!MX'WiG#i]?JICoE)_T Kt m+=S9*=B++H:...Nh8E%~uR+/aSj4 PsA-[|)H>V U"͉eBH0Z0~AAp|6>Amm3kH7KuĊCͽj9b2[у #VTunZ[K(%n,ͦ79<$me-,64O7k Y?t};Yq|1g+? Z9eɾTӉh ߦcy IPc*F-RǃرAQZ]!vkW+(A,jPucEiKZ}b5tѡo@؆*!c5=d⇌@PfdLk4KaAZ[oG*D <=]שlSekO? nF0>Mޓ|CLATk1k6>y[r \ OCK &4`2y8}qJwwtx3]Gp<- F_O p ?N9&O%kt3eZ0-슝A8TlzˁRJAI׻Bq]$]2˹!-RRNe>XV4MhfuAm fsf^i~ &"ICv^?t,B1+ݑ f1jKoæ|f_9 tLJ7go.iBδ%䥼|SGHEq9Mx*gCNQ(yO&8>]&DPy`35WY2ʲKtns1e*ԦK#hƈH[Sn@2aY<1֜ }>}-1eP|h;ZbG*Bgii;[0^iI@#4Ơ#eQI2hL՜}m|`w)|dw-luH?M_Ko xF(dkN>Ezw+4IoK 9Vs.R,١粈i'껡Ԇ Q8)dlnq~uF?a39Gh:p"* !@++l9FV ԏJzi K6/4"Xv _G7`MF~xp>d_)9qhw_O9;َ[`X[sL*#M/z8M*r \LܢdPK 7N^V7 .tensorflow_federated/python/core/api/values.pyVMs6W8q2ɸӃꏩc)$BJBC,Zֿ[贾4X$o[kH+jak;6Ї2ZlluwWT&->q>WD ޶ѤQ%t+}a5!Op-S26PZLRrH*2%^mܦ AUPVoƑ p ls6ug0|65{OnCJZ:RX Vl2v1P*ӫ6RK:i:?'<⏇ :yz9=tG7s:Ɉ Ԣ#W"ڜM|å^yM6L jjzЫR*7J*ZFI[SK*k彼ŮVוNݴhqwGϪn@h\u\J:֡W֐m o7XK۩y2q[5L{t d2bl8og(2NB{ge,9m%AуqY_IO4^6ȏJPV*VEB%F2~@Z%{}}OxdxT!nm:-!l's.IݨJJֵ9G]*ّIIڊ ;2 4Hya]>u5@!l]*SOwu9<#܈EAJ[SU&#a?d0~?_ǡM?fj0:8:}Fy(3PK 7NC2pj1tensorflow_federated/python/core/impl/__init__.pyeAo0OɥXm/mD@сF"64+Z_,{<ožuch[1vtܴ7D(ZBÀUT I/-NjtZҔXUvDCγѸop5 8Y&$QsGlkl;V$ `baNAZʩ 3z= Cfظf}(znY&sϓ{8۳ PN٩A5<8aPĥbeZ$gKi,iCy$iT99H9GlcZLN;$ ~cY3f/<͑ih9|yK%\J.!4敜8WKg*7PK 7N-:tensorflow_federated/python/core/impl/compiler_pipeline.pyWMs6WNL5Ki&'$A IhY} P2Ȯ` {Z5v햺yDkKGg?4_Jj+( i;,16Zh`[㧟i ]$g4b~xXjF;ꬄ eT$֑j(u[)V-6/ 9k_ЎҹtZ%£MYVҞ^O'W7دTZ2NĚI 0+"mH,Ĝ xeS"&KFK3*N6 g4l:t9}ߏoӫt>G|ߧ7bOa8ͤPȶ2WWBB?J jjZ+RroJ1jx;Ţ˥56KюO2 x루44-;6h JKfzT`s69C~ت~gIPi!Atx2&m pw XQnSF 2F!/TUiVx\4N>:ިPdڪu֔IZkR-:ìvT3,$if!s(KHlIXZ!ncq 602Eyg Tkxdy.?"PM^u~RW!/9e[fagB{!C|t,=;Tߣg$04y_vүKv 79F}c7 dS"<˄i?9p`Y^ҸA a_31{跺8Hnk8 [)-HC[~(x kBgb|)s(:Ӡ!o4p;Nߝ_5) oeRвFB0"B^:O+=gT태_L|Z a-O q`P&]stfkn[JJqf{e;kSy&3mقd;>Z47rp%/wf/wU9]}_l0|(b. ˆfQ1CpKĔ"{B# 89-&WfxB *Qgt}5gU},JO%du$zI6 6x:}3_wkq`n`p=x$%OPZ?2ͺȅOD*+\`֢fӃm Ary< kϋ$aVz/*>iIރ5PK 7N %Dtensorflow_federated/python/core/impl/computation_building_blocks.py]oɑοZ0"Z?p9v`i43<$q W~΃^Fl3]]]]]c&kU3ExQeٳk)d^문e"˨8oIYM;isQC]T]UZ,|&&#Q'/"/jTHX.Z.K<6EP$U{"a0"nâ<雋^zSLV(忛"Cq6V6gu ߖi曩u}$iU骩=ii` (/#htq~?եx^xŻkq.޾ nݮD(ڥv2Ni 7MbS2ም,iY{ PmZG5}T8zы,@ =B(qiTS'p &rFY3ۆ@l4ZV,nJXtyUHn7)?|W€O9 XsUz8ia,z晦 r[ա8Chqe~ \./=L?BXҾ $Y(Vq}bk_f fJE"קveQ, BКJx(NF#4+ WE.S!T).o Hv0 oC&QڭwH4 Nwy:F 麇pL QF)+UYdJ5Ks L|C4Q= 3ʹW:duxW G‘M%`~ȊUO4`Э(*12A4smє^~=?@A(3F9)V0-/0R:g'uCU;L`g@ .Aۥ3؂@O#;6s)zN [0v/ n<5YDGTD _^,#Y{Dy*NyŷNҝRpJ9nc$vQY1S v3!<5G@#RT n$0r7ZMAJس"bcmzh+o-W[V,/Z.[XTSi=BE*(X EZ"мŸY5ڃW0^{%f]eL78 ;ą妚Uyi&|CH(f46O M$f 1! E"GI裗"{yE} YYۜRssD-%x}e]I{Yߣ6uz(r k)1lj ,=\ ی tsH ް K25޴UF'X=c` {-]yK _,<I%3K(ӳRvRPڐ}3JXvIǢvb[蒰 })F{&عY] |ft-mK^Elne-xLZJB Pӡ[Xe{5 4jQ&BZ5Bier]h0EPvPfg;"o1Td $ O;pcq=~?O$r^gѺFS`bG &)# |,}YH<~*ryϞ~vA@`v\(8:% !#r-K " A!.H?M 2KQX`-ghJ""6aBTF% ]0`biG9@ b 7B!ʎn*N e 1)b#$T p} , ǽeP\QK8^e* lUt-U 4!rЬW إ*0J"0cT!p֗DR'uQ,QK(^ EvSeߝ8܉'ߋ.e)9&-l.tyՁbeT9=Fz^wwW:5rTFPGqK)ARC +ۉ~As؈GARliti8LtTPJyf3?؈~ iR "^+0nVPc/ހe-ӘjQ rЯ \Z܌WfD۟~1w0O - ߝ  RYEZ l$=bNC0x*F3-܀n8_}J#@͊8e2hbMI1 uB|!*wӬtN[89!4džqaH0VBl5[ (iVO`C,r|JMz)5w{k~A4QjՌ"Zy/` zMӞ &]+݁//[BMs%-l PL[IgPFڝO kkd qDzh0鑥 16ƖĬP0ZZE|ǃ?(oZ9Zڑ1OiӗD6T ʊŦ]Z_ IRYMhF窵R+lj[enR RhR4pMQxdբMN _Z)맞Yagd>-McM>WWu-5vttVbֶ$F]YҎZ* ͍^*'ZD<CN n!C"qmż=|;C2sI+]fx0WNkeHXebI+j*ͺ%ǩY>8oa(MS'9ashӓZΣduJ]L[L;\M mZdnWclB os:N=Stx>!4Öe \Saڶ[HGb9H_i;}"N6]% Ӓ7fʩTⅹs#Α J'SPDgrv-G\4Y-y`9H >S+o!5\+("!Mg$Z9?e%Z]Τx/2KaOIG0p'X:y޻T4ϻb|M}t!42 oDYUaj)/ԪQe xq/gwHqWV2#$kg׊ZiiwR|mTg7lc?$㺎򸺦eGDՍ)~`L uEXG7Й?e;Wy@̋UҊm,UA *Ak3?/)*MOZW yNd#8}S?笓*Pqtv#d2cٔO }ox:#1O?*p5CFʕ1vCGӖ)>Pk:~'+[4yoYLN;٣:lapcaN/iVcX`76zb0Y.̚8 >^DYvR}[0 V^@NIY}t”;q zqѩ @aN_}26bsY_ɸ da;Ӭ5wCO~cf})SL'P8a/fy`i]2yY=# B_y]TB=Deˍ:ѷK u4> g1:qA7DLrӉXWn"xVzcl>V*m7˫XZLLs0H2֩aEhl[+7-BbϾ ~:oAd޲{ZCuZ۟NG88A rΈγֿH΁:C-TĪVF1ٝa9(Il?W|' `@vMDP`  <(=+l;Uag4Vt(\5  ~Sm" ]]m+\0l5U{Qt~^' Sk.uY)I:AHMmާk7j\ о}Y sWL_6}f" kl 1`~$I>ng3U T,XhT6m8Rɓ(b<La}ƕEYjtt7#?/ cйoc ~&` 2PBxr;j g$63FIUPy"]W݄A :/AB Bq-ݺp @hoDi4 ]S`:KcUwH1v;?C ɉE߮ pnפ/GsUV|f|U9_8u4l8La1&.s򎢩a_Ƒx}[ub St3cJZ~$|L1Ÿ`.4xj֏MZ;ªhTP7 nzC7իT׉OHcZϞNҿֶAT.W`Z78GΝ-b|`U-8;IҲ5FLEVsDs`(;@ %Zj'73 EZyXć#E(|.SW.BW"KG'.7d A; .X,:bOWCIC?σi ]K rQg2"*m_=n.6+ݏ/BqQ E%x#jLpn?p+!8T*컝NYV? QСۆ7EI@*etA fTVi!W~xIog 8ۼ6e1^l>^ AМ9̴-j2lzW-=RJQ>gHڷo?WC8:crlQ1\Z&W, {n:buSw{_BW _ާԥĽK=m/`e90M}dAPcrݝ-j][+ $iӵ^sm ~UeO]t!<$:".mi ;_ann4XŹaA60kw쬍RneT?BH]؅i Ru0{miD@Gp:؂3b# D'I "0Wq3f"it7F(S:q pR:½`gYh~< j_RA-oM*O_'ӲE{`==k!^wh jap}K҉L79/|;ՃbbDl~S}d{7_SQUhy/KAg&շQ'iL}nZ+w_F*NBw2',j(S:nnZ<1TGHL+g) 47U%zhiy[@M|[~lJ3ӥk*:+/?eSܪ<=۹ZD_κ@K+Qf`r{l;TlŅY(]Qib%ad5uk^˻(V[˫ԅ\U_ovTxY^0 -M/ssYb69K_ć_<FI&&({@_=,[<{~N/~!ϵ9ǽWt@/OQsSM*YJXES==^Yd+W<^zW/\z{u[\uev"\-=09t#[vw::y'To27BjULq\:*b޾K::W?O8jms'p3UoX+mup)x6Xy ط"~=[BNFfO+)ざIh$K$n '|h}g监fDSRw`f)_7)Ž]}ձ \86Z,nlefwZK<gq4}3a2PK 7N<Gtensorflow_federated/python/core/impl/computation_constructing_utils.py=kw۶+I{6v?Su^:YiO(HJRy)ˎX'Db0 +cDbM+q,V7bXrK׏,ݑ:;GKhFv+h;҇"FG gO,F^} gݗa,Y ?2r7s{7t|1 拙CWz񔺑@  bv| '&3_ak}9`Lm37DB`% 4t̹A(I³8@oC/%`: PF^`ЃA/_<;Go__Ϗ.OO.sq3Z*sz. q!HzHGwDp{C?Y:WL7a8bs/ٌ@ys/vb%7(L tu]\FD>N!Ko6ǽ,~0>d9# Z0^o! FD eq/{aUi!4o8E$yyw @HfW:::y@9} yzŪ`*C KSYA0QM8E0234 | {#w bxw f52a-co30@RٸՂX=ߙc -`Kw{7NF[sCHv Z4W4&JTܝ@ ?=]0 éMq ,A0 ^1)I1 2Vd?BӨK g4"^}:} +ˢsT/-j2̿$w;[ #P$ D\ ^EC: oa^œ=i@XA1:SI/}'-lƒ݊)Kt`^řV ٤[ys!Mflf(60(% % 0t=0@/{[-8 ᅂ{c酰hԓ < Q5zP?Ej&Ml)Q iwJF!VyYl0>AŢRP%ңJT)ܖgd Z5&vrm觻5gCO1z`[Y@&NXG?E^#Eu=p֮7|0rDk*V QRDmf\mX/}O`sp$08A9 bPUu2_DZ'%;TÄ wx#/ZA3@Q kل"E^ō,# ) -8Th蛴nE՜K&0_.[2ba0QEܢAMbl e ̺'&284{q%j8YjZG"^@k'2 heP}74LˠI/1웒t(!%)SDnJ|p}Rd!CDkvc#6@\ΰV%]"T6-`[1S|JUat`=ߙ%QŻQJv'i%h #,N!d#ԅ/Ud@1PdE5::SrBme,#̼ UR[ m#2WQP) Ƅ4*kB'afMs8,[JVyb0/ؼ]q`EkQsf,4s`kGCBkgF9&8|,  /?r~|Y0od&=TQ9)1/yLZឺS414aJ).6~Y-]jwm t).'Hl!*ya1o4vڠBWDK>kom&XZLm:w "/wpQiyUZ%ocEe-+/1.0gLq Ą&u=G$"jY2Qr`b qxQ̴E= V01joaJi'͕)!$'G=/T [cE>i)Qjv%Et tuJt9@!UI hM갣b 5J\=Н|kI ]Nx윧f:#{rX*뵴橬uUC.y|=1PȴUvS+t fEi:6 ?و.0 =bxiL`8 ‘Tr9r*m'pq液XbJbpGrL *G`K%ooTʨ T;I/f"9|ac]>L^i5hs tC'FpD6Rk bEC˙S0[SZv {/D UX#XCe".Hӷu:3cPJG$Np;M0EGҳد;gSDBJlO\s{X Jԋ]@am/q=I򗕿='H\WГ nQg3FĿQ=òvjh LՋ'lN#eMkp2; ́Ȉ_wCȑu?X?$o~M?_a萦Z>/f˿c2B_ 8k ۶-!7k{]MJf&O@1nt_ousށ8ڴLLv=h0$Bqdvx=R'9 zN3LeΙWDך n D( KLꍦ:|Y LgANjAjP^۱8:31|_Q;C_;#nRp6~w >̎ )HZZUZ<O(QGҐ T?z/j(еR/2ꥎW%Px2޴U{TD$̮H22dκt{n$] PkB}dXzwUh$)nۀnx{E˽R,KJe"fd#~*|1a-^v-{e2=D,B)H<1M͟`_|r;ɕG)YYH3R 4% ɂI԰֨Dkuym`>yur~tyw'?Ÿ2 ݒZz6쫮i4$x{Tn5PQuLl@F-򢝣[ͻꏇ8LJУuCҽ{-HD<3:QbKl(Ő!=`fnu\aW =~szrvyaakcЖMlKG..˖˲tUF\IiEԊLvኸ51a$=-.Of}VY4'waPW*mtJ@1jMtn}f•N\U*g J'$wF{O $+yHPK:lۍ]WkkMB\`P۬QH\m\ʷ.m^K~@(8t2|Jt. sa1 .%nX6mٱ,Ɇ'gmhfT!&̤jfTU7%m70L 0Q=[CwfʌE -s, [#X<|A5SAnNdGYoczZ}COd;kٖ?=Ze-JW'w, F*,o>ɎROKl1dZesm..¤u"iOX|kz%(b0ȢbD3a3`DbЕHc.sYf]Uᮽg:O{:QL'&i/0$%͓C$*eT&{*NaCd3DžԋE.Zڃ!J`1,9Ҷb^>bў4j"7ÉN\,݌ƈF<m_} &|Q.oIAo`+HFj80AПtak22~~zÿd<&D恃K ޼?]d#[ju,bnM=2fpƒjj˫r ^~lZOY^/ /5D<aCWt!˖#6c/GKA<;QHSwh0I[`J*ŶQ7+,QtO4uQkB:&mou9'0[+i$h@-]ԁZSq=1: Giy>T%@-L=}]zfXX?-#|孼4\~ccĆSGO6)fd{Qx/ŒMH4|2U*Yva+,^ǮkC3?zot˓E01%>tѥ[~7Lm?0X E3A M]g;k1,= ?؍@kv<ܥ\L-,tZy$Y9 >{ㄳʹH-ߩ0B Hyx#oL-Uo* 'l]%ǑPZ/j3abr6Bp (?PX, .S'hO|"5Uٙ#An%y̼FTOωAm=bB? wG/qHOix<'h ]Gx|B[}yN'Ci&4#|#7Q\|/!L rf⠹q/뭒 \EуK6bUԌO11(^=q %VNCϑ PTb07 n'JMJr•~&;kC>M-#Nw}o/}o.]kO$ߍ)o4L, 5@h0t@p;bMt̽qgSd;ٶTѦo:8[ .Գ 51vti_%0`|J/R굈[ЮF{zq]3˧@[:d: K٦a¢{{V@=l[*ŤOQVw(Yl57ǧ``& *ʗLAJ0!7A*%6eqy77)!]M: I2Uujp}Y0*dJR4lS5dC߫~uGfkbyJ@{]i[hBCj)nym!;U̝6Dw/ڑmka<X+5j[R4Fq٩BRȤ Ywx?Nҍ釨eUA$t/7@'C < Aկ5["Ի %OEhzghkx|sʲC>#/N.]GC$Rd!vsOؑCʎxiȐ1$8]kKU,xU RUJiEm{Y *=z7mhȝ T!fబx.V1_FUYW9B[ESD{an ]FvN k5W᧟Ixt 3*<96NQVݬ̓R:L6XLƑJ&^S8'Z2d27R$HA/bulÌc D-1 ?RTϾXd[qa/42O6{C䌤eѪ+,! #ϙ<~E㩙bvOa|kʍD2l[pU<]}3=()aӫsCb5 kkwȉRMgTl^UU-VnH:ʌ0_>J?ڈ "VXTzu| ASE7o/^0_Q S%q?y3aY5F/dۋ[^Lf,Q}aTռ'bz}\T⮏e&_J) M0~>-TTE1փ9aL a$!FrAP`4(-fB j\oHx*%$oke <ǣj-OTaHW*;#҆,/|Y NX6m<9SJq)FNf7t]+X+zhMlڔuf񫧶=BPgz+j RR6;+8i bz Nwdd&i-lz!ΎPnN+;r G^IإsgAeewz)_PVdO Lրa6_ҶBYT!:6Z7Fz WzS 0o]Qм/}hOVPK 7N>VLV 9tensorflow_federated/python/core/impl/computation_impl.pyWo6~_qujҵ/3V8E(0@MU wGJe;^<$yǻ|aPnJ{gp˭˕y ͍ p"cy})jU>8r"?Dc.ClЯ_a+X-Ae \*|Jt HTR)FS VC d_Wkyg\9>?l6l#m*XO1>_ ւ4td $BH 9̈́7F:Y,G`u6 d:#uУCPD>6O#:]~e_'wwbz=;]M}d ήF+ OaDRr1;rS˔U,+DXG4J4ki6-EɵtCE~,uk,GsCtUND#ry*q(ڐ|%+/eQ2KChH9vy$8oF;=o3a.*ʎQ }0H یގxVQܑ "nc'\.xSJ;Tz58tq<`ѓ"͹.fhӑ)TQi7rMIۻJ<<,mCoNVTy put_v׀Vvo s^ą̻m`B)uА`"dh\(W]:w&Y\d]z}s]oV8E&ǤkCJ8#*^;<,[yi++T#&ʰ(hѺSoR͹o]Ӂ\?9#±E304k8Jwy) /XJB)ݬdLcͣR1q6:Ȟbt2z6Rk 7Mje\?VK1U50XZ]Uezqꀣ(tӶo ́lڃZ;Zy4ycVVnbWgw>+k;-Xj-"g#AKm +|4Ө=swśx OA_Cg3Z&SGqeJ6R _]uo6kːb PCL-C `Y}#|9%\-j~O/e@~Z :dկ#ru l޲i +5X/HiB'} 4nI,Vս228 Kijᒝɓ',EvV26ծYf`'9 -Npp0ejPp'31m}>qP&0B܀D-@M#hA#O4*}?czP,cMYWR7]vxBN] 秓IVBN 851*sR9x!Gq"|}^(7N"w4\#! xEZފPB#˥=ڣ{'s>k3Ԡ`wo2Al]H a ߴVt߹zM.y@?H?W](LM(W"p%vdL]{JDf&d}K~׽v-XM gvO9[u!DtF}1bWZm3g@#4TFuEWlwnEtc4sO`ЯD{geI:<}|5-Ѓ$|?+愧&qyFV d?$}IáȩQ:FcO24ml lic5).yF/nH/ + ,(PxHpd736]Ct ~oIG)"_ T9Jo΅!<Jy>V`D`яOr{hlFbBɳ ډ4z7ܾCd'I\^yHi9&"~Rb *xidY-&N@,2 ; ":vAwf6ih?ot<`$ƛ. 0̚^ #TiYU4GӔ;9||أ 28^?3D:p xک\|¤=pRQ wcӺUEgy9H WТA@Wj#yU%"/y~կ9_^sx` eC.a)_p6sR!$P,K)ƧIj#R١jŽ=D&|ŊW_sD91`.2 [(_@gE@V*\Cܛ=rMb&O/Jh+oOb X/|Mږ&kz@Hhx^#i8CɆ1E]|"nJq-l3x\LjHh?rYBrM}_0,W.k.gq+S$y>~_2G]1QlGX .P`Hs'$9jOr +I Ӵ>ŎyN_A.b , sN5RX蠚tp +X /s+A7S%[*6ƈ\1̤q֧eyl@qzQ5k?DI-ʜ&A645&|"𥠮\Z{ɭqnnYmt& 5jWWWj{Ů3[.;.Δoi;5l=x/)8u}bXGA(xѪ^(?ቍAnvFo01Mml;ۻQIƫG) H7[Z ۣ,({BAw"R]J؀T'ũSSp:)n! &ބ2zgڴ0hc /:k}al71C?/0_QIݜL"s*|flI%kl"*2=CP`T:Csm! A}g -O-xscC :L }#hCyU~Vt+֝kqTluM3P h"4}n8@Uê΁XZwEtJMIQ#`$tOxF(rmI6O&ٰi mP?Xb0AVǾ&9 Ohҝ $Ĥu<} 0 9KKHSQR.4PRse19x[fj1??  C㇪u['FH"+^;5)E\8bAczW3qӳhϰ [V`T(|.R!wR*ǟP}&[y"ܬ][Aw !;#@S5: OPen'=a;X頔1a֙H?7ohV!b_ī 7᧢L p eXVk 1:웺!rojERP{n[Jb(א2!0]B.P〕g†!; zKr2vm47W4Z`Ji/XۺDC _]^+6_Fr<.6nj8#x)NPIȉEavm88 "ڍCzCOG6 ir4G3K}Qs^}SW‡`K(8Iidޛ8{C7l̴ҠY4 x!Dq#gR..) G֘AgQ$>%-Tc&XavZp<2) TJꉱ1:y_F5kU\+|< @rO+tn6ee-Wkջ_,FЅ^ 0J MGLۨ6-MؤL3V 1LjJ@.W} ,Pod_07KT5W@"b' {Xw*K{IKD~袼o> ]?>lj!'qӱEqq,z F/tA/hRO ijTK\N%= $#[~n%t kg\\@ ׊`ٷ FD ss?(3}q0 e4͌|*0qR&%sX 1#U4|&N?8#t~CY<1E?S#8'5zM 7+5JxzNȿ-Ual[3Ŋ7 ?2.V:;!1D[ O][SԠ| D R̹yضNsQ%Pm.>ˎWؾ&:+DK)T0*gʤ4Oyҍ/ZGkSy" h'GB> d*E\Ȩ '/O $$4GցdրcϘHsElZ9!ToDI+ΪUI>DJ_QsF!m;D)Ux:}eQ>LP%BXؿo~=J7ܮxyej =Dlgjm۹L.7;ÎHSLsEY KH _tb,,}nD~ tB<NTd/L0, =|H: --d/+AQ8[kLYcbe o "])SUMoXtBy{ݠtm, [f"DEczMu# O5Xj^JN&pNP![K:q0Hײŗ"OEeM[/eMy&ܠO'/00 cUu0ŀ1$c̗Ֆ~~C8Ne[i)GT\)ń2KgCdnj4(F"Iz!Qe" "]㎳:*襣 AAo1'sS=giBKsAWKrz9黯$3x,ʞ痯!0t2e8R=?1ymB'yPáIRː2Fh@R=*-L7YHڨ@*iPɻo1a'<976NEOH`jCHZiO0 M\3bD eVKMɋKTSX.EWu6V|B*D˱1Ќ!ЫF8˨k4;ҋQe]k՗u:mѡTثɘd;g;I *̗| KVn\leD:wp?z0#LPYmR/a10~N)Ɔe݉bh5W_ӃX\ZVV:_r!,$B"K ҋL "p5р9Nќ3zJq]A͝.ϗe 6,#v4DoJ`\:l<#BMɗ 9 /pB=:qKnPba5ZӣCH/p܂p#ox? ųTgVU9TosE',Yw|XIiWpP;"R$1R/z:&INH{ Z`Fp)~NZeX`.YqܤHzqh'zhjv/Ǫe<<3SjtQMHړrWԜ?O^еiNV{Oo^˜{59*-Z,.:|mkǢER<9iSӛ5MeE7t1'RNTOc@hG.!Ɠ)5USjULGaal 7W1Q!Ⲍ3"k>%;GnEj0Ku$cI1|뺘3?*@ɴVZ><$=TM{Z_л~/oeqwX7t{G׷vX}ߗsbpm?#gB=rr :)VL95l+e@)uwI%]ձUz-5Xi+H<ɎAP &ܚ6F1:9SM|nZZBn_TLtdDe٦bR97Ťd|M'SljvqgW"$qR SB1~|| 8T|2z܉讍v,ݔQ臃}hni <1:+zdZ攵VA(Ngh.ڙ,XڀFq Ȃ^󦡒\T . ST xUY*2fhA5 ,:#s0p8T_2_j2\E@UT葖T>{^T!q9'`PQ q*H]^( {iG^990ҥ8UǪ5b˖Qer:z!8o,hyQCwF3ر?2l-{;h..nPqjW(~f?*ㆱ135wtX\욶bTFΏYB`gEpAzKD+ $ߊt&WT1qшl0 L/xe"!9\m0 u9kL̷xt BҢс)Ѿ'^dUQG%Dp%#YD1B΍ƚ4I9Yٗb0DLg۹䀷kC:,#LHZ&n#[EI(Z3t>vXpK~p7*Hus},\w~+/xSkD[5{RZAL)*B&ryU9?R|S=]?ND%\pdה"Ӷ%gmBѫ#K#;;RJh;zƦ018Gx'F\t~:ڦr+[9~F8]+/8wJo*l.IkOH%$R4 e]HгTVצrOLheZr>5' e-BKD=> Q1LONjEw4ht+2IiOcj0dI**4R~ I^_ {3.m9xqxcgհsdVZZ$ Ft-eywVz6r,tʢWlK%}b_o/%ϳ2\˜_f2뉲+& exol2U m|@p)kY/iņi*CNp*diNzMh4zZ*vձEyVj)ܓzGUj0k N7fu[%dscVUIr^_H,NN$G*jcmsc?`M s.N"  qSm lh}j\a;nX1֜3WSձVa.81Wnc ̴!"!WjYKםPP/jՀ9&&bPg ǐVW"lc4H?f' 9J*Q|ut̙wQ]pM6,".y L?8rX6r,F9Z `)0Iw!m&va4qnIj8Jf?$ :0Q Bddv4S|9r}d2bL\׍=P2CX_^%7 Wl-={QSQ=݆Ao5GQxPK 7Nԕ9Np;tensorflow_federated/python/core/impl/context_stack_impl.pyTo6~_qp^Qe0`^~`EQt$GR#%ʌbC<G C [.6ЛWj˴b{PfO\kq>.(+jS@܊ KMa2\M.AδiS#*쬒BWL{! `Ї!YoS3#mC7> mnZ_,﯀8żӊ'ҡuGP%րĞ#q`"ནA͌i^8FZ /:Cc%4MK*},3x_xzbU/nwŪxZ@X͈u?@#ב% y˕ldNvnzEɝ "$YQy6L=UJHnU;mtKm@>sY8l:.Xq=Z~0GXY6Ju,j0 i:LG#*bwFw2t wqE'<;p(r- O$vQ.U˲,+(_BcٷTB]dD\'u/θ ZMRKEIWQ t# e9o1Gq;ØЯ1;#>3%v0 w? ~kj0.&N'3U8qf T<Ǝ81A6` SZY(O^oY1 ($:a'.@8]sXcYHwQPu&+PK 7N)4tensorflow_federated/python/core/impl/dtype_utils.pyuSMo@K"Q&:ja H#.&U;3o޼`[!pw'%O~!;!d(2Fu wXBR[PV!o+)B #>Ac<wL j{Ak(J4^v $e w$$3::NhNxMVuF~Z. 6P^6.j/xy Z P&A?̆w ŜwF8!k\ K)3غӺʣo4/. SR~ievIYNajDY@w4+* I0JMBTdV4,MKJbiY8FM((ZtVz6 cQgu<t*Czy1, ;ye1H`lvLg-HXF%y'tg0<;i? g^.850FhqBӣjG;>~a:Qeɍ?PK 7N Ftensorflow_federated/python/core/impl/federated_computation_context.pyVo6_qpbc/C3V8@B˔LD"5cwGR.`~IBZ`(~nT"XxwK.w_s,_äFm(RZ9XTT,O83F( +0 ǿ#NPHe6!LK+ BBʪLn4kP+P|+:n1slcKˏ|1;OƀB l4 UDx2n戲jm/Z =t+bCs-"2[ui _&r6]ogWw0g8 J$)(|MA[p#)OT<H/,琫g%ץ0MֈRRXfΑS`8RY^r%)3#iQ1hZk2F~`AU Iն@7o6PMQ=yC^|ړ$U5\uX9za4zj/#A="T2{~^}ݡ'C޺#ڋ? GvFxAʎ)%oZ0GqGzgGPMdU[ѩhonX2ţ=gA_V8#ue 5/'YZjjؓdo.E78HTos#82H9\[} H3IRkN3@9m:2ҺzHE켫 |7~OVzԒtC$ ߾ZqbZwe^&.>K2BF=rj"7>LPK 7NV.Dtensorflow_federated/python/core/impl/federated_computation_utils.pyVn8+!60m7MPc=ɴL9DiRKRqܢ3HșǙ77:k=p7b+9 S\yxC 팽Rf Wb%,b]c z] mpԸWa4ޱ7'^;S†@!R (ug?%w"mWAwU $Y~ kRcSEH˾a¦rc?sz-K"0^XPڈ3ʸ}RuŇf"vF!\` B PxlTVx#2kJ&0 })*TXZy+_­PTk T>iH% ,fEtKCL¨7C:}AL";aϒҞ>9bͯ^wpt*N#Xar)]e-x61f,)UWR)X r +?Z_r%R\8Ԏs &3qG{#Cl9NIX7Ø Aw3g=t<X .>T[hgi*Zr AùwxvKkQ-)3\E,[n ٦7a zwu䀀caiF+!v{%‰su47YH_!Nc(kZņ*d77֢< k^I[e(ˍCh*ϸwIsq.W"WhW__x2}P6Ed{ ףK{jVtB=IAEVxAUM긲fD.5*CR|>y ېYfQ5zev{$=70 yY[%pQ"[ސ0馁US%;PPQ (tS)SYw,v1QTLm1 @AK-w!Vff9Vťfgpdz z&ta=d%eatiI"=94B~MԌt%KzLDoM;נ`p:ECŪ@_6n:1OyBz86H  \ If$o[1+X 5 ~BR%a\Iƚ|YPl0WjYb,ڝnJUxĦ&0l1!Vc<̓j!6~fCp|VN"$z,i?fXum24Z]sF?Ih׾ѵv, '˪R]짬LFݢgZT< 1z'x(;JA40BDxk;GLֆo "(6/67B|$TY#}?Y*O4l^,{{aN6e=DPi/450N9ޭfTD6*_Mi?!5{}nWK^Rb"ibciMT3,L;w!>pY_"h'Y>O6( @49鋣md#PF\b Uk̓L#vynSbdCĪ7竝kE&M]! *)z-DWjӁb[<r$,kMPKۆ 0cNèb5Im|tfHJ#SA,1lG2?c眄1@؀<>qV'4} L…GFFFt Ʌrp&EydW Ѣ Ŧ'mW "@.#X>30Y&uxĭ1l1(· NRc;B/C>} 7$joJ:/>\Ə{fQEak+?LP$ZX7B>o;˕yZ+Bc4ZjO$h:B6HhfFH*>A4ݒhi}NM'TgD#H B"CE4Rب7z#h D6J *\nuGA$gE`^E|V$({6mf1,aK;d%ڻ0KCҀ屛- cAsmi3KMS)H[4x228U?O}:kN"Z]`u%Aa:||y q@n(e ';p톜s>?H6QX_'KfdޠKBbѵ@5BnH+t(EϞ2)jq(RYbf`Uqţc6f+#cE"S"İm`2c<G\X?@iy Ԃft{便&{/i[S+iL}cz'2WTXʊpYo ]/k٫C5~NHZXy cQ~ƱaWbB2۔2dV?4Ґ E #?xT00>LPv±R<%NGYmytE#[&567 C1ʭ̩fӎg ,CYy=n=߁w.E/ka:9tU(^0^KҖ+"qg 7B"=β1-GQ@*[4̐ vm(E{C=Sy{I[G}x@"D? >ƘZPeGFC^n &2*>7##|یDl$t>zM+΄{U$SaԋYp8tڹxltcϧNP{- Ov 1>({a3uUrJ吓_Ӂ}DE!oL ضğHى^uej#W}F`=Vb 1Q%Q|#)mœׄ@8y"Ys"} k:^#-c m`o˼U! !5ܩk0 3uڴZǢPF{ N~yCGQZdl.&pzsyۡ[V+v 75؍S60!oXdx+1Jn,xМ$tJ^Ϊ J6.1 _Yjz5dž@"۫HZ0KQS6K +*)ZlDB2Ь˪2!Ԝ"iऋi d҆7贓SɛEus_/:kےU=/\؃w855|t{q.H|szwjEZh2}_KLV7 kEtus7UےlMT¾ُu}ZeLVzui`ݤC˴"0:v!ɿp/0AKD#/U;€Ҙ7XSl6I`$l4_> Jzʠ`S{Sd)nTcX(k*jB1WK_[JJxa= .=vqޮ vHgϿ`&9lfU@0`{Z.BXİoo%g%~ηWegwM}X:vޯsB_3ȡu4 #4úFo_xAf˨A#ڃ4`S=00ԣإF]|ŕVxЮ{M)jO'Gg +`d]H?ǟbHRFCxNw,'=莘YP?-4gEJ!Sf$x]ЙRR[ IAd[It/|W`z/FhlQv%@$wYhL\c )ý[Vq>)%4[pCk'2A@S;@N=|ǀҩb[[GYM}G|#Y?꘾3pQo؍@"G[FL5jԕ9:j%6cGa` [9ZmǯD)9-k^TS{I$3 /AL8(x<ڠlR9.(mO|oF7ɂ}zpTAB}QÝOzг}vV׹~_gaU+Vx4LD1\χcy#H˗a?XPK 7N<.\%/+4tensorflow_federated/python/core/impl/graph_utils.py}ksFwlF{Uս)ҨH% @IL*W?l]U%HӧϻO?WV%͉Zmڻ|}\}]6u~{ת㗯˻L]feSoAҬN,Ugkxn_9<K^*?D5*qRgճ?¦ZeQeժuQT8VK5"Oy nNpSIK]ۮN!N۸o(拿ś1}YdM뼆lT Y$Ur[g][!uD5բ}H yͺуIR=;Pԟ./&~]PS_w[uof2 =j̑YD2E5l/9̫]'UV/WRR˼MZ3ٳg߷yh0veZ }mHy?Ǘ:NwY,3~lqV% a>>:ZRMuiQհ nO>lj}aji9Gb(23UUr AQ) mk{^F+Q?2VKj4R5,a6O`ɅۅʡBxUWm߿Tf՚9`9Fm%Q7ͲZ7v*`6v |?@}sA0Ak鴺}ϷqO.gx[sяEB2:{m9yE'GJ:) wNf%քX: T2+8xOg[~}/a[dՐ6H؅f ؍yɊaOD:etNvwy~ SאNzW e4G\&C^2DB=z`jU50'>*-ǠE90ޫ(ٺLZ-7|q4kn+͐H۬ $b R|z)|Jj2 2 phۏHRD`}5cg0}xexM!tdQ(E0kdwrJjcF/շB\ [AoPWroMn2!(ay X p:&0yUmsYhMT@#n@G+PJdP4Ɂ M]W|r390L[ ,E"%4@KeϢWmɉrBۛVD6n:6\S g Y;٥ $d&1 VVy3ku LZ>΃%gFQGa&BҢ% S0am~@Tys/; :}8a8.edqSw,-N3YeЩGv=25P='*č9+2dg]ѯ'q|wӘVz/m/8ȄY3C yKmB:1 o"|'eޓ‚(UI裡A=*#;cdS;۷'Hx &3TR?Tz[es{`ީ>+4DX<`U"-G-іLMp!8?v3:S%3I ̺:mfB ‘ ۬[Y*-2;Ws" /Q>#lۿ#*dkG3/ߴ+#A zL eˋsLE <20Kϗ+)KyFy v7/b9ipF78$b8gH1 ,cK vX(=A1΅"q_km9fIЉ& ϷkSz |۪|(1a@c1b<|^x&־4?%<#T( <1 pf`Qc^:CY%Bng!|(h8X,<26xzY=cPk1m$:= qG", )aboٌ qi4 pźNd+<2Q"!kW6]K|D:to;r?٫zyк£$$y)(uN1pΦT"Bt9Aˁ1Q #s{rFO Kj6OVJ=Kl_ڙ)B-E\Ɛdʄ4@У$dڡȲjr&Br#pn * K?35pJqmDL뤘cbAIUu~ ʸ$ֆ:xKq ɏq@SfLm 9&)6S.(^t[sPF^lfE6D&)9sF Іo,Y褃FUEh-(^ՀX4lc2[qeýF4"`TV&L%3fA(j39@IBF j7u1딃 ڰe0Vu:$=t]S/HNoq>G[(bal&t=l$j =x5hbeLI=86 7wtP&Wm 8XC@!O;$ӺżZ`%:DH'vTO16?IO꩛hCv#_P?l5ȝ]G 8(21`~,`H'xAM Vˊ/7'hB[Yt|]czpg.3 eh?T8o,O1/8\`}]{开Ă5.1o6MG`P`=:<3s/%`efYKGߢ(c`DL3@+ZH`fYrqeUB[v }DQL!8'L{?xhq < GW;%VW/#յW?O[N(|iG͓IWZqjRkC~'XqGDӕK1ZI\_9hմ/,e,-n)ޯFɳ1hJ -VZ$BFλuiM~lQ]Rb]15nzY!w ռ>_>~:+_g8X5?50c 6CBgEʡ#% ٹ{MJ#v2E=q gQѓW?Ti7 QȠ?֎bpDشIYFZ%Z-K0G8y[ ,r,HKU|J HC=Rp$)̃ YpdLKƯ 8b u5=Q=J78HDFE1>BLHvF36$<:ɵa]<׷{Ň*xjGd-ާeM(& 'w'X}8<`^]4xc@ R.HM9v:&xVoex]7ٖYn(_8OFcIdH(d$ASCHn%S8ďOΞfV_3.!^砪g}9ֵRWQ{q~h@@Rǩ2|<8{qalk}ũE92W?v>7|^{ ?63ĸʮ./%-bkOMql]_v1 ֥ ϟcQEK1]F}u8{0ksT %ht?FloHC҅>b[y;t&_n/߼x]ok\SơZˤ˻@mT>rȸrfh?tuzU۞Zc.lDYl~:m`wmo 볣·T*$\!5oq6fUd @lyHRBO3a 6IZa/2[AJy @ЏR^a)/{8#p|pу'TOOՈjC]],S,Qҝ?D$6jV#}.|p8(lf3E@^{UÉNC=23 t'*ss\Le03-,0^/ʵsཇV=3ͭ9d޺0 Bwl3]> LҚ vSrE'Rƛ#^'ѝ #Y#R1 7*U/VO;@?[mp.t8l91Τ_>21G*KsBm+-`[KbJĠ6h1 8;|ݘWwYO+HGsb W(4~F.#^H| ;0\'6Q3)•cT/Q]..]5*َ}iБ*<袏w=^IL QQuˑhnn3 Quld_$=Xyu[VpJa=t\$5QW0:}+Bfyq~ V1)؅%k:F]h<oߢG-5%{b\r:yyyJWrLKҬpwIaTi\+ ,`D F{>iy4p.Du韟 d0؏CD֗.ROM6Ve AbcAHքѢ)d.b2GsIl_ڰ/K]hp%M&ս2PmՍ@8hs]Zv]eb~9dY_7ۻ KEnWiˋ؛*k{O"D0$kU;$}yM$+P%$2~0iU*-;;m b()^,[tH鱌~!V6;tT b&mܸ  ojcɇ=tYi|zorɩk\ճ+dN]T ^R'@Ő(AP,xO=~z%mf_؆!S:|]N}B6i"E* Rt+>=D0=-30HL 9=hy{,=IOS `ݝ=ָi`@WQ!r?)Ԯ9]b}buD1/6H ΤцHQmU9\:ڕb/rT"6P_TGHL%] Y@bcKt=ȹ ů 0bA K`ȧ43QK!`Ȩùk8kd!{E$2걧~D+ j+9k=6yFhwfFq3ۗ`)8u !է$iik* brd } hO#{j'죎%GMoyUL1vA>%4Sb0>gs NSV5ݭ <(+)je9ֿgiJjуt83g[q_/m/ȑd}k9hL(-h=GsÑ#;֍ٵ13zI=!X1wX†H-]I *)3):2ǧzޞ0qִNw:&Ԯ@Z v^"qltkv_AA=xkC53rEdX*of 4 rё|MsU۪.z#GD^/PlO=EGnvk˰hzsOlѧ<'ȬvVzĿbpAzW݀xbnmi,VJ:)1ěTHT \[{ cy+jvJE;!_4l:}ğ'N]+3U'n4g/ 5'<{]`v>N$y^ڋ?W?C\ߗ^m%{MAcJo![8b.~|d^LXh3}0O<WӞK n7 |gOd@~2ZnĚhyTH1JPQGr^'>JEUq43.[')ĉ;UZ-SzFFl{P 2qP&ng*ebYplbutI7 }*,~_ `V_EME/˒Θ.| bw*4ը )w4E9ISW K:h.IrֻJٞ+?Tst~ BFGZF3Ӌq8tufybַiY찀ulxtl_ wwM~Dž<]Ԟ=. SJҬolOJ)>-U[MnXLYq`'?a8pXz c p#L{ @*D'빙wO_:VW']0a9U D;;q*o4_,@:M:[5FlQ"ht$/8,i:QzP4VmC42Tm=C'/^eM9xxg~-CޛϽi 2l:`6_wě~ ?ӱC aOD@c`A`#,!ox ʶ2`9$g2 wS5$@`w,~| d.n4{ґ4~VTR?ZWk! P5 _WSC2s'g< qLk`8:|1p`֥ycDI{CpI|G"7jv&? dZH3FsetyM0*Y&~x6%]Xra|MKP=>㴳?螫 hμoOv9 L\E:"U.̘ a4炋jFo3g2Ԇ V _%AS?H; NFi, TA)AF+ t<6Vܞvq?S39ݖ7-\B#LkNgwseTk..A]yvH_p9]A{  tMtU͸o˗͍ԬܸEX{N;6Pg: }4x8E=/bp"R5CbBg*m*4*99 E$,If,˜k'  {N{8w(`]q{M:f-^y1*_+gyaФx1:_SC/O3t2":$Kj K']}1,o_0v~j+^c8b{Xu/"5pnjPi=yuSf`4/t%0q֝`}w"2Sle}N& L|GK)\8}kVder&9.kmȰx>~'I*#\thI/s6"3+  B~e ~J|)Ad44u˘`̲ٳz^.zzv1<\ N@1GTJc8t#dZĩij,&i*gk/2 T(M"38ᘃV!Yz@1va9 ƃI|g31 J 0(1}FL{1D([ p=S%Gٸ]shn#Xp㍊u-ӥP0O"H)2duxY8'TmTd~ {^` m Khr:\z$@x_Į9SIBFl_Pu녬\&y Qy۠PSʊIxzXؕN,,5FV+kmIٔ³9n'W1|AKc/'9 (z $ +}%eܴCǃEt(D[O5JgM ?=u8y-7qNd#+Iĺ?$1:t`LΕL&?ҳݾ׵kׇK }2# eJuInl MHO\̦xDjCs$={ ;ZFa zl=oAĚ-ުG\U89d:zY6C*6;-<*rP^Z@eZˑ>_t]K]S[EJEރwhT)nQ$;4ǁ@n_%Mk@.Hr=vR1'K=UҚc STprM Ù> ѧVtÂHRpSQ^>@R:[% `WՍU7#-1laSQ[YVr?6l_i 0d>0܌R`,k/oi҆ӪW9Կ&}wRMJ=X(+yjAwr[zXn{ iu%ec2!~JiD1V]ޡP6\U:jdkJ6"J"VrL"?y=*^ AEey eq1DX^jD\(wqeęxC) Y2ﬦq<ÙnGJE^[:ܭR~ bm*i>UƿSZU:_'+:\Цs߂W?@3K=t}u]E>c? A? !V]a}\>Q[ܨ_K|-BT|/xwhx694<8;E_;*PTU…-(_ؓ&xHO$8 n ®Eh|vʋW]\O\IS4~[Ӹڊ_LB~ts',A2ϗJzbY:N?pg w/Hy w Nʦl8&YC:50[ w%`C R)aUޑx^<#aP"yJPS]A.|c /bˮypU[C- <.$8YTWkGGdyQସzns׶8BfX*sjn=!'G9?]\z$fYF$s {/M͘ΉN$ϔ@+L$SɀJ3%8W5i9` /kr~}H?>o}tzuuzqs>&W^Ls~jH aSB5c5"aRd #qd!)363`/*1qE~)D4PBjId*?S4x C*]i*b|dASJN$X'܇REwaU :)|&%N]D8B˛ ĵLe5`[0r_$٭@}Dx•3GúhJnMhspzdS?ѹ69eϪ3ai{gѵދP> 0N *NW+#mCbHhzϟ}78!?1 d7f1,@yJXy,=ʵ"mvzRn{|P0FA|:m?~uޥeOn' E8\F[kd *c|@@/\E/uԛ٘Ɋfêf[-5M&U`8괾>HDW*W=] +4{60sJ좰V]<#஛8)K'߯yȉ)ǭuxy?n~)FCW#6fT $~o”Vd]A>eR9ң=\ s|8*/ YZ\YF7GV:<2Kxa]rݐ[lMQPf; ĺg >Z }pL\ o0٨xȘ%FaZ_/q~3w`52nh>/eJΘiOSL9BF.zy dbkEYףw.r+4eY4c}iӌ 9ME( =. $M9DQ([2GE[leWuB[o%P9j،fR *wBxTJh 2L[^WIi"%EɠHgػF-.\k$KAÀfjXII /:KyI.ڳ2؟mQw<Wh"ms>oJaYәX猦#`WvhM(V1PKd.[jpMsr"~q|B04S<3-1YI D@98z8U8Nwxށ-`[MagiTy8qo/U)]l}s'i[p7Ew4?68ybpj( y1Eql .1w6jA&3h ?g4ɵ22x4J0CGG-; gwifVE?3/]-qԲHĕ.LDB5ҴRGUP'5ס?ZnBGs:I6gjou,c(]"ۗ)MwYF"#Uh8\Ȓ9,VY9JҬ.jXI9kK])Sz \p&r {CB79e>c.6?wB(.vvm2DfUP_,DDo'3czTnclfL5[Yٯz| H9 JƻTmmf"V&utR%zFhš4*ʕJasdӆa)ɲ{ߔs[[7N][ڦhزaNG͌k,euVxDIGQYS/hK)7 I/ӫI*_mIOBڌҒ_1Q]UoGg#\acC_ln^bʂ*~Ťi̥,חTGmEԔ_ h  VŦUo׬[OOz[Q,}d5Uܱ-\9.JnUy5W0oк2gۙi\S*yߪ}j/@z4ZwkĎY:.R]Z6KQrUqm_jMm&<+a=T kq7$,uê'l3lEۃ%]1pb$]upjhbW/xt'h7˛&vatl]3 Tq+fkj:wo]qJqʆs-g._[ZZrpy5-txuT?>I@-P~:hs[]Nit{$VY&zP[1#561SiLUGPK 7N5 8tensorflow_federated/python/core/impl/intrinsic_utils.pyUn6}W\8/ 2]2xk͵7a]XJE+Lj$E^Rc'Mm-sxHC٭g0Qufk_~ !"(ҳJ05jnq QC-ڰDA54HKMQ fB% { `4L.~'N5He1H@)*+ $jWWv@| Tn9Us_y\z_^m˸g˔\V}'y2}E}ϵo#4i;5*xN4+ނ7i*G Ҷ\#Z=qkOD_\(J NFgIHu 24&8s7hC@Z;DR8qLKO'dj,D) %7 l-jIrF!zkBNXn#Q,FVTvP6JsB#ER iDaAll1w)Qy*[[>5_Z6ۓV>%=+ygaY%rs2ۑ][,n&.M1τp{=՚J7/Clf,/n|a5/aȈ tӼWOH񀯨UF;.܋q@6e\qI:yz:X@pC$ݵE;ǰW,C(DN6qeAON = r͍;vTDʻHʕ:;0nh[ϗL\ޕH}]fZ}щ;c~(;CHګ9V=t>xt2dh`܋}!uu՘M݇hݨ}ލ{-x>N4z-a^tBK/KWCI(~O$0nL uH~PK 7N:._P ;tensorflow_federated/python/core/impl/placement_literals.py}Vo9~߿bDnBRQE:.!:tTIU]O+k-l/h7㽠!-13jkWJ.VU[-%+N FRm\3s0&.` 2ඖѰb5=qmt_Q)Q5ےTjBZʒuU &3NaW>L0KB-,6~PjpylbJe4d>zQ[-4r]lU`lCJ+4*xQKaK.bQWC҇ i$Ѯ(ՂZ*VG\i1\H5֢礬.m )8Jwe2-*"rVq .{pw+7;J+n\\|GNs\`S- )]Wn!LPy^1:BՐL劣e߿_} vX;R9^q58̔ҹIa-yG-tv7 F 5u"ca<$sP>vc)iG|r9sviC< ޠ]i6j$pOϢIt}AnYU+3B{@Q3UKiӥkt g7e5edn\D9$=ƱcP&p :{M ԘsXYJ ++F?5U|"ɻuQTԈR3$={0rvUZ"FŇ4D\զ˳7{?|)]%^|/#qy$+"iRU2GkRޏC:6:EVߌIQy&^G/ aa2ވ,ĺLDZYHD4IVH31ɗEgD< #oD~[:+kfqE]U~1 (/?-eӇ㓏'/c9[$e)봀nD&-E^x^$]#EZ|$|V=EPiYrЃI ^q&~8??]^/Rrt~~B|:ǟ>=<z'>MǷ#`iU dtLH$qPJ&,:'b?$EX%f M"]U\'IE{?Ñ(qTaV%`+YR$S2YWy]ʫ I3htV ~?KdHVG<{=:K+Q%eU y&(+F\Lq6bAvE@(9RqO!VF()kZiKQ,S`?Pŕ(Y͗0) ؉Ex脐L S^T@906uI"[/o?Z~ooVK1պHcd[ `1l>M߯ |Mp̽=$_,ԟ'J}TO ~d[% j'\֙x j36q}E'^zƷq fH="$$h"UHSah*$vOwHAwfIS\J?/νa[,xvvVcIƋWZ]P(Iڳ`,*he0xU&1qZ29^A~ {BC&ٝ~6dN$P!Io*pr73d11cʚƢю$Fus(UYTз7o.߽#HFû;W1hDPEF1aLT$Xa5^Zl3u$|G,"z e>qQAD/|F߁<]z1%_"!CA^>䁹}qDrf@Z)\ \ Q[KWS) ө7I30i)iM)5ag MfMYM4 i MnD}DC)%g =W98nNlO}"NKtLfkYxd"KYD 4 *.%ˆܥd:\|ޖ8^}NcemU,qkV<߸b;Qe+fj;k8'Đ $.˘,ݔ PHlqxPL}Yq*G Zs .whO&:3M6Z3WчD\czlkQ*CVr![%C!l']9AaWY(%㨾դnem[o1nI)PѸIP렦WH1՚r"ߗzh&8c.ץ2Ҳ}AgJJ[HOALj KN;I] bWEk|[M9Р:#LB2I:`7-W'Mk9Y=31}Fϵ ;d&LuH%A!v%%(6圣c+D |i >icѻEEPLyAJcdnLx RL$f77q&<)6V:[h@FHálPkDA,![!6katlsexTە$Cp6ibvqqG1g +s(1} IOs?á;Fb .%L ;> Է~(Gqg{$FWizD1zsJjzFBWCR'EЂ/d0=l;pbAe+1Fɦ =IH5 :>D0b^_;ݮ{( u0!k%uw"n!} E}4RBJ;>6p6S+.O`T8a#NEw&յl<^d\,_'Gh#a>Pr[wqetw&rW>^[]e#ǔ _c'neF9LG/=,e4/Ķ3;*g'}&=DSAg&*2/s&%GFDhfX#Sw)Ɇ3t-;sy.-'X:ئM˶/ !Q꿶@Y@[0 _=ÀӾCe. jRV &q eɚu[ Q8j=cbX4l 7pr5V&v&D/:?NjWRD8 tLTsc!%TRۨfܔh#ǩRv[7!*P+Ē(4ٚroPA5~p[pHnD/K 2KcZ2/5Y^0 9laso,vO(lFp7rԧ:yq{Kdh2dQ0\ (NCB,GKfEdYe#@n`=`04Mm-ā g5cBlrC;L(8860Fׄ ^_6l]|I L-bp?2C MxOlmhDh'cT2cP0i͊Z+aUoj8?S햩}R 3i5V\Is=D^i JTX\l6Z |Eeç<L*1 <` u*3i0p`0}\9tb+̍ҩ$FxƯx|rGb?nX bخn\Ǧ 4 nکT% ]ƵéMj#]g3Ub6O^|Ym˃Iclb0^- 'O^44ЌSCcyUlŅvk@R}t!2ae7$$""+hUU>1VsH#[=ιMV` AeYRM4qƥU$BJ1muADuթ$_ P4ECdAkr?&MsZ+.&Y2EX⷗4ۍX͍)NZP Vg9kt2xyc6:0/q 1^]ZރEfk)@t،o7cb6MJdU}ҙ.cD$z,w J(0)60BF\SF"vˁZS{3AaŜ7rG?GQvb7R"n>eϊMyKI75LkyB4Y63z)9J8!96G"ÖelHɶAQ@gV6iit4no*Lh oqTv cjgdx2I'8UbGbyHr y6錗ֲj,[6fy/pt.tYQK;]Zق=6L }vܰV_Z,2O sAP,g`2)d8.cV\VuCԍϖ]gmd+cU5#q&1U^~f-OH‹xey=P2]I{XwGG.h5,VJ 'ZSΆkf3~4 lZUq:FB7W =)긓)O[ L_(C5P84s+cVD᰽uRw67_Jqrd޲4{8;#<Z~yb0%Gx5AMYcߒq?&cqM1!@ nnY@kf?"W1~tEI\LBhdvCY>7ilOQ@C?yOr!剣kD{]GJ㩉^DҏO۟^z~q 7"NUF*$ q-cG=Wቼ#9Ύ]{D$'K*!3 \1Z06-&msUy]J~;`O~Q$*gbQ{^QOO'Cam*Čz|+{Pz@pZBKwK 5M/H{tHLEySaYgGwh9ߋ|'b6U\l}bxOh'ɊMmt XY9FN^gYHhcJ'ЍŒRlPڔ$* /Qv@z*2U|'+SG/@vlX<ೆL,` $M$,E"zbJT[zEW|ʡՑR8TJ,daKAY)`qU?6JQP @-\'PK:mNƑ|_^w4{C ְZIy2O(U4FDݓҍ>5zLj`۔TchbccVH?R3}ʠ:oS\^yAoz=>UE2_G=}[X}솶L?:z{|tq )f{Ç@e>>:1x=HInhzG>.DzA7\C f"EomA,cP◓Ϯ >՟ol+"#/$?xr~z<>y%t}ٌ'矺y#|m{⭻Kj\VZwWeY7><`E ,;#.m"tfY-ơppYg,-#CC(,+ 3R7ѧyR*1?:ĸ$Qvͪ>a6".P qi4lBUͷ~8sfݩ(0Q'tb3CQH'piکÎc|ǘcXχ=c]H}l"[ϷyY,~m7p47c W(4vaooȔ4 &7ݞF3$s]^MآjSagzexQdk`Ӻ;jH]EJQЛBqH$2 ~+Hr/He@F%f0̙h*,><ϨX}@ʔ=m]oZm .ӡU&S7?}龶p(M1^ߺG~P[u%kvc½Yz`H="T@aoYb!-G٦O.hURwI=Ֆ3h4쎖jV_;a7Lޠ#7_%OT^$ubg @]OMÍQx }"_),PunXEHC0q4e:X/*nAO%(1121X~Q4v2?~ (-wY'aXī9?VWv_+6MؘuM:YG1>/k2Fo3lH6iWά8ýf5F@V*yinr6ϻ Lj}`%r{̎#F63T|8**u}c܀ b ͯ3Wg ZxrbI.gL{FjW<.RMeSUyUIiߏw %W܉QР}w6=2V@H9n1rJg*dO#*Y]Khm"Mz,{c' GNutǦZS,CJH"@FjӖY3444Kg t~=Mqﱝ)D1%l2:&=p>so ~cN49=. we6R*vk†~K_3Sl)58=ÿPy-I:#!?|^,` w_[ ZnXHM%P@ڷSby%ҝ5Nbmuq#(,*\u:Ύz뢭'Ck+ 7w_:1E6,MiyuF -c)֢̚:.9mfC0wYRn^hseڼő sdڳ\(MՌ}|I+nGCL] _*|Ҋ1+3|ampn:ToFq'@Ϧrf:q5^VGk?uiFk»p,uFw|ZpAHo Qd6K')+v0bq,VITxQ-ޕ$/iKkk# xo:Yj'tb?[yo%-cʳ‡P{MH୪4fJ;;D%/ ʿ뺷NO7[4Udx^"=i:8XTj:Hn1Y.)(tEV=) 7ʁ\+1>z*6өy2k>Ef}2amQi]ed;S3pGfH6bAp՗|Do\ZsT ];]`5p~Ti<d =/̤N|.؈yu&L`SVg64-eiœo?]h4BdM,>^eΎױʈD>ڟpk@3zg8&(Wy%WoXKƧyWc:zDA,?Q!o;yXȸc (%|;Z݌ZڼnGJ1o mp': kD-A)C{ILwab 7; b߸֍Sc/S)N/@j?4_ao5{23Bs*VG~C7]"/~>Xa"!; W4 `]JjtlV+q/ 2իqG5ui؛{ۜΜûCWp]1NnxǝBT/LT>/Z]z ں5Εf,F}S]vL9)Jx=CJѰ! `6;,| I/)+j"X񜋦@-Z ׼5l /992u%tv$OWmVn̏}rcΏi,7_v&H-(hW8E>ǰk!؀ un ;^]{p:mg iڕN]gOk̎72wPK 7ND Ctensorflow_federated/python/core/impl/tensorflow_deserialization.pyX]sۺ}ׯ@K3Lt|'ڝXI>Q J RL{.)i&$(`qB/{]z!ݕ~kʿM^kSlxV*rT*"Ezuu!d?\|RiS+1 wh8Z JETh'2+$B"1EkY&J1!lT-S6'gzrGݼNoe>rNXZ[>YDaf.X!7Va2xof.^Z-vuGj̓ ,Q=^ǻ9t|[R|^|_>nypwbq\( Ǩ/%a8Ȁ\~Znؘ%vMRhu͉S9*J׍h2X^ 9UIȬ)ʳXƂQuXQ`mRNRU)W&gMBIҫ/TD M rB^p3#P%vg^iP҅%'Gyd ]O![zY]&|2oq'Qgc2XڙЊsRӔ+ 'k | ŵ_un&(Yc YK2Qe7UfjTs"3:oUK F k"BGeceei`_U,DUNDPBZ3@bn?b;4S.Ļv {kr0ZQa+I*繅cs7~:,PJZ3y*${$q'FTx( s$૲h  )NLoof ą8B'#ut=LJ00PȜ;@'w gQrW |ߌ0 dȜ= IqS "(=6A=KP)*.pMHRTsչny՘%+!1ah(aS<}T_Q+g8SM 3EHp;s uPD ! WrzL ޜ򫡾>#E:!SW'[jurd V S(Ѣ}^*ԘeCZc] tΡ5p+% VD,'B#m;?k+゚MU7}d@%iO卸2Rvm9 oߣˈӓCg \e?R#6 FBtl !A4l3օQ>;QGmEbC'BpҸfAn)tkqՍnd^6[W~6L.zB5xNQ"+uD}1OC\ AZ; GNoJ9%;N(mQLF"z.s@&x5F(ׇt7{\h\W;pKC"י88yQ!R0F#paz[=774so6Vof`g) hDKWc"YQ럞ƼxAK&}I=ۀvzb/6. [ 0 U>I9JUڹY5_sO箜a~fIaR{]7ks:QиKжBI)4IHA'Qsre Nf6?#X -u7XyeJX%jCNוҚ NsV_T hteyT*m7o.]qC5d ~ݍX9<,0Z*SrـX|!Ii >W!PK 7NSK6#79Atensorflow_federated/python/core/impl/tensorflow_serialization.py[sƵbKC4m*+Rʉ#y,ٞK`I". y ~$;;&Aٳ;x\jo3]nM\U[)q U7JJ⢆%FGE;.wQR&e,(c3]D C PZVU@"bJ*+"2d(ɪmoWޖ~ {BV0xDY=~1}vy}{85\Y+g8|+d %rlr#riVidxc*+caHJdH˳_yB^܊xzq;ӻ޼o/^^ފW]뿉B`4?0UBUB3CTI8WR~PRufQKJJVdP*AVLٿZ`]щ`赈E]F1r $OfKO<8pO_vU[%e}[*{Ya}/EѕN<7r~֓Fl +lnsmcd ,:U~<:F#eR:h-RV2Ҫ_A+$$4\"EkjL$-T0^mtR-Y[cG=Ίײ#ٽhnGߤe֊BD Xxa \\Y9“.vVYa9,?iTe{#LJC3Y!<fs-62<ӴqdJȼVh3\j+Ɫ=*(w}e h­Q{勉X*P/Ӳ,YJ/lv߱9]vQAg+PWZ{ZE"rJ^]]+T́1=*WkUT^rPșUx;^.0r[#ءA-bH| 8$CF6*gq4` !i@*2D~ y k@#y%Fj)ˆV 2{PEKCBrN6H8CD B/eط]3d@Θ*BBjg"gcǴY֨jO<b0*wQgnJNY9p*ctL< f%V*! me6:z XfDwv#j`3L1+MGf,sv(FL1EZ%9,u]kS Nz6ޙgt$VM4LfE@0O MSb`|cנ kS╳Oadj+|ϛGP9nd҄n>OBkәKT?^z7 5\LMYpd)REH@alsx7BaA00F0nlkdVP(d #`<-:JKȅ5qՆl^fcu#"v-Y>X2c.-1)ZdK.m]2o,dFAuGd9Ȇ.*T$J$ȘHLK#8^w?^<&sꩶtEdJ5(&$ ?O#NAB-*d4 ь>4=W +I,lUlApNջUFOVr%>rxW}R^SV/:tsUU_ d""Q߀͡+Mx0#`B8Gpv8qC3k>x:B箖BL6ݽHA/ qh bCΘ9_߷>b?sNA n5~hx$O&nnJ} N)# ,\ýd"Nwu|#P#Waۋ`u*O(U2caJo.! bjuVj=Wi0h,QG" Ko HG{1K"Z-*NCc"jXjk!:tyܕf9oƂpjPmǝ{q ukn@л=r(@38D]jD>  na@r!Z}# kuaHDztԌ8ɰhf@ ˈRg `0 󓳴WdHd>6g$, z&`Y $0s_eTٞ;,A?`r6T \$(;b9m't%Aif z!#*ZFcAVAبvږ1q1@<**քLH U88Zb-9(UzHTf%KKrSA i>^~|rd9.Ytҍ6c@T:qFತ4l'S8q،}L5Zߧy8%beO1f4vA2!${q!9d\t/[E!'s \/S&Sjaw0 kWo߿ FJ3 .3vEf]K,5G9dgߜoA%u$@P`R]2ȪX ]g-= v\* g>8FSKC%dJ$!a;w݈ԅx㰇Ƹ~+"Z^!hDŬ 14Lj]![": KVfQ8xwIpV=vvO9N욋0D{ڻ!Kjnfi23!8bK?ݢrSuRjnW{&5n R +֛M5OvQЁPH1_A'7h[n$)%{savF6,!Y!=fwr.>i0Brè)F1w)<>Fn; ?OًM]^\"t9&9a_`}!ޛ㜭ԴB |Muɯ=5_Vxyv\u 8 (`E^%." Უ1ixBʏp_4fv^^ݭ׻0=DcgCaȒz%m?Y⟚违+Hxh~U|fMoPK 7NeOx?tensorflow_federated/python/core/impl/tf_computation_context.pyU[k0~8/)x./c,m7B1b;bIrHVjQ|w9sp{ ֭zT7[#ꕃ߼OaBXڜI3,p%LZzblЫsQn[Evph~%h fah~ naͷ"Q x[`@((a#*$$#^:NhNNr9>:l6j3m#!y>=O_滒h- C.T%ɔ| i/xcNmAb)uF,[< z|q>O<%|&"?%L/f'" &kNR@x$Riy<Ԟ MヌPbEm$p-*fxaYqIٗ`,o:G24]A%_\MGRNl+ь*hSKy{0*ȰT8*PK 7N`ԟ&=tensorflow_federated/python/core/impl/transformation_utils.py=kƑWH&\r*ɪJϪ$K+S 9  5O$$WD14>WFeLUF}MV4UmQݪoZY꼅Wj3;s1k[sKlȓM^ٗj>GMUNUZDn&/ҟVzרTj+\iu744Dl2kSYCM;YFΪꋂG/7o.9Bj6a;U4VUʮj Ϛ &/T65@Y禩eDԲ@T_/ח߽Rx\ԫo~}׷ԟ^z4 џv5HHGF]h!!ӫ|`]U]iuU躄娝46o~,jvgØeռ!uViK 63xr7mz>Glti2 [796|Wï >9qW(4=5uSUqMg̶@c']gw|cԌ |[s {1+n[f޴B?n^czY7ylb 0_y4d$=Y'4U 8?(,rYgpDG,HZ.7SmdMx+n@c`ier `} ̮+]-) or} 0CGy=%-/ <$&MM1%lL!xH''\WmHA<_ys,ǣLArmp2Q`Sd'Bh+f&79#kԮB88hx۲Bd26dmvg~2 T7iSb<|E*` U<]3Eݮī/D{PQ!N eEݩ HXɗ?|)Z&8 CI7gu6-z#o&ZV0b O &^5 T7`! af@K!`ۧ%"g3Ѥ)kU5㼾2xN 3u'_r^G/K|s~:>nF݃CNl\@?ab#L$!ja -|\uMl'۪(xzAǺ‘_1N lu0Cr{_gM6;u tiQGqrwzg;0v\HkF"6`_hAzܞbpWDY](:MUU{mܯ?M`Ktu{DTm%b!3^_B< VF}`dEI!/gG(2IDŽstuĘX e|=<#r ;YрP~S M̤AST[<+U6Kit~?g:sB툩y+]N܃zwa5߮i7&Y6Mss]VE k%-_yJOvMOʈ=S>7i~~:I(j;2Jo1O?f1MF 9Kl+`ް0tſ+yQ]WGr'jԃehq, G=%AMڷYYWD4z0~Vhxv5)mVY>wGk5 W.p BZ][OZf*; E|O:`1PJk>-Ƴhe+qEk-3SmН٧#01Eϙ%kZ.u NZ828 튪QaN[s@@䫼̛.X+@ jqlVƂ`2s(aœq ~GxL=MH0ID!#gMU-OWjY|U8?& x"@j.|! ~a͋U[*r'"-lG01CV!@LJWeV#*(! Taf17 J7@hY஡PԡV-l,`FRĤ#ӺC='#OZHK3p0*!D?N%e);BD0eK}$YvkKaod È.N#9HVA $ DAc6b9FQ(cv3#'JL,:8B2@%nffMW)B(~7l+`Mƙz7RµSJ`b.,:4_cS7I"P"q.@=;)GCsm[ YjlDxSw0]|V5&hSϏEdnuj[7bͧPr[  iuڣVusR sAJ l[g*<8CCڍn,~wM[ѻj{lP#O>g?oW݃U_"9ї7.yYR'TIMb|^[:]28+!&_..j%޾U/,:(ȩ;FUa*HRMS9\6XQY?y,0NTqicc3~KicSSJZUQ\')U\GgMI@_jw8J42FbQ/dqa6*R@uBd7n.HAl7*"(=NNBT_ܿoRFd\pfkΞp@jl.mU@rei6-[הp.翢*k1=ڑsQQV͝j@~CMFY{a@1h'Iʃu㭁0(%,Nh(1/m U3h ;./M0׺X尷kP^2[g.|d,J'f2W;]àKu,,!V~LЄ)_CP3g彵0 S|J׎a|L]p !m VO:+EY (3(w]Q&Muڅl$$-СZDx[`u(ےO\*.'󣔫}{:26,Ӷ.= «|  1;hs ,h'KTJIGJ@##_Rq\OH/,,@ 99Ts& P2! ؔ㜅~6(H>%qnJ0a_IvYJ,e+mWHoXd-vvIty_ܖt[97nrW!ed x :]=Rl\6"*`/WQK zM Hq1ء{90ܝS6`5;|GqADy.jO{!F#2Nc-XYbWSN\nj_MUHQin G0Eenmjb$*V>;lu1Fw~gg|c[ z?vc t-Ssⶦ] W@RNjU 2P J+t+vMKVC]%3N>M%M'44%ia},[@N&s/[p)1A?"絗k &6s8[ ٖru{`_<[u3sr$jGғyܱ g20VHxҢ%(>Pos^=ny VK -a  q=txK:=S k!~d &,6YsK/9F1joPHFu|4yrs~R'rGu%a<5e+G!r% F5. w9UҍUL :ʔZ[IH'SP`+U%J,לsV>r&$"EzSd$ڥ(4xiWA8 2*vA=ˍu@R@>h;h9~`v79 ǥ?:ߐ~hVR7ZjΞ@ sibMe)uA-B7U[U:E_(G%IŎ(6؇=z*Ry+dra{BʦlU+ˆAq%,=aHw̓JU&oi4'e?TI9&U-ɐ>D&agEj7UE=?l-浣%$,:|(KkG`^t^~v7eUG{qA]rpzȖmʭmS_Ja rX3=BmjATZ=]"rVSЖ@ AZ/?bbo&!(dNg1W 9`6m6_V?j…L.b bщJea;)k{cxx{dCr/b))qwVf͵˙GKK-=$*o0>RTML#Ϝ/8ݦRhʩ\U{um7CT$R!]ɳ /t+ X etdX,]3˱1j\"y_זz߼ noQ$ _>r &&m`FwnmrY,p<1,?^ȥ9e7oh$V-7_ʼnK2ܪ~*aږ PB|_‹n@^,g ܀K* @:Kx"Fu7 r~] v21~Ȥb8f(Ύm0ju*,CxW{(1ć'W.jv_}a⊟/MCs>voxddpCU5XßQlˍ\aN%JAO|>cͤqg> N]3d$\VuYjnUw(H_Մ`ڛ,wBH SCƂ`Õ+!Wo8#HXnVc3QQ+nyaWĉ:x'5%zjŕ| &I3d~vpF]ji오w ?J0AM'`s ͒3".qKŬ-CeuZzpE%vd@6 V?kw]}~(Q;Vɾ$E/57`KE-k -yċ\oH? W , ˷_/x//~ ѓwvg퍣 [<Ω۰z$3|_ÃNW2s#C,&w5$S/79v5&sde"Ʒ0a {us5N/Lb7YdCs7hm^'.vZ=A$Lz"tb},~10^G;6J2Vʤ[}AUߣFeb`X8_*F]bQ0;g)`327}UzF~hMsS<82/8k=NX=x I e5YPU!2=Bwj\ ٔAp[~QW]H 75rO"$KMՖfܧaݑ5`c"8\*`3 GE[BbṳpVbj2'u. pt5++aCެ/N3<>[ID6)E||C{W8ŵ&p߄n,Ydu/t'Gr[ 1D4 LnZ4oڅ/QR1䬀`rqYشv'q  >α#m m(iA;iT,=Ƀ}UV9+UUԍX*LgNK堃e'>""dZGu»ׄ;U&p816J1tj6v~n Oy 'tmd+rl(yM~v039-JW c+YyPazӡRyoEb NީùW; S[lZ=rƠj[>¿2??40f^4@4 K;tE&C\˦[O) By: jH:s)nԲ#1FqD>GiS]i%~ M4U/ic$7Ҹ )cq vmAK*vČ AW"ÇWi_P؟AV5oWG,.R9U> W|ssN]NB:Q~3s^'_g8sNn=O']nTY SmXmE/X5_3X0dRk`>l d$ce?N*b]})T~c[#ٮ338R"8w~!U׍0Cv (S Ԃr=( ֜0_%WWvg=ү8D/szpcvh3?%NnY ^K)8j 0Y)X7Okߕ:>ҽK($&v&UUPz;Q_':jKel jơPK 7Ns~t0_8tensorflow_federated/python/core/impl/transformations.py=ksF+&s /W:ّs*9KIjKAr(L Jw_? HlVX1===CU")r]]ٿwr]Wוx2+<TI%hM2=V OW.*htL&e(~Ex}|WbEWbUJbΥwDIX$HqVԍh*J__3=T0}jymQ^\='Oώͯ\("YBd hΓ["*$VmViv5e>nBiZVE:^U4z0hW'Ggx{tvr6Ͽߏ>~<:=?9>?~>S8:By,@2E:)LJYK9Igƕ]+)Yd0"-q6K@o P"4/͓2c%ZaJ Fv%[~.*HT<F0E@.0lWe\s:0r BP39-cJSx<' mLT [~JUqY%O8);ѹļp#pdN⩜4G@*6}}DypY;KD2I+tr-i6E-7I&LARsQ\Pb]2/ AW%30L8I2 I~r9O&lǠFT"ş(wx+'OQmfd\Z[yϟGqqw 96G9 xBe;n:,@8ax ]q,qF8*Ms. <"6yeR$ gUZW!Y`b;jF8ԥ6ELf39,%19,$:DhD!<%Q8J2/sMf˚')I3hIx[@>hpQqU"ӜYդR}ZrtKXXyBA(lj)qf4cL51 1"eŪVYJ%8BHdCԈ4K#9ȋ4bdq-J bDѭwo2 ÀџM\VD=x1q1M *# 8//Unq"kf2Dlal1[y6gCЀ{iFJfr L}O*FMjX_;08l.38)U# $fwp)C^h>H؜z'O爹oqZ~F_RGo0vO˘u `fNOˀ3Cp"Mtm?+w<KV3:c+|u<տi*FP]wo7;=cl0Klf7'r{EH0*Q*L#,r>SrR +%DrXZ!]$S|VJuUGW+0jXW [E߮a%}Yͫ3HÝNKNSx(rE 9utalIqZط[vMiXxt<0TPh"oU]  2c ?pfHkUPfV3  -򣐁 |Ow4ɽlIie*&r_>;G^qs@F;#e|s'j=/ ;(DŽ:F%ت~@%Sч7a19hX&OMYq^e z y [9lU _:bSD 0Z"RgbRI䫣e!`Bd!@+>&j;. WÊKci޺U_Tf/0<@u1Y8/EZtww̾O> TQ6ȯ^n2kRªPaQ{g{9i 0(+JsSV/4jc ŵU 7s.aCwxf> +- Tm4%4]ۖTٝYشb㹎CS@KxɄɾ;qK{;rlz>^j9K2|&',Z ZW U5T 'gAourKV/؜%eIo^AHMuJqE5WB#QBE3@2à錆P+p]jު FMY+L ç7[X|ʛyP]t5vH4.k<\>t.by24qJ i9)WStVrm%Lյ^mR)n-1G{*A@=Gju$|,eyEsp!X$bU*Y]49=k!졞`Q)^{BWDz&_|8՟@sˊޤA>9.x> >FMSJދ(.C_:j U{ܽA :v \"f 9RFW͢S9'*}9fm24`B%wb(,VxUJ3LJjM_I3-u  8'hY{Xd%%yr-Va (%KCr)`7|VzsvU v'/^^B|'A@p";3Zf.Q#իH? ?'Wįy0mWݶ!KCū"o݌x/GD%Z Mk063M} `!7٥_xGm.Q98#g'ÖΆXE _aK8O 請^lŎj_tAجgm] s=Gbp6%X]6}ꬌl쯛f.efٳ,-d@UR (]{8Mv<bw]W z%Y&Xk}HlcΓEz5hP؟+~qz 0,!CI^ܢkcÖ/jYZbua6./UOjwq9Ԉ+wgI)G kSFy1j q0p Zbl=)ɠ)q0ƚlYX9/%gvDG#x ayn-M6歎~^0 ~r++#׳Cq >|_=QmBظG~ʙ{tˡmP&7aiR՝n߷j m A -{R&& @雽&C//oo^_C!_V'#_ƾ':^KpszD7$SٌN.rDw48epb Q,q0:*ɪj r+ʚe뒪O?}< ҫ-e 2Q^z畘8,)[t#=?D3ZL:X\K킺9;K4>* >xOBUn+cꅝX{R*e^|zfOmqcx͒rNHڼ-;'šNqJ=;>CW Yl;Ӛl9g9eMO#=o~Ѿ>n *0^\k dCfd 8^e))yb5+\cY&ei"%õQ Q@]4QKSPȝF8X[y[RN"&^m#p{lK"6GEY , P5+o f`qX0d5XuvHmۇݓX{%%L׆GfcM3[WBٍ32lmWFc9Xzg9 뱻h,,G[*"`wKBmAB3Ɔ q|q6!O>5l!`mZآ4醬2ZȖ%q F<akXbb"&'h_T5Bh"qΑFHAm" Yft"qv׆JVֻgm?֩n 鶼p^rO-V(Uo-jstlX`[)Cs^AVձlmML6| FX~63^Vmq65v\q<`M^-{ϐ&(.$ftfСT\²t]qz*-tsJwlĪM8>VDר3T.좋k6m[?K1 ` ȋXoļZU%߽2۫Et;'oc4&c&4^=Ux(񷚨NC{gRKY",vv~!R_F5) qW/EU,+UgOk}` UNU>z| @w гaZkdcl~Fsq*9# Ugv9r<ܪ@>D=Lc!{JO;iBgyWi՗=ξCm`u1&ke;m-+X6`,;@DyLPq9&{6Td5O .XeDZG<#e%-IwM_MQKie|ӊ˒㧾e%)^AY؝C1ΧnԧR5P=Խ.˘#nG˞ht׋X^0p6Y.n`t?C'M?4ѐ{Vco I$> 3JT;r2DVA(9gy?nݣI{THes7'pX2Q }m{΂ \GϹ/ni]Wn6$|j<}[0 ѫa Dt&k9h-<Pגc{  C5ɟ9ԟS0Uz,WT/ww)t9jAWRCv FgC( Ȥ-q}j:2Tm2.pHeXY>\ !bb}b̓GS[Ts) !da4m >4x I?ׁGgepW0lh.~l]Y;Ӯ 2mVQ~WA3[})3s,Zyq BaH5`?STq b{Uup.k Q=ܙLxm?\7l*rt۽(ʌ Gy!qXDܖzsi~Q\Ef/8q.v y{K-ťQqڍP;%/ۃbk . ' h|*?wNwXGw5yD;M,y;_]J|V'C tMbo9)F|b̙eM/pݔ9=)UnS{*e;cM̈́qjL^=EbCLfLm+=d~P@Yxx`A^wlw98i{Q/8I ݝ{HWu)/L XaXj=o6܀N2=7;i j0u堝'4ŝ/!_ai^>^AܳKFyi @hls#ZG‡Tbۅ6ow2S:PK 7NQ :tensorflow_federated/python/core/impl/type_constructors.pyV6+ދhiz)Mձ /` hydEACJliwۢ8|| xAV{70rfk~ "Xj&akT(z7gCoТH3G(e6`N  a/*ر=@ 9Ci,8+3ۦ!+(QQ~85Fu26jsW4a:[b,W\Q=0I2"A(`4g%\+nx @L!6*sց%}@z-0>Lw>Dy4v]"tFs~;$L =L~2=*xsa=OT<p $C;$HY`i57C'WZއ70W*+J8 bvD4GBVDk eF%ka A37/B Cj)~V2~Ƥ26jw9J}i~6 -&/Iĵ R4hVhf xg5nZń)R6B%VE+7`XW9LWd>Q/ :y2[L>> =d}:X{hq95S[F]vv݁XhMmPJ$ba#" פAs%X$mr9KsLQHU2rLz"J#t߻6UXS g֛Q/y[F7ȪS'#G$V11^,HL,%mPN.a˭ bks 3FmF.$@*'5BUaK RP޳*L!غp#bmq&n5ɘ;ti(VD񧦁fY~PyF9c-&Xc=76q\: WL冡6tf~眽/sEl)6BJ&%&-5RPaoXSYv8~qٷCQTm{H:{\܏cvVK/\85de&gwf9@>ZV_Y2bvڅin6q"2哝OZ&`ԮOc)NdM), ZpKe+j7o$j eS80rN  pT^ G%Q95(1ͤ$W K[X9tU U ~`u}{PT}M!hgnUTArZ'w92pu,/M`s?kۆK5}t xSepqsiv60vչ ˞ JsB;-ct<ZMsԄjv6-!^)3~]|hT0"HZq k|8+{Su;W.T~!^EYoX҆O$h哬`^r͔<^u&]69tjJ9Ȕ7]08QŢhϢ8Zp9mjVEsa.w֯ nu,*[hz?i ڼs:}|VRAqݕ$9F{J7f*5Ѩ|(iw^G*$t N37i |P.NxxBU,_ˏ k?s1t]˞*SMJ=ʎmxWP[儣' Z7t$輕5T=.\r i;- 0Gū @#_{=I2<5TQY$l n_;88Bh<\ğNoE; |Kz%PGSV߫\ZDp Uݮܜhai ةSXxMz?OUs(A?YH.= _ p/WvŊbPK 7N&3tensorflow_federated/python/core/impl/type_utils.py=ksǑ+&VpA%;$EŕbXX{v)5CJdrw([5jk#UO?X]2/~|Y/dZ}Sx-j&X9*j|">}vV*Vm@Z\UEz*rn" 63~-Ts׶>{xxdo?[g߼zcj\MoۢT TU][!uX5ղ},mQKv?zezގ.ͻKw]|zzׯ._y T*ZA7M1_ Vźhfљ >wma0дmr ly9w=,e^0Oy;`YWk5.ΧSġnjc]-zi9ǡ x^V9=j̳mk{]d*7QS|Nɺq˛:+osYK2DRhOZT&,]`uUNWōU[Wfn7$NSp:n/ze 0 bZ/PjOoC[d^3U69L=(|i,%s hշRiC~%j0S(KwPh2 }_sБPrSnl!Ƅ%4D Ҳhs1G M0 ۲|cy,dj@@fB-6SM6cM@G 5,joHu7b*l(1FvW+ TUCxJsV#FTkn,ƪBaD¼^_Ã(yQ69ᮘ߱f6FJ$(\=تƨHg"ࡢ!v¼>Ro~3ɓ/:W4s:_څ0h *J\X@PA:m ;_75e0(cOXi 7ȃNiSܖZ ]N V7FLKNPڧ똺jM>J<1_k|aY;jFK Kƺ7N kEz|_HڶwAވ{Vhvdr? 5!}Iþ2 ߏ]z?!a <jtm.hl`7_7-䓬A`OdGe6oẕ&JM%,|DC3}&JP˥X0g&)jM 9#v̙47|} B-~>bQQgHQ}U,TS-ِhM4Є:TS1lei} YrOG,аpn,7&̶ͤ\w9;^FE0MBz lMUq_PZ ӱ!Oĵs葋&_/G`e=%d`9 lvgE^?~)9xŌӪ̊;xbZM][ GX5`w`y蹕` (`<̜ BA i{?NƩ7 RBϬ1ЪͦjtHo+zv7hݹaؤuN. H7g$B=s]-(fsISC5ft`j d oWb'9|_5F׵V0b~xȀ0ҩÏ (u8[$ю$hA5ڑ-A6G#*jY5-DLS’ⓩ>/ [_7KZNcY4Yc}3nGLԠX+L n,6`ŧf:e&y<䔅"]%:ɹxЂoDb\wڰ"~Ѐ/>̴|q pPsuRb@0 łpJrPТmQ5k?gs )/A1Ҭ%@CR3y ?Z|4N)RYЮ᛭F,qk(dbυ!h ޳{yDZu$E~$j@KֈfO[:-˗*汉3 `ͺLڎZ8%hͩo"$=C5+6(Jڑ^saV=F/>bL@FB$ nTt:%jn2ra/KZL=rT`q߀XI0R]ۓzޒ MU.f**q}z&Z6 FvQ4=6YDU oiE׈5w)hl$h rZNW//8N–ף P&m6,f hy?uY11P s-fW-p0 lY5Z 5ȬE`ꩇd G" k3v : Jz3;s}r|R~豤oziN\pI.=g;QUj&1?c*z{A1>Ѵ+]x,/aíeoƯSLJgOV-hB4>luڷ6'J01pd ! 1/jr9KēRYv{B$Sc"x q(}N[W?QJ # 43lFRҳG|dT`!|fbv1,Ȇ.pw|+1*ہڇpdMJV̺ObT&nzCK PVyƘoG;L及8 di4WNa(䷥GD|D]ޞ" \FGӯ>鸁 ߳.Cb8 iTl$XH8) w2ΎzNrQS&{-О2Qnie>眧ļZc_#kfTX΢:}aw},)*nDwr Eދ Ht/nz^Kpo}w'8ʝkeukʃ2VїOh=pJfCQ G]bWnsGo* l5yϺ_]]h۲w w2ecg*M4PU3JR_Gb!)2c9Xhe_^7Ο1&g^$UVt5Qà1`;RFcpԳg.u5Q.z)\̲g%]X`O_;7QZ=l8li,E6'ɇy*CMc %=!q|lP }BdFغbJ|MkU2ua7;W~>>f&gY:_ȡ3n:6ٟtY$$) ߭!Ey :!t8>%Dnk6;q@Nʅ](4⤄`D3SJlDzgiӦ _FcL0A?g݇ qoM.CPy튴YzMWMl8geIV~:ÛmfrOֶ:40پ>[}R^fP )cNP9 d}g_p T\}yNw8QAں׊(ZeƲ,K}q NmyʍsDtL6UJ4"0j;V5 YC~+dSc Ux'GZ\<뫲#'8q넃xLZXXdBEGK }ޑ(ԍpN_|^\|uz5}8T#{<{h&c1M~ṱk>5n7&"_8$&q f1C1o]S=Q(pZqY X糄]q0"FxXH^f'ˉBmNg0YIev(`Oomlpue_'*>Hα̘h2TP s@ZG|j7dU-Gg!لWj߰ d&sxvvX7y9os omкbi"`a򑍇x,=`I竦sa&z1#P.9i?/ iΚ|Kt8q -]:TgUPWۻ(:1U^)WK3p]iK3#nZ/]G;7PzLˏ{pp-?ګդqJYu&xeSd T˽rbKdgA jK':L-%H"ĀHþN9YEՙ&} E4#Tq+ F<%ϼD V0F2,0zKf ]_bV9֗?^Q.0 i,0݋K[rVC潿D?bmP8xOա[ WF:3@hϏ p0G1j50tG.wDh-Y],Z*p~% IYzFiLꧨTB$A1˝k:m]-r#1oXq*/Vzb;ϥKUaFsr]iP0UB@BZ4/>dk]@-ܓLf;:Gj;gRBې~U_KCb'>_1~?6达4կϏɻXC:eD R&gX c[ M.z\:8]tx7\/Nré'SO:/OJ^m7toc慀Δaz}O5QQo|ժxCavwj$Dvҳ1y+b`sl1'~ʙF5gmDĊ(C>du3go |lQ58 ƍHs گ5VCUaE 1Ԡd4ɠBƍQ@9rHC,BtbSY4`MD!BݍaX.DEe7vyi;X8&Gipe_֡RG=M?ǥ"LdU@~p_@eq30ٝǕܾ@џ1#F|?F܄#2ڑ ቸxɇN&D,RO׶EjgI ,)[DNt2ּRJz%OXȅdk{#n"+(G cIkQaGli8\ r IkfbMXv&'gȔ㹬> _+]QO;SKfrytbku]$I.R#[7\"kB{|l)BlGtјb"ZcdRnlґ%@{{c3P>>g0[1rsjikF&0$ opM8rFB3k/ΐgQvHd"1zTcxCA'|VVErp?:a?f%b%GXg0pe[忻M<*m둒0(R͊#9tc;jؿ9!Gx %Dj;]DtnC<ސo/IR,e))s@8ebl`ʗ@$)O ie5iT,B!deJ'(|[d jNQa6ɷ78َj3õU׭0Yrh0 <)><2 R"-*w7N0d=X@+AtKz"eDf4r&. YZ\*kIۺ;7ЁdQ5uNd/ۆy.`2l`)UgHkhҷ&NtTȵv!<@eИjn-p|`g01T"@:Z5m\pEz\qt5wzkڞ>]đR* AboX|.a]7gn"WHK{*oѹzS])$i,rt:W_D{ΘYg5R@ iuD .T@_9=,e]i؆\c;&P|2ڞ/a7#ONZϲ,NCG+.ZF<#krByLja;|fLvw,xp'n!SK_9 $=nNޣyǏ mo-*O>lMcZf%%Qd:{^ź𳓘9$}t<l}jX14Ūm&i"}/k$Ђ9>LJX:ć2׽iP6˸&6̏}m,s]C| ~Mؔ!:8cW(0' .1:XN㆐(,A6=\Dg߿^Şb4n޻=/"7ɖfFb `]xOxi͈3R<WwC *M9TlAbM[ĹG `1y `=9Wol%0%OwD0FEZv (:wR1=f܃D|`_qztNty#p^:fW1lrVխrp 4ixv\RT Qy_αoCMlZP<<[˩b O98 q.k㹣tY\x͜$m5"6dġYh6r75pܙ{`Q:vNPeT,*C';tx9Mbgzн_n!Wfj]|= S9g[*?=" Lԁb>De[^ʤQI'^{"EM>t}+Aب6t(#U/:,lM[xtﭦN}[g/>c-XzA]Xڜ~/\p*" /%AhJK =/k rC[9`X\=X̯kp-]s&ԫIMN:?~~G`ӌcj?RܧM['xs#2-̕x6ll{|E)/yډ@ C_-p]oƠ;Ȱ 㢚pA]B@i*ƨ$t_/6WK,f6cYVȶs_^ V|) `px¥" SmN9ܞ I(⮸NPPIB2[X\aG*&`ΥӍWnTp"4n*;$1U23-zƺd|Q]|x(lN]e\Ė>A 0J@6 AzUu\w@YYpczOЭ[Aj (:z%V Hg`9ƒb FdlAxlxg{{5MdCݛɓK8vn@Yn@Ζ]U.W\mrTևFG8`̝^6Uz0TN+O{:m&X%ɿ)`+KK) e}K^'W륬~6 ~)MT[vmGG19NꄁFLպhj݉5}E^$c}0W<筊nA㳑7bzD̑#FuSTFUT ;9tea0H$1== dEqQjzf'< rmaa쮡n:&]xpGs F"'2H )Ԡp1D|K #wL<& 2˿a:z/٢yӈ_;j`FcCdU_ |ՃrrOEF9}=tä3YTL;b~;IrYŎ,K=]%N"x؉ XP'M%&hgd}K=J쉦pIIǎ.ه '&pW*AtJC;^R{"]d JB;be05%c*%֭[ǶX#1H)ALh/I`nGj +G`>LJ*}PK 7N D3tensorflow_federated/python/core/impl/value_impl.py\mo8_A"iK$Ţ[ȴLۼȒN^$a|Hl3N%rߏ,r*ٟ{Ä]ʊIvފ(x)쨂! G`;ChRxJt'(R;`=ho*f%RLwK&Sg<<劦1D !J9xI Ϫ,/oooCN܆Y|㓳˓1&B)VT6PgfoYV0,<+3dLEy TRUeCZ=XSwtN/ GGgW'9:=?oo/쟧go&L`q?0)QbB" \r!cXWRev#rQBm*`oT%/pw SHm/>[bA?(=˗7%qDFEY-*DJD2Ynsy#yl@k#ۏq$qYw8| 1ei GaQ (X0 uPfƿ(3GYYg (&*7땈w!Pɜ8yUJJzdD=Dm#;E\A%9x4KzWN`#eQS bHkݕ*y|X1Q7^GX<_=z4858q4Lu LGquV<%>TG 5|>4pXAxDM:bJc\RX0R+^b|oJg@Ye*( H6i!MJ[7\a)oDJk GX*=v+@!p~ C eD17tC6.k.¹_D[;)CEnIrkNz&>&j"3稛J腮NN1OJj'Hg|m0kG9 Mr"0%y4eqT z[ ŧHVm_˯8G RcSÈtoVG1~bRMrkC=9qD:np(8iLi^Yp@Eӳ,"Vx_ێz=`s Hŭ#"|1TcCrnTIjS@׳9eS Z2tJvMh 7X6aps vo-kI;JLҧ8 a~sSQ:ƈ,Wc#F枼䝘1 ?П1z]Kaxhk-^S,X: =lθfHjBaOfRVbTcG$CurzDIϡ_ <{97v@G4;Q.x1E$BXJ\ -oP6Q(?;^>Në! A" :h N*)9i#T[ 8"b Kz?}:[sסMZvݷC^$ZLcأHs*o5iP-`_cg [O> (M2}t1n(,$Jp'CCS*=֮8t3j1``-= ! _jaio9/.L3ѹqbRMG{Ogxx}PlD P9䅈PCor$宅bfZc"STZݶ(OI6[ާAt׼8zeX-(]إ5[]zN"D@j"qTP(3:xEBc1$^,3D}H74,)R͹˕2 -8d pd(|„CS%~̼HQf1ykTNɬؚS+!ݮ #D GB'3Vo?x&  [mf|" Ԏj#GZO|lo %{!9m{.Ougmj⃵L]xۭ L_af-vhHrWS䉜LQ7W߿z^}?@6HNx CZ|"ʵ%RRZNOxsm*yP)% ^&xZ(F,!x*BWguщ(G X;A#)^ i=u] ġ/XOՏ(I91fglF,ȉ8,X׵( y7K F/4.줣IblyȻG'<2a3^jFJ# !"oUQ{#vMx}!Iҩ35[Xdc z8gZPdN/ӊ1ǕZ ;EbA*8s(|ҬcZK]($$-LIC (iv-dܞ2'p OʐmB]@N(0tNfYLiYwp(|Lda:E7Swsy9jJ%%b /#v_w7 Չ}"srו*)-@hNC ZǼDCà;xr=ˊ8(?BB eh}ڨ;`[ 3i]sieRX & Dp -` V =Io8ʳtN˼9Ј 0Na$ 9 PZL!h.SFTi]pQnF$rqo9mq Q[{-!Ь׸dN[$&1omPFr)Ӂy%-u6$2zR`NϳSˑ t]r7 DGo1_vE*ђziwj X6K'Aw#?z~F!z2|ٲ͎ *=nOZn2yÈĖ|&u)$Ʈˬzx>f8| k;yL`;gFN')JI3hSq۶[omHSspvq@ff/ᆖ~׳y2/^]_D'/N.Oή'!]@.z9, {*N}5.,GNtS$g#lΫAjYq߀K\Q:0pӍtK0YNe#SU?3fll{`uWvTXSΧD9!(M7[/y=K^C-XV6T]nTs`O[l<{X[k; DzPK 7NwcN] 4tensorflow_federated/python/core/impl/value_utils.pyUn8}W ڀ\p/7 +-iidH-I1;Cɗܼpp\I@!k}p^X:8?=-dڌK1hF Gu%3up4EFn%h ΣSs@[ >Z7P5(HB!K|Ȱv dK)Tn@| _[yZ:WONVU$Vh-:_P&D+ 9̈́WF:!X]0H(yUkC@ z)L=}4LC6IMf')\ueLcz(N/! Պ0")sѦ%dkd!3:Z4bhj4MKrB)e%p˳CEA׻ub`TަhT֦n&1̾Z_8sD8AP]Ak )Fꒊ﯅^2kC3nu9? @Zl jg&"QVZ-պҍM]S0uԃ%fwo0HlmqϝH¾?岨^2'٤RgwoeR/AX]5Ɛ  R+YЭ}9¬P3Rprt-бh]Q@pG9l$\Jy&3 )fXgA 3'=G+ F|\!d[CW"gq%iU9뭒FsEs=a:"XAEm]ESĎh[>mȺx*錢c3;g`0rԳj (sA}J׻6kdmqb$.jOS_N" yZP "|>RѸ;KBom|Ø;F[2P%z"x0N'}aCEPdxj) I"IJc=fG2wY>ShatBf`t/w>O E0M=JT\0vij2SWs[/o @dw\A/PK 7N !*2tensorflow_federated/python/core/utils/__init__.pyTn8+ΥJ]AMcT)bgb(j$@*9PPg) $yܐeP G9&+7=u;ׯ~a682+l+([|ȳ uCZjd6ZYMŠ|N+K} gu ^iiA8:u 1@P ~80@9 rp5+VR?Ȩ=#c]^\lsK3U˛zM{H^GPҪFyPGYc<1n |PܚKYX(7 x_lR0>ۏ[\my;](ZF+(_ra (^1m#6ɴ 5E:GoE { A5b'VyƌIp-9H148rNs4I Nf[` =j6ӖlC{j2л&JsXP .G{ TOĽ,M,&Ha@Na}PK 7Nm  *;tensorflow_federated/python/core/utils/computation_utils.pyZmo_1|*KEt ph jE.m(.K._DɊCѢ`[ٙgfVN ߩ[v|W_Âg,.SK)ô)E w"B|Ze8 'Ms/;2(e$pfF@ ;Y QB"RSs"HnT,V/cU!W4C%M9`J?Jg϶m,R#Y>{7{sq5x9?f)/K(?+Q^W;`9-غ8$-z LԖĢTXU-gn)bM0l>F?q?MonWobv}.az3evv }OyAcrڜ49D""WؚZ"@΋()%TlbJ?T08;;{qU"jIEFVUTy :ԕ )0TU0=ѻ*e CbdTQv5q >0X^.T;t->~4$ TyaCs O|Dd.d| K-!~e*O/F)#X\xw/FWjlU ]diD@^8+^, lRC1 "aj8pk2꧁z ['O;JfŜ%Uz [o)@ L]&kQbQ1Ąފ"y_qZ` >1)L " aCqVADUpl.X}a4 e hZ|,w,iʼFd aEŒWu$łjAƕhvA-GObmH=lJb1"Mbǒh}ࢬESy [+` hAҀIސSQ[OЭ!LÇ6ln慫iҦ} J}^i$5|.ڊ iҠ-)4r^ΚyTTZ9"]4RjJ0赱g A`f=x11WɭpqL$ +NF"q 帤QܠJKFf{cm!4y(;ڕ+Sǚ[׾DSxQe56?u ,! bZVV)28>!r9!Wp 폈KWSYlCYcbxor$Acgk'?"aCZ6{؞i~ijZ}ɹtO~^\ o.sj#ɧu-`#Ȝ8R &Kcd>CqHDu?xӧws.쓸 ∕$nw(r8`X\Fk 3GZR3o5CȾk({ݦjvoAaKutKگd: cSLnvtZeeX ?06A 9xYV1ÝF:+ޚ5J91p+ou.L!2T|Va,v \kmp!N5;8#Ǯi R/>6ek>̪Mv{.QF]]*7H2LGq,IoK̩{dN-r%^yojkd~_Я1JQ?Աv|AtA׏;]o6&ݢƵILڗ 䝑*d$,fI[/0̄pLd. XZ͔W3.j7U5]J Ӳ!`߫S5^jMl-U'_+PH ~]&{"k0\:I;YgT(:@Dw^sG}{} Ӹ4pX0>kڀ*v1{EɔvS#z~134AG%Wt'o5` n)k <-Mӝߝk>sRSGDQgAؘ!#[vp @8'bqoӃmlȢچ . .]>[|f뽮׳o;_5&襌 vrki=yrݑ:#Dsiw'c~'Ad>Dϔz]9>aʁG?^#Qyvo؊/>C qp`mse颾V,XeҥfT>B_Th1}ķA. A[K?j̦︨ _ PK 7Ny>D>tensorflow_federated/python/core/utils/tf_computation_utils.pyXo8~_1Hjt_9샯M xw8lZlndRGRqR9͵}H"|7þOJ{}0ѪwW'4HK팽-͞ne.2i-֥WIeXw4D_͗~)}Ƽt1 ,MM[q$mm//}*B2tfnn"']J⬫# eb0K'cI7o8U^uB~/\9oժOՆC _Bf!_f/ϟwwgniz+mv1!\S+ C~̧Z1V/IC#AP/U8t$v>@熸8ߛlx x2ƙ La>ɤ_F8Bxq.C:@:9LF"|,ٽt~F_PK 7N.$0tensorflow_federated/python/learning/__init__.pyTMo0 We2i调뒡IW 6%Mf~ t[\ǠnQpJ/(߾|0GiT s 16 (Rd!k#b3[yFJQt< \arX$ a>d u%Z] ɀJ'4'bu9}<mNmL9z_&R\ ?at \$-(4H>'d9 rĒ HխA ~q a% 6^?d5f%ˆG#hjakZK%j,a9MJ݂KҥUx"JXXOȫRQ+* j`h\c1_24ɩU߻`^.6d/hu;P_hsEP^c߇Fkf^nХri2zҽ=vyD.fr}hk5NTvHci$/֢fvӴrbNԥxfѭ3~l^xNK%n?=?öʠDI-TQC>_ppԛ:c;`}Wtqv!6veѰcO؟|~PK 7N,.";tensorflow_federated/python/learning/federated_averaging.pyXko6_Ad>Dj'tSdwWLݢPhHE{%)Y~>$soG!-a4kT]\fEl|UBKN\o+"ruw=O-H]'C n4N #1i3η(w4< .YTO\K4\`5 J%jauOD:/ 3(g%`U u˚F%3>a`9@+UΫ2L je`Tc!Pw`EYŀ?W䩌w,QW9 eR%P vBr^@6Mcë"IHGN yq$wּ=8N:@FnD#oLȣ-MEaWA"]K >Tk-`k ٤cJeJ*b ݌!脹9z_;XlA9X[YhB`ğ?Ү27Ű)K6]ea]ۄG.\sxw3ޱ7@oc =-vJqQC~$֬A6S+R.N;i84U |M;`6[>.ۂ(D-2*myDz;}4=I'n;coo]_0+f SO(=.:3izoEԇ)W5/=$ˤǣO$OZls,X/h5; @&*o@|X vޝ}!qeCﳳ/W 7= z fFo ֜)!KfR E/0'oSAaP)ʔ(R&׃hQχ9,%9`R̾; `=+4 7$qםR|3_"w0'Wܷ<<<;7%)!CɁLܪT!߶hq<,ǷIt|(Q#TE+|3 0톪&aѰ,$ &ъՋc?[Cg\ǝh ^iAP/;?vooìql^7n.ozt3n&Wr:`zmymK(#~NKrL 58U@rݍ V#y69^ uzgHN7f:TGKca/&a)%1x_u#wp͓ջOر lFOG݁&.]6>x}#WEsp )-˸#uģSKqbKT^rVPK 7N: <tensorflow_federated/python/learning/federated_evaluation.pyVmo6_qH?D\&MӦ`^^6cYn(Z:$Q##iKnHl\ځЬR/\7kKG/ގ`Dam* 0G#0nX1xF^*#:mkzƍ_|2h5CH`/>JkB%PkEP U" LWMd![0hN$~};sjҳ,`i'7K *C "9, 0HϜf+#p+iPreQTkCPd {)L{x:d|ݍof)d6_W0Mn.FT+ _:bE"(t dT2ʫ^rhjJ4MKrB)UtQRb7Q `)3l 04-ZLSՆ&vnuIIoA1o=o ?G qݞ9oH;NIKE3|eptte:UA[UcU, E=<P~gS1ƢsfY] mlQ6ANaL\E˽M]:Z4S۴}!I@y&4ί>9y}fx  zMiJFsBկI4z%W$h^=^d*̖V`A 2 iS)%8YKv7z+ɦ?9r?:Q& . CFNjƃeϾEkOcJ ^ ~/u/p|'WS-OVt@VVK ~ ,iH7PV A7s!GHГfBnmA4BI!_PWMW`H :̑j^ #U 7fR,ضȻ-ЯxђVl<K}&qv.mB6Dq"CqH+q֫؅Ruqc{o֐c~2|J]'j`Ў,JߵKuo_GhTĭtU_pb06ؾ϶]޽۲|= ד˛t+^4n+~J:"eo#]At;c9Ihw8;2+D>iR ٥,vzEPK 7N 5tensorflow_federated/python/learning/federated_sgd.pyXmo_p>jNՅ*~Mp8+r)mMruK{]R/h$63<37쓬,札v7RZ.W;=v+2JjnD&4"c"ģ7$SӺ{f!4]7FOYD«ߡajV-eP! e!xI2YTB*l#ʙ J)P qs[v}~rlb^9t{y}7~ U!aZZK.Pp4K-*rxrŒk-4VEmjå/^Ύ؇v6o￟ӻ?~aӻؿn&L V0#^֚(2 LHe.SܫZ|)R= ]:l-t) e Z YJ˭{RhZ9?$C+ƋBVe< K܈BV;rRe]! u%lO{oaJ5vqx߬WAc>hQe3_j®%]R0{%b2q23,~(Pp8N5ŶlSnb6ͧU_Q>q"œ}s wF$k[k$DQ @$:gIy:~xZ`ȗDMs\QANTd.U :|pk^ QF-EU{FiQy̢3s% o9}.L=(L䀄MO|X&6>ŝ3 ʭSK3vPگMT/Wüs6emx?ӣG'YtŖg4E@5xI$1',bֈgg!g = !fcH1o"fkOkA ]QuᚖAZ:JMG&EcEPu&UL;EMf2ߍ (9Nil/(E;><8|kk; _lV#k L:sNIT[<ט ^ v/jqQqƎ9$gC H'}QP/$O4Ե YdPk9E* -y 94̖VEEc?Zm ̵ 0/Nq lka'8D"mM{xWٻoAPWh-#Zai@JGJWޥGsmRZbKW+= ʴASK78;60Za1A<_sDt~cܨAqO MrxC8TQ\uI𔂰B5!Q3m޼C&m .jl14h2nvpש_D(Y+Bi.{}aس%!ԥ/7o!mE0a OӺ E 2; ("R, {:.Xs~?wd_[4S}+T##.1n˶*w$npc fE :_&t04iiփ{3.ew{O5:.ֽ7~iw֌ bd0!DM?+2U/\T-3iE@C̞8=V #?M&X!](T;b(&ʣ5lIlp.x' ͈轪aBD]n\~_jAtǨi?P^7E 'm~ĤIVVS Ƨ TZJ`C {3iYy2֪/EGkVCP!f޽37fBeSrD} {Lww'>4#$lk& tV%Bz~w )$=$@u{ybhZ=ZQfh`7颇m-&nߚE5lB.Nek5x'MvSаn_m~܂Jzw[.f1pCQ:}#SS yۤ`hQv2`JVv'|n`ֶ)[{c~#Ua)N即c+ _ Cj3K_Cߙz|pWԷ- VLVJ?kMkQmRDݘ9$jev~ 8jOGTFp]BZ5־z`|[bd6eR 5E^XסRe /[1y*O SpU$>X U7hf:'?hBOA`3|R*~)#L,\T,3Mj2o)arF,uOS2#)9nM5vVW=%֐ZJ/Pt5@-k͞ vz~]5˗Q z]M74F*kM,lTF"RX8@x)˼OeCX!4,yZq?Mt:=_8H'4ёP!߷sQs;+dw?7өǂ `w'8,=6=-pyz?1E[$Yq/Rg^T TKk)aj gfy*~0_:9#@vCTkj(#exAk2lvLngPV}zKp WgW[4˛O7XkQ:(iG?HIvph]j'*^cSt`X`"TjŁTf?0{!C>Ew.TQ'T$K$-JUd&k  ZT =?.#~D"$6&Vq [ +I3x6KUD%/kńSh`FOa!5}x(HPZg8mr9]$PsfowD+3Nϯtґ2b;HH,xۀHtЧ?F#cZ8??՟`zăϗ_~C=ct1l| \7%/` [?i|gE^EdDP4G|͘~/,DEsjמUT^i ;[?Wx)LKR0`2k6M گԻQ:8 bķRQ?TYV (hh-)zKRy.oBu=sg/CF-/{&U%ʒd `<Zp5LĀ[]dl_Y*ZfgNܰyncaPwbacLeHI=-1?K 8ؼ )kԐԭ"*Z#728.n-8?ٯI7FF@b&C>7tRy BHTY@Z:`9Ęf4rcޑc9bb''T갪ϙdtY/S+Q2N}ҵ U*]A5i L&#'jjcS1OrtE۵yU?Ӆl'io7wgg_ip oh1!YEI  P 4U$M {C|pxn_TM00~ r`LNM0 $y#9>E(Fޅa67}6 &]BԃbHVcr&n *̮[}jQ[{ {XwYk(v;cb|5Ihuz;ZCJsYk7@Dwijp~b@5qM<.jh ?iGhTywwx1`$3w 8r >y^lt3ue]܆oBw8gW/OaP`8r>Ǥy ؞b`14={&M'Dw™O@΅=Ymfz{L b÷H8+=;qwbY8 N|PݒIsmJ֎19,Սr7wʽ=x>z5a[b8 CU6)Q/^ܠXs*0qoFf:Yu߇)ʃ7H"2@$~7*R F`7',/< ״EvqK}+[ .JTXwv>oԗ2EijģY%ԭهUbWD~"eih{Z7J ]Ұv9nap:hY5Mw GKt+@yCKiIz(ΠVzzGtcx^tm x6 oGvfw x^ -t92w0/4cTM=Nm"$4`VD)# {S|;[scrv3|0}<ESoFvB2ZpXQ⟦z X|:K{ڛyKSǨXGK]r/*u5gدۻԖHѯs>b(h-tWBGh(fcy"C:W# t:ktqr]{PK 7NFR"n !-tensorflow_federated/python/learning/model.pyY]o}ׯl,2/؈QAQ#r$M3ns!)Ynҧ,9wǹ~ ugVpvLP]f۪os0upr{ucJukJu ]šFGu&JM7ћ[HxvgUVu@ jm+4*ܮ 5QPFnj~nYambg͜\Tf}}x}ueBPnPWP{ou֛ n7Rzo%`Kգ}|]=>!~^_׏Ãz{uU~ |kƓPҒMIN{4@Bc 7qO0G5lhWBJew-¨l͛҅B\i@.UX|MSڻZ.]y\*h)Zi,#i͊M&"Z2v8ϓɤ4NC6];FZLvMegg !(1]BK]]A•U[WXZ]a?KlחꪪCN|5tԔdeԽ͌?9_rʇBWA2}LHg @!WdUl!9LcA_>Pv8Bup% p%/#ff8_.Cڀ(3D;,eܙVsئpv`#ޛo^ Ã1u  bDPp)^do^LT.U! {?q6`8v\Q{K92t :n]u8@f$P"8FDV:+*.a;!/U`o8Ye;Akd%duSzjFBB2[MGQd $&8n\]nj|٪.{킨'~&ՅbV5À<{[N7b':4? y#z9a~~1T09)j);$A_SYsu0w.nU+A0Q"zǕat8E) bfQEwLJ Bll0c !=ȃ=F@gK t=0cCF*X+>C|w39 d"EJRf&0Kxd)OVG˧Q"Poy GC⭥;lm)@U,P>V>SpJQ;ʵ,Om<ʴ5a4 wX(?*->#Y1.١ԧAhP\H(.C{M/z9kip1 *;pF>|) >Q]4I~wJqt/rRC9GYu*;Ud 6u!--ntE>]_|;1h0۔T;W:PnTN`UkaL [G?*= Tmԕ V`JhJZ%%#Ef'fgɧs\AmV#S e( d4O*#n;b0> .&; yf:D)ʕI2&w& a"FE5UG, Bc1Q֓c853OΆhY # V\3`T971_zp4jCfA v;E ƜZ?UQ6!@ 4 tt`ϼcn9E$ȋBs f`<p{Ouݑ^}O񰼱F\y [C'Ȓ>a;OAMlu[%Н׆&&nj'iꇌ+Loµ^TµX TEGy%Q;w(FS\M71,-'xњ^) s&\FѣĉxÌ&dM;`lXUF!߹L@WXIlrnΠoD.@[Zћ Hfx h?{y}! KK\3{I%-t_;nS-Ud r>&?O~?,DlGدGX ӠB>|7{ZJ9uFԧ<2PiwTL^Idea}j18{M妟(ISBC%X}ֺjw&HKh%լ'X4XA4u!}'.b̺"24,hL%UA[fĀL5j%uI; S~}ю:>X[i߮3 |i ]O]K˾xuy Zo8:zVHa=ۓ,!TB7VȦ-!@o4W'p -C=oA#g&n!ꃲD; `hOCw(TY*Zb:ozx_6G.ȦÅ (0 iV UG 3z0"\s4޽ V&v~yD/*w_nLKE1MLƯ8s=wءS;ֱȃO_$>g0n;j%Cv-tmq/ w UV4XEgPeFzL6me!>\JK#TK[dڬ JO 'nyS֛?H%2?jDžUD Wѡ]IWG̏17 ;O(NuxWNJ[ @cEqqHTe)w |}ew7C?|cl-{h1ߒJpĕ9+4TX#uL&W4$kpd~<8Z6F~}M&[7[?O *875mdr q_:F&WW[GܰHak ǧ_PK 7N 'K?P3tensorflow_federated/python/learning/model_utils.py+Z!Qڛx[V:[ݴb~\MY˭xRUVtS&:zg ދ&V2_T|Ru8^<ӯ vFNe+6Y#YOTՊIL۬e4@CM([ %'dKMV'^mHQY^i* QUQȴ+<%#T*ɖYt\)*T]9R:kP <[glQѳg~iѾ*lq5Xc&M컯ѪS`P Tb;M-e`&5n]vi ѭfEoR%IQNzޒySkޘMC"Wr' mo$JAao08!GUz5hUeif;ET)/xVAX>*&Dw{U]„5DIJIAA.U#0 t\vT!m?Gy\9M9MS;XHݩm $&dHb{%7"dkp elt EwhLJqmg"xWq\mI\j1rYl{* #c,Kfgx'od:8JT"3cƅ>j0AώN|ނ{h] x_D?FCI(Fwh0&m[-x7윭"Y%!B`0]@EC!ڨQme!"&tXC@0Y=0y'1Q’NJtj (3u!}̼]E٪0b2hTrԄ}D߽ӶMO~e+,w!NUsw:!9ڎ |FY121}Z/-y OxeV`A/lCeZw>m/j :vYd%(T xs3Rt ̘S6ΎcPg:N&8$BBB'W%:R$Nu _w E^~(.#OS N ڴ, ((7be j3L͈P˻!̻dyڥeAYէp ) p4Ĩ vׅozh!/6HkG5?bd 8zP+i˂ {&Sӏ2kFkFDdK^ĀTvKPзpHi]&.D':2~?w:<WTX(&$`ఏzc L8x5Vɇ%4-bsޮ m7j3h`ľ+X؁Jo8ݬ׻ZM|&Z&ȠMֲU#ȥ`wtLc􃇢E3kbJgY@m{dNZ'noˢtdAOB =4S^ki2#lwx<2"/MF'4TRVmW=BÑcujzB +AF4½ 3fmذX~֭; zT`Ѧխ t'Qn FayT17&E7Y!ʚC]f)!YqSrW%ȼTN#V"RhBN3 zTXt1%Xe9uxE='"8A#L} [>nGD"KAZqSqZQYC:TRL:¸o'>8 E7h+O? >k`vyV'x3*})t,O" zb<_`dذLؙ }J$]yLU ELÇAȐe$Q3NΟ8\m6/DdWM‰ae19s'e>#qK](aHWƐ1C_%Y/{lgx˜QR Cuj..S|YwLW1][Yq:^qv3/ԋ?,?Ѭ6υl?bRN4 Dcae @0B5{b){o/Gݡ(ؕlVZ/RWl,[tY9+{U:ZKTL֊.WRWg?}WM +n0"@84tXM5klr b-VC*R!R${p0w2H:Clʹ2G|:]* ,n4q.A9LJ80g֠?֯u* Z?"!@gw.ۨLÁG?@ǯoHTF'T'`dڬ<тL!v_>Wo"7ZN)q9 @uEz\,3 P @?ZA[kCT6FkNq^ >90#iSl֛8؏V.b S[zM?bI DKqzwE-r. pOnAZ[x; ي醣."u)sP2O@e=z $~ТV#~X@*D6J ukʵ+ ê Q(6pO65n|FsA z^V?\5Ꟃj!<ܔ0OT] sRne:sg/9CB ,`7*ld20xZp-h]录l ;zHB 'N^zlakb0 cLHI=[&cgAD~D0y-[̋!E 5`d+7l~| B|eϿ*UdMDVNp!l'GDlAbozy;^b[#g %T sEQشHiⶌ(WP$FǾurYM7Egd3;t?uĩE6Sq~>lL'h+@"wLO]9&5&Ʀ%8 ]K]˴uhQ0WB %;|Yq_wwQ6F\8`˛&/S!-eLjԈ_qOH<)~Y]lp:'}3!ZѤh1>QJʀeл^Zz)J?(Y,FPGxkTŅmJd[!OpĊ P^c)GvsU ;#qnӘ.4|h56 uÃYٴkbh;gl8S7m=7jQ}z榻{5-F4 ~,G͛~ھ,z4r `)f=4t~v6Cl"\~ 4:srڶ0^w>zBr(6gY''O>G|kdЌt hhz'5#`c*AKQWn9 6[<X``% u۽v+?a޿~(w4is9<=Fg ]AS:- PK 7NKt:tensorflow_federated/python/learning/framework/__init__.pyTQo0~ϯ8e/ t4CZ1iɘ&"'$mlgYvI RTw.t9k|BMd-B*jVh ➮'t뒗C^]5+o4+ g)|G[CǶ "Ap 5Pv%ӂ3Y" ܵcр*hFN8`n$ CF2\Lv~,twn@kDdle5'<lf`UfP*nEӣ^LB!|$m}dp__,Yf}dfM;/fm<"ɽXyRY%yIuɦg BH*4[MK*B㎹WQQG/H-1MT(=#ZޣPG&M)hv6" W *AsO964d/i͍SPip=Ϩ6AҎD&v]\Ty*9}Q%ug.|<>ww#TR~ucyN_vJР@~p gR`mW(y_mh}8Bvh$x} ~PK 7N45*4HAtensorflow_federated/python/learning/framework/optimizer_utils.py\[sȱ~篘XS|(Ge+G'eiJ%)pD I E47R*LOOO_iHVT*OFGZo|lū/R;U6U}YTq2UVe⼃)u`|ciWIk97&J*y!"z6#PVXɭ(Vty#y2SV䥘Uur&o 6ߘDuJ-a>qB0,v}fI$qTyG6_]}w ӜB5]^^B6 U-V][!Û:orY+M[]H˰d)ߊgm 4>]OwwWnqqs>]뿉\]Y2˺F2ڭRJ3Ԭ,3WBE#֪^ fe@Wy+[zdٳjwy!}nhթj_Ţ-WMGy]DλU& V?9ru O.>Y3* E6& / zk3%Fsފ{Z $]Vz9Ɍ$eBU]U]ݺPz[P}~@2U]㓽|c&2 Z| \7]hORʕh9GIVWTzpX_Um9/mPHt u'̈=0F C2*I*Ӏ),˚^΀N058GXY<a׿ 9`#uMm ..$=^Ǩ]*Xid;[z@f%yIP7R"i1vNJM n5gR{ %L (٨ֲ?Wd/rn<#GZg5y^yEK+:iST Th*X!Ғ;Ǔ+<*xYF`F>(tHUe2#UY7SY;4V dW 0}9+Q9ͫFݢ q:BPܒ q]૲̊.n R%8M1B"`< V*8 ffO|۶`rÁ6Z'Oy2 sxxjI-唦Eb^1t- -i1Q#nq-rQ{e ؀A~n)9V 81yMYo(ja8wS2V~~%7MxhOtxe) H#aHw)A,>6L ZРM`M&8_[roăCD.pgs?LLCJ5"!SK.MΡ?KUiOiؚf9FK@2`Qp wv$5E:Q+y; }Pr46Չ5n(-rck5\Q"[qk j&1Z3#c]Zڭ~&3[rD4uo@Q @}cZ;Gw L8 )ܴS2` ! Ca (;' kTc ;z xC "Oڀh&V~e֤ m3Kr%)+B3)TD/!A-}%0Sl1ّNްLuZO-Qa(YLlXX1&Gv/6z9A>)yLSa2.H\hNvՖ.92L%milD.Kܸ w`½GOan@:Y8ubMt?|wr)nvC1jjS h@֭7@[R̺CTgL-H\-MWF43x'U1lI ۄF>ܙ8#A9ر@,&BQQ6\[K|1ƙDQ4DG+;E`unK@~3O$X!}׼!F 3YUQUWfpP-8ۗ3 b O챭Ni[2t|Tch䴂‪qCSAjxlJ ~Xv^VbLjn#YLSz[u6x_W2ɦ 9fDRϴT * EҘ[csh}3e_4S-_ ?3Ĭؔg,9iiesZIK[bHA)ObhSO1eZoԵ6Fìʂ92kUW7Z5AuãC m2֋OKM˝KU\zu~D[*ηXпսb_rn>Grh'k 5"qY ~XuSѧ7(tŰa*5HYEXMowGdb 5]]Wu4~E |̿#2 ;|S}u{!z·{t3Nu"Su5ďCe&`FYzѫ=^z2Rރ;+x W\*\ᢧȶWh@rV9"2rWo: DJKOaГO0Bۯ_2 ُŰˏSTFw\LWR;bMxOs8`+*,nXobGt]20Yn2Jt#b]JS[Zf4c,j^G4@ܐ8o(i uh͎#Y uU a6)~6i7wr`R^@ɷaoʡ"N])嵾h*Y$w`m´p 2"xqJF Ljd\ŀ.DaYVW=Rd`8oifYƶqJY,Ӟ.oo<)90{&/ r,"^C2dXP/YXp:\g܈&xܽX:;j8:Nxϰ{yu| X b pd*3aHxr3 q}u2w>̀^2W; X晎݌8ㆳCHҁ(w<2$!xB Ju -Q&̻z;iV+l4gc~uwyޭuKG9ai 0/>=G ;^|QdH{JTj$A +e9!8704P pOE2g6gήSZ SlT{q\T%C=k6{hװ<HvطC[n0jN(0mq93>U㭋>nR ޱ }oμ͙_;+S^8Po] !8Wjljk݆VT JIO7LCKV"Ray._OF즀<9ZTVr>:C>S?ZHc󧰻%~Wnm+E8Ad s_28 >N"6=FaleLmf{NܡSR`-&EH?|q=r:ҔH-Rǵ;!Z#CW iWw{]ԱuȾd^J|ar-O~8zTBn\߮&=T so{%oU+{÷S֎޻*E'B^\AFO]6ۋ1;;td\S> h[M Z A lx(TT=1!ӛn`4w&"ky  :k Y8&QOa/ YW28xF?^{( u3>{awU k􅣮|Һ =+f"gQ/IP>e oLj Lş=l$7 (.Ev$o 2SsC7HQi^T=$,7h+e[VA.dimoy mPc_.bԍ &w-_scFq<(6M@2;?w\ySz ֹ2#zmP#(z,z.}*с,CwKi!;W&ؓqd", at̋;o{yl/wPK 7N2tensorflow_federated/python/simulation/__init__.pyTQk0~8ܗ 2+Ff%)R}vIr$MY%}w \ V,8#굃ӯ&2VEzX`;,!花QpBEAvRyA~BI8NT;1lT-߀T:D!,TA!PnB/zْ xRqBsk:U8n0<n#ei3":]./xs' 넡Z pM ͆ {#\ K)3"ܫnQч)$i?4I'qdW x%)naZΓ,Y-鴀x|H"|'KߴJBTdVh$M+MKJbiD+wC俢 C?G˩[$ B#ZFL'j?a QϊkF2ƪu(C[Px~ VGͿ׆ւ[57@E;qm{ Egs7*MH̆М"b{è6ɰ# ܠG%F,~eQB_t|Pl]VR:å)liQg W/o #ƒMMBNg']]v7t<PK 7N  5tensorflow_federated/python/simulation/client_data.pyVMs6W{Fq/Q1ԕ3LN D$e-@}Xv=T3ݷ Ӎ6? Kk~ʎ6Ӌeׯ~y@%Ӕk抝 \Ѱnt phبkkuN::mi:26P\LPrH*2%ZetӃ}!,(X+7xۑ p-Chu"ܺY,j<f_vu֑j@T3Ь՚#p`b@Z9J}pzֆGCȗ2t4hrDodS8 r4ݎvM'u4#Wp %\I&̏m".\,Z`Z{vPnTӃ^ZtP!< *ώPSC6~)x0 No]D$U[G<|O7ʲjDp2 pӎࡌ.wv/I;ʙ}}H4hHse%%15Ζ`pEh5 U(DP۽u 1(h%|2lrMӆ,2ݖv$'8؇Mx MO9s9_&Ϣ_BYd+6=YOдsv{n>޴1cXg@e . U}R(d`|;:B{wnj&dZc DlctG̦8SprtTR2͐#S F]Snz e* er$)ldYwr!km&5.Y}MON3f@bO境DQ5;ʻArnۀy\A<|/N~k:o_;ٗQ_XֈN %Xk>o>lV[Tx 3,=cr DCG)L}zAOkp599ǝ"r \gP#⸲ ^ J D8r>)R1oisi|gBPK 7NF Ctensorflow_federated/python/simulation/file_per_user_client_data.pyV[o6~ׯ8pju/Csd3V8C(A%b#I5CRI7?$6y.߹}g^H \B?Fgp›~ò(}SkfyU3z/RZ=XTT,f 6BIx_j0-U [,Ԇ a %5!!U۪LvM00S0֖4C ]9`v|̡ޜ^Ҝ]]ׯӹ%74c]U(ekY( l9YEwZX!7c0*;9ZɄZk{|1 f,f18[v{|9^\Χvn`21p_+M<򌒶@< ST"Ÿfȵpz+ U b+,䛠h0%rH\!i2`k q%3&F(ʵB䵭5OB%yUbX&A=u_i<)pL--7MCN <lUU2)<}xـۺtkS$̽޹bImEi(r)?7\v2M`eȎ ,e[<͵a@4Ғf%+j2AFZ?OJrO~D:I39VHadhxw1͓.ɥ \a?Z]>ZG 0-@%Lp ru8^B:)+K".Y=p@s֥ u5zs-uꑓ#NPf+k~W-@mq8J( ;0D?쭓ӢI"jNG=Ps_5v&f&bui&r) j[e8vܽS1;(_*p\>HA &`D[iZBoH%sY9ynj0X9Q2T;4酄%x9x߽TmZf-1 v&Bmᅗ.CBXw~_4M;Ī -nqE{A.l`$@F"Ur^wHJkvrngΜgXHR !%|. À] !ނk>C?ߎ]]Xx6۫2xګbuwɈ};U`FuӂP&6 { H;{#I.h/ r\Z2r[=rq;_ϗ >CS@sm~);VG 3YȌRFl vFSIi^YJYIoNhuUn[A6†ҦR`c Ҵh16,ۍ%r$ok;*s裨8 'ya:-MĬJMe"w}}=Ԕ>>\9EQV = $d0BEݵE4L)X0RIJӱŲ‘cˌ|P@z-͟x8WS7x _,w3Hʲ 6k' uUM061[PuX+a;d>=o “(u\۰ڻ}y.n/"4|_{Wmf0/HҾA:+Iߡb槾rS k>`/n} 87IGϭtyX]7T7ZN|ewa6,j;x|f h?e}bǓI>=%9&c<]p JY),|0V4G&u "Oن9HPbma}Ue%ŊWVPv:{r܋)K`,$WFMrן_/ }egOx 1R(i^Iz6Un \3HȨvp:qO4T)h?)MavK7RsT^B,dn yϱuR/PWui҈c)31Z/>5z{XGtŽZlnYLB͢SMjKjʶUB|FK l;TJBBF =** aخ߽SbI7~ ߚVZwL2k{ٌ A?{zz95b."cE&SjρI&.Ѿه~;, PK 7N[Btensorflow_federated/python/simulation/transforming_client_data.pyXr}WtiC~bH\-JR < D2.NRv6zAwn &n)?u~5xCY~b/-֜ -;Pi* ( 'yIf<, 9^kJ#A?&ff)nYk^]v;Y~&WWTWg·4J?BX@![fvIb+LgN -ҕG*I+PZe;ѪRNi<Lgl|?[|aAO&lLOt8-fs|zG#XϥđG&hϜwęrX+]lipʹ e/Dlfڞ9tCT=.NpՒ|pf| ̶q Ƀ$Jv sbxD4 ͕Ay9}%1P:x-IbCHǥVsw|G7 f~_pW;ܿM`!E/;LV!+b_2T'}ǒOqt[(T/zKmRʿ0!sW+^m3A[u:R04Ehhh?jWU+Gy"h`:re\3-8ul^i7:k<VٖSZlH|v-w VE:DBnYY*R 0<)Oi6vvjͧwi }D0˄t ikSs%CժHq:,W6yfrRk=Xr4M<,BXŠV$rͥFyiESpNX20l|R"7!z  XY~GdinƘKEYY%37[X͊1qT(Z36 Un!^aA\[2̼Ʊ@G_EjG0UNĝG&tʹ0_c?)^-qu@FG慫f,F]=$,s`nQ]K#zkfH%Ξw˼T? OS#.Tm-avcC6ֶ^zthGz>PFgHT[L25Tŵ64~c=ô-c-E/?T5nK_![44Ze_5(rEEMxH^a”̦ji]ik[UݣBlzDmsyEА &Pz JxZc!:jj]\9U[pG} sH^FG8b=ogfA<-E_u<[9j3Fmb3[v0J;tKCw ag;Jx:q.tn09/^_ЗTi;c\z1YC+9 WWkd;Z>~0Tzu=p9ڌo!г<ڌKIGln+$&1BG[Fž.]wQ45q ylK_ ݷP]!k!h.UnG ?KՒ}HÏN|;1i%VZ#|&f[Siy8;j=eDJ䵁s=YYB[(k+F՚}U5 PK 7N$/;tensorflow_federated/python/simulation/datasets/__init__.pyM0RJuh>T(lWBl65jOy3 v${ % VJ ՍOs86GVmbF8,!Q0S;*Xû88>kQ4et yfv.0( 7|[GB.FkX |I%U#X7:OIr B@wЩ-0x АF {2PٮפL0o2{]h%񽜚qx s:㘨6]_g,_~)hI-^*LFTP|lɴ3Q9<;ZjZOx2/rH~,4mZ\p^dEau g<-U& Xdw+g2+) IaX刯=VP%}vP-Bkiztp^jQ+,5Dq_zaWYuhXi+H^5vPò ڮ2rw~+{ o{'o@ j<-|# _@Iȥ%ڪ '$Ӑ!W[#dW`ݢ׶&G+G='QZXß(+ZE ,b-8QB)D [oX۸XjX_HPKo5,XaY|z|yJ}ͻwgИ-M"Wq[(Hj&r+\eHmqEV \XyE[N=$d*^܋⇛xtǿ=n>}{}w/>~o>޽}xOwoBWv1Q{Z DQHoTGqe)J,'0GlT5z!$:.d+ό:/^\ҕ w,Vx]&N'ʳX,(sXYuS |,bRMDjN.ergУ{N5KjnRiQ`23 5̴kOSDSMS8bF Cza$q߃=Ӽa.a0ceT#c"pK1 K)xt:Dɐ4/xz@K.KU#-vh'mM&E6Vf$ d=q!S:ًS@EvΞc,ѽ?U?A3`;%#&q{li`L^>ܳ>V&_eA IM!4幅w;l9Y̳rCj')0HrOU>0:mUĦX/Nݼ7̿2W~!2Ol __w^ezuRA7*-q$ex֨aSɄ,o^P&m@2XQjWu"dkaHަfdR*EXMReL+8E|!J K0{X&k'`ilbUǵzE; F1r0,}nd/'&=w~k0 t[/$n8jb cx:-_o%P)0 & 5 9{4DU"Djt })NA{1̮&UJb8MCye Sh0M \&-$~Ds*VYrN#n*@ u&[ayI؂X$ud7MuY*0u,)Kb鉟@arV54J%Qh{kAr "DS/wQD.&[ф}2(n 1Gګm,ƺ&:4-W'_!L~nJt-fac'(y<ˠ#H<2v8ogEVYnC(?g_ѿ1}G_ Nr.TL~X%kඔ sɗ4rZ>n lLrdLR*LX#\Y*^\9U@!Gc zfp+ˠr'H!05jʪ?igDJ<$&'(5mbQwCDL ˤbPRBѧoLfPN*Ax+&[f)QtlyJܸB&K+Vy׼jWPۮj'&C(~$Yu#jP"Tt'k)ii*-z/z;[^hhah.tɘ=8E5[ȩ;X7ߤ7[ap<'-QNC.3{W 2NЈ%8|2AaR,A^g$!֋"[ZgvQH4|Pd"Wh?^/mtF}f3Ępv_ ෡jJ&31sNBBF[X3b7 #o 3^q^z_L4&m8OmU bds+Ehg؊Dm\6b0ʙyqU^kC"J{ܺ. BsG7P=!GKm>2xc^frB7 f4^Dg" 7͈nx0|[VR"Ǽ5 3C}dm!(g7Hl>C9sxJ -s+7'!~'zW&cӚ! NxTnɒlYj/nӫu@}ȕu$qc;ViP 1%︦J¡7; ؟&h7*GdNbzzr|;qԭq7D}h(2ABm7~Y,KW'&m͜3KM3˃ZՁpͧncդ.է{It_R @"~)% ^.Z=*(s+AC-@ޔ'xbffb[٘dA^&m|Pngz\:VsJw|+#WkcEIL)Ѹ3{(N\ ERڶK=`jgL =˛F/"Q6uVW1f7[!MI@keACxd*K-N8kBP@Z`i^U4Z+1?Y{<17/t]`u;0ձPK 7N[eKCtensorflow_federated/python/simulation/datasets/emnist/synthetic.pyZ_o8ϧчM[jO R_#)dmᑟpes-֘oONG_S > ȐS'Ce3ɂ " xLH|ytE(5:FձQVo]޸mMnxun@1V>E\ُF2Gꩠu(}a L uـW0ɐ0|<@w |̄ʦ@<1D%T*5#1Y`VKvӵT9*cC&L(G4G<r2B FWZ bs)Cq%׫<ȔG rزfnTX J 1b.cxeYlQ$s @}:9&7p3:@'uLCj!BN#ZF?$kGp 38)"x*Q,3ÇTƲSp:0:$OAX#j(kQoJG;/Jj,ęFZ^IJ*WIŮZj8c_ 8ye:'U>>ij~ku;fPASQk.|!(O:?'3U YI&|W>L>J*k|r\T+X2o0sکc>b'7 p5ul501\!pV**ʬ3;'^?k :^T4WVM}a*x-749j~nA52sk֚uj>xzx}7]_voZu+/KkPp |u/9,~ 4g34g34gE~yMVp^u9r9A{ 7]t]ubwfzlN FޜXf^M339kΦ+}xZۿ7V8ˡ}UHqkh *x~R&OӔ9[t|/p~16krDzbUmz7r%5t9Ag/W9~&mn>-|wϾD&Ϡ.gKdr07{n/raͱrxuHYr$UWTKFR;Ug/􁬁ńtJW[0a(%5:2PiRF7S`^®YI|'e(߆ٝ8fjͬzWŢ S͍x7-('@Z V#X(1xdYI|p> $9bV"h(8Z|nPBg}O!AQ+n3%i͠ˍCfa=hXihIqPUǪ]eRVZCqߊ;/AnM-l}u v% z1C-eڪ$.RmOckD2BqTJKSlV A%%GPK 7N3 Htensorflow_federated/python/simulation/datasets/shakespeare/load_data.pyVMs8+T"cB>䣖TRlk",$0~_ƐMޖRu'>;{s4sl<]*l%rͽ;v/ba18blS2 Vм~>K+uuɠ]o{^l,׎V,J01Ho %y .aj'~.qXsxKNwd`ܣ I o2#.A=E|6F`i3<3FK,3rSw:CҧY{de}/>||_|bnɞbxz=?`_}&P+o!)"-x  [H&2B^yZTT #Vi/%qW>$m4{c6V( V84SWܖʻJ޲0LJW6`jb* jQV^6(˚w"u\LjcXYL@D*BՊE”F0fsћjb*Uճ' Z0ջ\y{yCѕR-.^.ڳ>'>ssN-;n} aWX!x!*N=ti-&1SM9q @G #H"6/ u?']&FI&p79"(r9wp4ݪ`q&_6a0^_V`ov9˺Q =cQ{#@cDls;萏oJh l^DND5iQR *JZK)-AnN?:`Maݔ'-=s..PeZž5; Ag;9ϨZٍ+(BO֐POrf¢ h*O<߇MrcKX[%2~W*1pkVkʒF0HN$ cOAd$''+k]XC{)XGZ)O`7?n.a?^ ETWʚUˢ@Ԫ?:vB̰LwUեQ>'tu⭪ܤvmSAHA Ҁ2IUFVku64+HOKj'_ٷ*NߓW PbxNshӍl|f(N*kӭأ:`k9dLA,ZBZ@uVȞy٬3_M6zxm&jx=BC$|ryGe<ŗ$^6>]U .(hf+S7Q"oulzFua9RηK/Vjw,l}O;4yG٤H]X^©J]>PK 7NC2pj7tensorflow_federated/python/tensorflow_libs/__init__.pyeAo0OɥXm/mD@сF"64+Z_,{<ožuch[1vtܴ7D(ZBÀUT I/-NjtZҔXUvDCγѸop5 8Y&$QsGlkl;V$ `baNAZʩ 3z= Cfظf}(znY&sϓ{8۳ PN٩A5<8aPĥbeZ$gKi,iCy$iT99H9GlcZLN;$ ~cY3f/<͑ih9|yK%\J.!4敜8WKg*7PK 7N$Ύ}9tensorflow_federated/python/tensorflow_libs/graph_keys.pyur0<ŎsH:4=՝HbL\1$,X-HT!~mI~ku+. 0=ngR|NZv;뭁ˋnRZe#Xb,!)Di;/HCs0tQi.\pf'ʰ=lB5R > v g@ٺ2$27ԌC0okL7͆agͨԳUx9;Ѡ֠WuT06Tjtf7\Sв2SHYJyoGM /&`$& 0R0ߥA5\MqD%#܆2)O5-A<;,x K=jJP;Сj , oaהM&Wg'HsH[5ky! ۧDW)BUfF*\ˆ\[?qyv+y^0rbxdp=I 9T {kqDQHBN5LYTKtlYb>^3e:ؤe-Y`WE;ֵ/D{,!^!\?# ^-ufA8 #`~_g8%*US7PK 7NkU^ L":tensorflow_federated/python/tensorflow_libs/graph_merge.pyY[H~ϯ(Cm0H;#z̶ihP\+Im;$ ~T]XSkWl7xV{WF|ݓfvĭ*me^VT2Qlqd^ 4xۖ.e2VW>NL`38Vl^U#ZB[ԅjY -Ln|g1Eh$%k<-c:!xx&M*z\8Jճ7/Ab>,¨?Zmb/d 2܊2 ߚr5Z6[i6F/f`  `/Y7 <~w˷o/o^܈oųϯn^_饸]L( ר]mH~Ɏ*'(5`Y9l2*W\))hK޴/Bot#~sT2z^iVFGeVwٖY4cm iڈ|6Q9)SxaFsd$AL̃$ݶ:޹OYl8m`,uG] [`IV4hWB'*k#!$Lît/ KV a)왌Wm yWem#v˗3&PzTFQ-1l!NT4N,^, @?xi)7DbE9? 0ƿAUוuRNDB9ߎJ:H9Ԁl|X2pjy!Jpڀ4iLXj&LK̫Bp"E n$B!"HaMFQLt0ri%nVpTz]*ցiB\7EJ6LI f +o!ÁȒؑ\sȮ!GEuup 8Vf@2ylˢu&[C I FL &\v|bUg:szFB=aUvGJPRpfhĨ:!ekF]VϰcX$RundQ5\dB8!1ԫ2v\B(^V}l4+9عdp]Sʧʒi>~׉c}JmU-߁gSΘ焒3t ɑȽ^gUbQ/痴 aBPvQ H_;KyVӕO#LzSXh"|;k3rYXv`ZH^3>;o/kA0a}?z,R.;!C'}{ڗsHOCՈ?v?fnRc&[v&w]v e]2pL!Ӥ*];K$V)18[)ۢLIRmRNP+4*xL;۟\=&/;7 4Cn)8@t*vqS&~jY[Hc~lƪ{ ТYVՒ=AzdYP^L0e!oFgqcdd*oEtKE;AS{) <-M]Lѱ!NI} ;]H)h$ce`(Œ"[G\Š8NeμTc6 [Z&ߥ@)o5iK]A$Q0)z5YA2{]m}Ơ? 0$;#)UK%f6uo1W;sN_u T6^ZvcDԛG21|c.hv萃Q r.[oTakR*QO~F =Lx/]:A'IIx$u&D@x7r %كp;S LGPK 7N4 ֏3 ;tensorflow_federated/python/tensorflow_libs/tensor_utils.pyXkoF_q| 0V֨aHIHfHJb=w._LkΜ$1m.([Vޞ-ǵGW~;z/SE-S6PU냅),#Pe P h vęD`[cQUR E҉=Ö:K$iI `k' / YK-"#Z,@O/*4YGuxy}ġgCXvnJpB?᭒2O XAgfDӯl#&'h; m&+?~;dF/3֛qsDش@c |뷟}׼î_@M Fg=[h1/2O?Dua|"Me "pʁ53>.Gǣҫl#^qUn1hiWxP}`AϫB4ˌ 7o:1"K.FeOQj;̟<"0ʦ %jy$9Fʡt=¿ f-S2GT)0`͜ԇ(CWMYsCvMa aDgq [ ܔ5gz{ Cy7^;;NmΗC.L;@7;bAn5\ks,U3m*1ahGv>b'`XqӨ{P"Yu"aو7Q` X=}=^+*t`v{4eVnpduOxhƦ:a Z\r8=bsI#;{H26LR<P7#ݍ{4TWFr @@G./`tۋ7YRa51NJ?%:`9_ac: CH(dBy~QN1;:`~jN4/;MnUSef G۵S07 BEG4J i] <KߙauCκR [X4Z3 Ãkdc~GKcg)SLnIQ(kX79`nQd\ԋF/c ˠPM8mʇ}e.\pQ[P J"b|YɧvDʤUr_xat;||`֨a+SC=O.?uάєl}SKttj#ftB h8XZ޻wP@Ӷ0l ~[$גys#@嫽J܇ pFَk_ ݻP0U-&(w:ɯg??Oύ^?ɳoٻq5uATX9y kL{4Z5iGY ] ecL#⟜yQ|tMwiXm&pfS קͣ3Qvi4wgR9qZ%)/2ݭ#!Pk@$0T064mw"#Ԡda JJkpTpR>dd}z[G//_ -΁VY=jyn4f]Pe}VecbשFCiP r+zFJ'enMnJ%smm˯hTO@=jЌ=z%uk=v&jysd]#iY3ٕGa 0qN?h{2.([ՀI8 ˿H0a\NnG ek%躍$oe׋%a衘]F;,mV*pNN\JxJ=Q/"HH%v_> cJOVwoԏR!^](E>̶m~./KT XQ^aP qnGv 4w┍%⵶M~|A Syr0?/hpb6 ꞽjʮ|z\J`*MkY<ԫjOmna<^N`woWU9]RvBKu(P>z*1 vs̻34wqY<[ݱ,8 81鬐JTP"+H]؀$~u,qg,6ٷ4QVq"$!eHeSŜ}kw}3MX䢇>RN|*,Oiu{^[3r;n@Flwsxq,IifH4R%.m2 ɒw]X*Z+ |:b`,) iSX?`YB nDi :aV"9-jDa l@8U %a,sIOUM1%⧠Xd>IR<׻f02f?z~!.&+z&t5/JsӐk!cIb g;݀(TwI.wAz6ϕ2N{7]E*Fg*m :yy]m=f5t ´QO8Ү>%QF>_sRk YReA=.RߚCQo6 M4r!Ӵ\Bۥ{`nKp@$?[:'⸁Hg[R੗]d@>n`y6Ne>TmnzWۆ;Y*6-Mha!V I^eHjODS;g5e&,:(WQ;B>!5珠J xXF.i-Z4Np^\+}cUn hF60I.Y}InVzcËCL('VSpz0{tMuo_hpdoM=$v#Stfx;Tb䯺nl_Oc1C@K$5#qbW3q(xFxSfE8&}F; S:#CV{0IvNQ] d$'afv޽5t jBg5@E a`q>&^䙈a1>T &<Ð]gBs ֒?vHVD /C;~XTxjUޱ Βm"fIMR] )xyLmlQ̗K   &bS>0k5ŃLިv#=8:; Ы-)?cj}\"P"c=Ca0\1cLd'#CC^KO}ED1.JkJ1ײ]]Ha8Q<=ˬNYG=[GD֌.bx9&eV_z`b5P>m )ڰl碋Y8!8nVa;rb6<>,iKۄ6+d>vB|>LpZaȧđJm@^^JjvJ?4Mڃ`X.],pbmin<!7 *\hXDgV8DHd:3Do HX hAe9mk] 3)W3g36(-U?ֻUgILz2tv[w1 dzhȫwA֞@E,tn)5UK8]W0`{NK{liS2t~fy E國ib(üG]wfvAϋNfCݭeH+ 6Ȇ@՟m/b)uI"c:xɸ/|;Ad$TpqЖ6(b{KIem-c9*.,.ɓu\{6S>d"/6\PFLT.$%~8m~eU29JZ1V~HzA^*'cD2kĎUGeɛ9y&2lۨ`dahf @Zni"m}ha1Kw9{^Z;( 8r7X)r=mXMۿ,PUEwXNsl aRLޚ2g+40zb?D@-*+Dݱ[cʇ lK\r"p]j~8|@ŷ@gN*ZJw-ruaA=?c%~X7LtOA&ߝP3*<D~duM&5"Ƶ;/;3ȋ힡K.v`WL0ŃkXmصѾ]'p :+V.h%'zΈ1A, v[iIV{N#lH .{ М S\hKAWN "gի0q^AiV>lR93A&p)N,s- BLxjŋqCb/gS|}D+եeG4ȸYFⲽ<%ĝwx%|ױvcǫAsb41ѭu3IS8|* VN [Mw\8VaKnLhNALž̉K#yiNͿPK 7N|vY% tensorflow_federated/__init__.pyPK 7Nej&ctensorflow_federated/proto/__init__.pyPK 7Nej).tensorflow_federated/proto/v0/__init__.pyPK 7N&0tensorflow_federated/proto/v0/computation_pb2.pyPK 7NI<m'tensorflow_federated/python/__init__.pyPK 7N-S3!tensorflow_federated/python/common_libs/__init__.pyPK 7N 8:#tensorflow_federated/python/common_libs/anonymous_tuple.pyPK 7NϹ "76tensorflow_federated/python/common_libs/py_typecheck.pyPK 7NprY}>y>tensorflow_federated/python/common_libs/serialization_utils.pyPK 7NXrh,.Btensorflow_federated/python/core/__init__.pyPK 7NMF 0Dtensorflow_federated/python/core/api/__init__.pyPK 7N&w8Gtensorflow_federated/python/core/api/computation_base.pyPK 7NIE>9"Ktensorflow_federated/python/core/api/computation_types.pyPK 7Nk 4+]tensorflow_federated/python/core/api/computations.pyPK 7ND S>2htensorflow_federated/python/core/api/intrinsics.pyPK 7N"%(WC2xtensorflow_federated/python/core/api/placements.pyPK 7Nx;Wfg4K{tensorflow_federated/python/core/api/typed_object.pyPK 7N e 2~tensorflow_federated/python/core/api/value_base.pyPK 7N^V7 .tensorflow_federated/python/core/api/values.pyPK 7N56tensorflow_federated/python/core/framework/__init__.pyPK 7NC2pj1tensorflow_federated/python/core/impl/__init__.pyPK 7N-:ntensorflow_federated/python/core/impl/compiler_pipeline.pyPK 7N %Dtensorflow_federated/python/core/impl/computation_building_blocks.pyPK 7N<G+tensorflow_federated/python/core/impl/computation_constructing_utils.pyPK 7N>VLV 9tensorflow_federated/python/core/impl/computation_impl.pyPK 7NtuLH<Mtensorflow_federated/python/core/impl/computation_wrapper.pyPK 7NOL Ftensorflow_federated/python/core/impl/computation_wrapper_instances.pyPK 7N /PH5ptensorflow_federated/python/core/impl/context_base.pyPK 7Ng *=;tensorflow_federated/python/core/impl/context_stack_base.pyPK 7Nԕ9Np;tensorflow_federated/python/core/impl/context_stack_impl.pyPK 7N)4tensorflow_federated/python/core/impl/dtype_utils.pyPK 7N Ftensorflow_federated/python/core/impl/federated_computation_context.pyPK 7NV.Dd tensorflow_federated/python/core/impl/federated_computation_utils.pyPK 7NS1GHgp7tensorflow_federated/python/core/impl/function_utils.pyPK 7N<.\%/+4-tensorflow_federated/python/core/impl/graph_utils.pyPK 7N+9]tensorflow_federated/python/core/impl/intrinsic_bodies.pyPK 7NɐG7dtensorflow_federated/python/core/impl/intrinsic_defs.pyPK 7N:N^:wtensorflow_federated/python/core/impl/intrinsic_factory.pyPK 7N5 8tensorflow_federated/python/core/impl/intrinsic_utils.pyPK 7N:._P ;tensorflow_federated/python/core/impl/placement_literals.pyPK 7Nͪg*;tensorflow_federated/python/core/impl/reference_executor.pyPK 7ND CMtensorflow_federated/python/core/impl/tensorflow_deserialization.pyPK 7NSK6#79Atensorflow_federated/python/core/impl/tensorflow_serialization.pyPK 7NeOx?0tensorflow_federated/python/core/impl/tf_computation_context.pyPK 7N`ԟ&=tensorflow_federated/python/core/impl/transformation_utils.pyPK 7Ns~t0_8tensorflow_federated/python/core/impl/transformations.pyPK 7NQ : tensorflow_federated/python/core/impl/type_constructors.pyPK 7NBDh;$tensorflow_federated/python/core/impl/type_serialization.pyPK 7N&3d,tensorflow_federated/python/core/impl/type_utils.pyPK 7N D3xStensorflow_federated/python/core/impl/value_impl.pyPK 7NwcN] 4ctensorflow_federated/python/core/impl/value_utils.pyPK 7N !*2xhtensorflow_federated/python/core/utils/__init__.pyPK 7Nm  *;ktensorflow_federated/python/core/utils/computation_utils.pyPK 7Ny>D>Wwtensorflow_federated/python/core/utils/tf_computation_utils.pyPK 7N.$0~tensorflow_federated/python/learning/__init__.pyPK 7N,.";%tensorflow_federated/python/learning/federated_averaging.pyPK 7N: <tensorflow_federated/python/learning/federated_evaluation.pyPK 7N 5tensorflow_federated/python/learning/federated_sgd.pyPK 7N2zBT<3tensorflow_federated/python/learning/keras_utils.pyPK 7NFR"n !-Rtensorflow_federated/python/learning/model.pyPK 7N 'K?P3 tensorflow_federated/python/learning/model_utils.pyPK 7NKt:/tensorflow_federated/python/learning/framework/__init__.pyPK 7N45*4HAtensorflow_federated/python/learning/framework/optimizer_utils.pyPK 7N2tensorflow_federated/python/simulation/__init__.pyPK 7N  5tensorflow_federated/python/simulation/client_data.pyPK 7NF Ctensorflow_federated/python/simulation/file_per_user_client_data.pyPK 7NV2HXtensorflow_federated/python/simulation/from_tensor_slices_client_data.pyPK 7N!i :tensorflow_federated/python/simulation/hdf5_client_data.pyPK 7N[Btensorflow_federated/python/simulation/transforming_client_data.pyPK 7N$/; tensorflow_federated/python/simulation/datasets/__init__.pyPK 7NBB tensorflow_federated/python/simulation/datasets/emnist/__init__.pyPK 7N,'C?tensorflow_federated/python/simulation/datasets/emnist/load_data.pyPK 7N[eKCtensorflow_federated/python/simulation/datasets/emnist/synthetic.pyPK 7Nd)G[#tensorflow_federated/python/simulation/datasets/shakespeare/__init__.pyPK 7N3 H%tensorflow_federated/python/simulation/datasets/shakespeare/load_data.pyPK 7NC2pj71,tensorflow_federated/python/tensorflow_libs/__init__.pyPK 7N$Ύ}9 .tensorflow_federated/python/tensorflow_libs/graph_keys.pyPK 7NkU^ L":0tensorflow_federated/python/tensorflow_libs/graph_merge.pyPK 7N4 ֏3 ;<tensorflow_federated/python/tensorflow_libs/tensor_utils.pyPK#7NAtT -HFtensorflow_federated-0.5.0.dist-info/METADATAPK#7N &A_n*Ktensorflow_federated-0.5.0.dist-info/WHEELPK#7Ndd2QLtensorflow_federated-0.5.0.dist-info/top_level.txtPK#7N {z$+Ltensorflow_federated-0.5.0.dist-info/RECORDPKSS! \