rust#rustc 1.34.0 (91856ed52 2019-04-10)coreϪ-91c9fbc323ad09b7compiler_builtinsـ-43b96ba2cdcc7cb3rustc_std_workspace_coreӗ -0836ff3f3d6a6ee6std{-64d1544b9dc8a8d7alloc-1722fbf72ce989c9libc-4728c64ee20d89f8rustc_demangle׎|-fca4484aa9be2d09unwindЊ -c2b22c88cacffeb6 backtrace_sysқŖ-0aefa3a2bfa44649 panic_unwindѹ-47702365139f147eT/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/lib.rsި̋HOMPPKMQQM:NM+)# FQPNG!7#)QO?GNP>O(80QP;#/H/AOF!G8Q8QQJ JF7 QPQQ!57F9;K28IL3 8% C% >% 7% I6I 67 $  3&R$7$R\<  P(/Q(0O(/Q(%V(AV(C6MNRNO&GƌݫݟU/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/poll.rsҔ񪈑HaiHBJ*K-QJMH+G)6GK- 30 /%%& 2) E)GH NM/P1!2A 3%&- 6)N4ۡӗ[/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/mod.rsͿa a NK  %"*80:$0;$.>$6D$$D$%     ! -'1!,   -1F4=B(1A(0.MMbV?> G+MC=HOKPDJPMJQ$NQOGPMIDO1JOGNONQPL"CQGNPMQN%LPNQN1M;N"KIPOOQ0LPNPL#MLKJL?PEGM.LKGQ2PPLOPO MOOCNP$JNMM9@IQK+MMMOP'I>OH =.OPMOOHI> !2< MMb9+%POLCLN9LL !00. < !10/ -*>NOOP"LGBL )4/ B (4. 4+AE7FGF=.L !;H ??Q0MM.POMLM L !51 :569 2GBIPNM<QNO.L !355 :A@ 9*2ICNLO$QN/N.L !3:L 5)0LNQPGL !++- I" !+,) 806B/J00;/.F000L/7T0000L$:OD !0/?;1/,; -P)JIHQEL !M.* N5 !N.+ &&7+$FGPMNK !-W:&222' 3I"NCMMOPHJP<!4865;88 !7?ITO !0S. 2,K;POO8PKHPMI>!347E& 8 /5 PKP@QOG5I> !/''11  !/''25 1% $4:M%&9Q$9=344*# 1&1-M!'7+;'5NHJQJ7DPNQMOO=$BPQA6MPB)MN@$G 4-H$);KT; Ιܐ]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/empty.rs̴݇òE&:1(Q?&)$'ѪɖĵǬަ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/lazy.rsӬTO L,1$  NNP-(0%& *"2I Q 黕^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/option.rsУϷߤ:F/,> ķƬ4`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/and_then.rs߲ȧ߂& Q161=#9&*)#4&( ܵɪ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/flatten.rsɵ1 U$51=:""G=$)''Q;=:"+ ߻֧Рɿf/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/flatten_stream.rs䗢ﶭ֌c=O<17("D=*)(7 78!* 0 $7+-B;.%1C76:?B:$7.8/% @!5%) ɷ篬\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/fuse.rsĕꆕݳ/1=OPI21) C GHA$%4:3($7 ͉ďɎWc/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/into_stream.rsٱɉ$ @?#4+B&3&&G&2 +҄΀ǡ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/join.rsݸ'79%2 # :*'?+ E4)9 H2 )/ +2 "*/ 62 2#B9& &&66$**K( 5! + =2#3&8=  E6H7G7!G7$ 3 73A #.* $4% 񨃅[/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/map.rs϶텊̮&D11'/ ##.+?* =܂৲_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/map_err.rs²ߤӰ$N51*2 &$-+? D،ܭ鷓J`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/from_err.rs䁸ɰ#O61+-<-+? ܕα_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/or_else.rs' P(51<#8' &)'$4!*6 ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/select.rsیVJ41S>M$1W. -2 #3-/:-.!.:-)7CO8 1=/2& '3:-- ؕ˞Ū׸X_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/select2.rsؗȒ'R7:10$A47:T.H42L)/( 격ݗ꿙\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/then.rs噻֮r$ J.21:#6 &'54!( ׺ҵ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/either.rsĶ溧'D! " 'BQ.44 #64.. ־ԩҷ惯_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/inspect.rs悧(;51+3$4#8%I$ ر񊷒ܞ]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/chain.rsζá~κ0* /?6A%,!G2&9I ;% #*$* Ꚓג僧ʣҦ[/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/mod.rsϫϺϺNNOOPMEG "$" *6 (      !%% !!$ '*"*%%(  &5-"$A7F(Q.MMbV?F ENJLLLNQ!EGQPO@ KONM@ONOES<4O NPIOMJNJNELOMFAMNEO!HMOMMMOP'I>NL JPMOOHI> !*0 MMb9,%.SPPBS8/?MOLL !!1$ -)KKOLP !!1% 4*MQMLELLO !!1/ 0-P"PPO LLS !!11 :1!P*MMQ@POMLL !!1$$# 2>Q-QQN/N$POMLLM2 !!1(! 9)2F6TOQ2P-POMLL7*0L<OLKO'I> !!-$5 '< &EEEFGHKI !!- $I #H &kEEEIH !!- $I "H K;O$aN&KQQKO !!Q#;?@0( /3 DPOPP/K3I> 4G!PPMOQ"K3I> CG):LO)C2. 5NQQ..)LQ!ED70430( 2A <K(HOM9NOPM9I>6 5$O7KQ5Q754A!P+NQM7>QK>5./!MNCI> ;.NJJB2%NHI*9&"4BLLJGMBI3]+(ؠ̮Օ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/iter.rsߤᴔ.M /M61#PQ1 E;+;7 0.!*/еы_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/iter_ok.rsޢҵǢ0M61 -AJ8 =;;75 &#5+੣µ|c/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/iter_result.rs𺨚٣3M61 PQ1 L;+;7=*'&/!6$, ĤӘƨ׹^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/repeat.rsѹ鬦ڣǭ5ڣ6@1 #=NI: 4;;;- $#B2ͯ⾎`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/and_then.rs٘ӎȭjȭ'M A1 4")N"H$N<*CML#6<!#\%<$4*")<#>7> (5%$*$7 ۾㻹ú]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/chain.rsѡ˔ӑ9*+5 7C14B*&BBG:#?/L<% ܰԱׄǃ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/concat.rsًëǭ8N?1F6$)#aa:$4H9 N?K1E6#)!W W:$4Y9 &W!W!:'/(*?9)7,HGQJC/"   ɼҤ]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/empty.rsѦ赞)B1(1F&)$B͛^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/filter.rsירҞ˰ YN?1 -& N"H$N<*CML#6)!#\%<$4#&<3&97 øކфb/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/filter_map.rs򦮻ꌁҕ Y OC1 3*N"H$N<*CML#6,!#\%<$4)*63397 Ѱ׾ʂٹ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/flatten.rsܜ̯F ` M@1"6N"H$N<*CML#6$#!#\%<$46+-B%74;*7<' œŽ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/fold.rsݏ閜Վ Q 'P:16 "#* NAA'%&  1'%&.@B)03=?DN->70(Q-A7 ڄ`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/for_each.rs쯦܉̈́ɢu 3 'J A12 4"6*"5/50*03G5 쑃ĞظP`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/from_err.rs͐ˉ P  >61-N"H$N<*CML#>5+? 6C!#e%?$7Ҷ߆Šؘ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/fuse.rs،ЛۤͿDz Y :PM16!!#\%<$4)$%<#(0" CIG+$N"H$N<*CML#ʭ݌^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/future.rsҫ䵎ņП L EA11%NVXT*H$N<VXT2CMLVXT+-& :OC." 24( ߅_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/inspect.rś栍 T <51+3$#N"H$N<*CML#6*#!#\%<$4$4 !!O$&' &40B4 %!8V1$8V4+, 5IFI7O Ф↯\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/once.rsЯ% # 661-' 5(76#/6$, 开䄺߆_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/or_else.rsَ3 P 'M @1 3#' 6/)!#\%<$4)#'<#2CC> (5%$*$7 ҸιϞą̭\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/peek.rsÆځǢk ɉ J 0::/1!26%#!#\%<$4)B10 CNNA#: (,*7 ҿ˸_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/poll_fn.rsژλ-ʉ 1ʉ *7'1FC" P;;+&#&/Ձݭ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/select.rs׃Ɇ @ 6NPJ1?9 !!'9>$@@@@ 'F(& *QF,&=I 塕\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/skip.rsߢ͆ T L=1) N"H$N<*CML#6!!#\%<$4<#307 Үb/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/skip_while.rsׯ q 'K C1? +6#4BN"H$N<*CML#622!#\%<$4,#4< ' (B";O-7K )8(>-))'8% ޷úϛĝ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/then.rsņ̵Í벎 Q 'P =1 14 6-*!#\%<$4'4<#2CI4"> (5%$*$7 㖶·V^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/unfold.rs攜ljʌڸ r 'GFR PP7QLK<:NIN= ))1(&C *+A&+ #GD15 "2&+9@KC),\C0(?CA-A8 #Z H1Ϝ獮[/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/zip.rs˄ ; 6HK%1)<4 !!$4&B$)I; $)I; >67)E# ϜĚؑӋڒ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/forward.rs򎰙 n &PL1#6%(%%(2Y+3Y34Y-25Y52*$C&C"L0;B (' $%(3M/32 $FS(n@%v/ ꃨĆʏ֜Y/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sink/mod.rsʞ仦  PPEG#     ";*D7D # C# ;# ,SF;%'7F& C% ; *!#%M9 LBONNPJ+Q"MEGL3EG1E:OPQMGQ9MFOHJQLDOONPHM9O3A7NPLQIP-NNKQPNPPPS9OKMP=LM >OQQNP9KNNKPKNF*LPFPON9QQMGOQQL2>JMLNJOP@(71-6DOOK 4L8PQJM,<"614L8LQ$M1 T !!0(@ $F J!H ( 9-90F53=/O'ZW6MQM+M,I> 0(W)4%J!JPL,"N+OM-6P+NQP/?PR>80/$0!#3B"?!7ɨZ/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sink/with.rsݪы È =P1/ ," !& >/* 61<&/*2"3*AML#1@'-(0@->"+U< #! //*!^)1 C:7%Q/2!߇־Ϋc/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sink/with_flat_map.rsҋ֐ƖĈ~Ĉ)c=/$ 8 !"C 8+ 82"3*AML#?.G', 74!')B %&!@!#6D$%Q;HB!* ?57F=! 7-/F=!  ";!>X6 <0B97! 4;# ХΆДnU/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/lock.rsȔ꤯Պөk-OGH"(0*@LI PQQN ))3",& R ONP-3-* 'M,+*(M, L /&0  ,)//ʓ꫄ɔ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/mod.rsؗ㔇-'  ! 5/K0I:56)<7 EB+L.NQE6 7KKKIOPQQPHHOKPMKNMNPHHMG MM 11 - MLQPL60HPJNPQJMKKNOPJPO#QOOQ=&PFGI'.O)NMNQO PLPAG089 ;/IQANON% MOL,JM5& D"E*62O.)((&-+4NMOLJPKKQQPOQQMLPL,-G-6G,-,D-6LOP+4,+G-AOOP+,+:-?GOP&'&5-7A%&+ !"7; #OMNOOQQ:PM) JJBOODIPOO-!G1NOQQO=QOPQP@- OMPPQ*#Q KPP9OPLPPK5 ON>)+&2! P MHHGMH@NMMMOA>MOL=MOG@LJMNJNJMG<(KMML!JKGOK#0F=& GNIJJKGOK#NMNEMEMKLIN5I-JJ@%%2LN6MP0B&L&,-.#-& #;'% .%*">->#>A1A!40K#ʻޚf/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/atomic_task.rs⾉ǶВG%>7LLKQQMMJQNN.$MN<Q:LKMD+PQ5QO.LJO>OPKON8NQNNMPL#OPQNP-MQMFMQLN+$=QOP NOO8MBNQ<E!PA!'"$.) HL.IPQM-ON"PPQC.K>;NNN#Q1;@ $)DJI,OU*MLF>A;-IN=DLPP',7 7GOK779A$;+#G$NQ,8) !="#ӯ͜ښ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/core.rs󲃆̙4%+5),< !),-O(+!+.A %@F$*+.&--*NLJKQPIJPOQPQ&LKOJDPMKKN KOIFEG)  &M &9((A( 1&Юb/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/std/mod.rs̚໌570?M)  $P&MMI- ()9,NL335!+ #56 # 2 O>+FI )-"#<'%D*#'& ;A- %4.+$ AM+% 1 66 AJEN' LT?J!PD4A.<65 .=#@NM;7'* L7" OJJP< JJB3MPNLMB,DE= M-GA&<.+>F.AJ ;$#$/ N'!%27QDL! K+0"KP:! */7W *QL%! <-+M #H?QPN OMJOK MM F>&!? !.LOL FHJ? $";&$GOSV,)!LN/ CJ,JJN3&5"1O -1Q #1P B1-T  1F &*H# +!#վk/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/std/unpark_mutex.rs֡i$)BQP@CB"MMPO00I,/O2DI7/P6%/* @PMK%,3CII#0NOOPN?D-2Q0HI12Q,% QG<&,>G<:(O8B$,49 PG<$-⽰˰ȧc/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/std/data.rsƠ͟ù͗V-4NEM#/5%/0%  ,1D!%9HNNKLNONQN )/%&&H KQFP(HP+B*@)0!" 6@.6! ާtf/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task_impl/std/task_rc.rs놧%O6MKNQPHDPLNOPMPODOOOMJ(HOP8NPNPF OPEKQ?L MMC7++KQOOPJME$%/ 9EM3OKM(!%K '#%# ݕ]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/resultstream.rsя㟯ʾ./5C/C%BG@1#:.+G"N6>7 ܉ط΍󕋩FU/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/task.rs߀ܓ"˾.˾-NOL%OMOL0QQOMTGQQCT>@6IT>֜ӱИY/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/executor.rs鋊¥ژʟJNP@,8؍ZY/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sync/mod.rs𔇋!IHL$Q'V ̛٘]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sync/oneshot.rṣb&#)0Q 81N8NKOOO,M-NFKNKLFPPLN!=L!3ONPP&E ,$2(.#&& ,( DE+7%IHG!,H0?3'% ,OIQ(( OO OOO LRONA&(.1 (! $#OM9 N+ 8, MPP, NNK>E+:. N?+<0 8M?(;22N5 *O QMM/((,6% QKPP IC0PR,;2, L)+POL':$ ON OJF<0 @("9MRMOQ/K#PNQNPIQNO+KOL>4!FPNQNHOK#(!O-!=($PHPPEHMHNI4@!./QLL3NI )J 6LBPPL&NP& N!JOONPJ2N#'.)BPPMO,BNNK2*'%508G F;&(!()A L=4% 0?* *9;"(&!޹䑵ŽӅ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sync/mpsc/mod.rsĔ́ր UPNMMPMP4MNGODMMNPP-PLOPPONPICPPIOLO0*N/2+,+PLJN$)+#? D-=NL)M2D/**-HQHHQH.H (   &=%(=<$$/F#)=(+=?@ )$23 I$' M,'% F#', PPH@%L1&&$,')& G9J%P*OB-5  / KNKMIOP1PF?O%EKNOLIPMMF#1D!-%$*- > IONIMK5HB3&3 F'&=#WML PJ E*OFMN'0)0# NO JOM )1+?-40 /<63,K:M>604 PNRF%J'-RT2>E'+. DL ?FP$JH'" # )H!"  ? % "*)NA+bRY>W>A' %J&=>N-=!+(PM2N%& #EO21 G(<KGCLE(4J&7PQ8=!7PQG&#E<4.#E!<4',(#PN7<L2Q<!VJ< /J) 8@/ "PI60 #-R . L9=+3+@ 5>*Q.'4-.&;,-NKOB.EJJ) O=+3&8-%) %$2(D$ 9B D(& 0!60%-R . !0?(C%OPK,-M78-O);/KG>& 5(&%>4P+ ELQP@) "PI*0/LIQKO&'%S i&L7CPI*LPI Q"]"5$7)LQCPI*MOR# Q"X"5#7)*/O6>8N .;&()&'. "8& ,;"N@%3 ** "0' /**&߬㈮ϝ`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sync/mpsc/queue.rsތіτ?FOP?KMNQHTKPRJSM.MO<>LM(QJA6GJ.$"  PNN<PL1$++2&3 O/() ,(<6 (MFKLEQ>O/%9%..5' Q,#@* ཙ٢č\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sync/bilock.rsȃЧ͚!$)QQOO QOPPNPQN"**=QT#1%(- CJPMNMECPGM750G:P3901MPO1OL<#:NQNMO3: O1N@HF, LJ8FC4M.+ 1M3BP)8 *B0J":)=(+=K)$>5MO$+D.(H*J&#8R! ; F5NLM@+2&V)(Z%0 Ǫۗ[/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/unsync/mod.rsҍ藭;1L+ŞܓȆ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/unsync/mpsc.rsԼɔؿŏ2KFN( #??LMMK?D/!* <<% '/&>3$H . CC-.A#% /#E<43$ OKPO*J< H/QE""PI3(4NZ"( + !B$+.; 0NM *7E(9 21*'(&#E<4.#E<47PQ8=!7PQG5$0 .&9 /1."PI*BBKF'5H &=%(=<&$/F#/LIQKO&*%S i&L7CPI*LPI Q"]"5$7)LQCPI*MORJL% Q"W"5#7)*/"O6>8N .;&()&'. "8& ,;"׶ւ䠙_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/unsync/oneshot.rs˦ɑц&Q  03J32- &# NQN$Q QP1!!9MRMOQ142 K#PNNO+QNPIQ4%D$# FPNQNHOK#((1" 1#" & PHPPE.(4,;( *# !:'1-$:2 J=) KJ5*@ /QLL3NI  "H 3"LBPPL*NP& N!JOON#*$)BPPMO,BNNK%*'508G F;&()A LI*% 0?* 49;"(󠚭::std::macros::panic揘0ɒ̒ ɒEN6)#0魛d/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/catch_unwind.rsāϓ̒ג3̒>.:1,+"""+":IG%,$<0 14”ʚӗ`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/join_all.rs̷ٻגגQ'$M71<"IG=$)Q PQQPQ "%&% '(,41:!+33%61.%*9?G-" C5-)% ̑㜆rb/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/select_all.rsȫ罖土ͿGK'P21*CQMI  JL -" *,:K-9-"(F?3) Ҥ̙a/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/select_ok.rs饂ԖمQQ'OS*11)_ZUR. JJ -"1#:`O!1=1&Z2 #R?$7.K/ ⻙ޮӦĮ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/shared.rsСղ#E+###--%!$)FP1!" =#)+ *T*0 0*/5D+ $K($^]W75E G6Z)NM! 4;'%(:R/"QJ,IE! /*%%-8<=A)<^%'8$1X6-)ad 9.K'# -G&#>X% :*"C=,+)%6;%(;N"H$N<*CML#!&;/'BP ,5:%*% $;0 PM"## 6,$!#\%<$4ֳگd/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/catch_unwind.rsdžG>!.:1, +"1 ""+"BVG'5/8 <:$?>@PF 1<큎ۢ܆Ҳ ^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/chunks.rsщ٢oٔ4NO/1O2 -%6##!#\%<$4$)?N"H$N<*CML#!*'B- 'COQ!2+6<Q7,5R2/M4/&,< Ӣ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/collect.rsؙٔ4ٔI<1("+29'ARC#" ̰ʉߔ\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/wait.rs5NNQ;5 N"H$N<*CML#!) $'+/"႘ƥ_/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/channel.rsدծЋr%J)GNKMLMPF;%3DD'HQH-1)R*' -,=%.=<%$/'/8D2:4 >PC?3+":"96 ߜΠ]/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/split.rsϴˮ˥:ыiы7&&IOKN,<#54 $$IOKP0? &!#00#?> <#>4 4#64 I!O=B)=(+=[)$Nأ׬i/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/futures_unordered.rsν赣!N0)4#!PNNLQO)QOJNN;QM9LFER<1!55OQOKQMN"NNGNBNPQM(*((0#>*>*'(5@ : 3RN*#+44=+ 1%'@7 ' <?!6%$MOP(#388=+0 MIL#PLK!J/!! 5O63IEN/ NKN> IMNNN? 9?!4*8 J'H"))00, ," '<-&?$)73+LQ$.0-6H,KBPJ2CC!A>C?HMO3JN9PFI:PP!)803)?;&3!LMPL+NGPO5L<&&->;/!F& /=2'WPOO&-*.) OMMPGJO8 NK8:&(/) < 6*.! I5! 4#4P.9=DD'?9 OO3-3=! '/9 /0( C* #5/( 'PB OMOI'-L> (2,9;(L, #E;&& #.40 -1*00  .I @+#/" JKLJ KA KIPO1"# NIQ& QQ#0: )"08%'; < ۣ֟g/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/futures_ordered.rsƒrҟ:"/ ()"")>".@%#':3' #PHM1PLOQOOLLL;OO;JKMK6CP<147 LLJMOPK5Y+*81PL(2/$$ >DE;!;8%F&QON(%- '(%B=-P? @1?,1(+ >'1+=08&(-) ʶ˿::core::macros::writḛьб٣ӟӟ+؍嘦\/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sink/buffer.rsȧM궗l KH/ N8 +2"3*AML#?6M+, 66<#!#c/ "(2 "?. -,"7&  1 'ׅ푗㖚Z/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/sink/wait.rsČȊ혽붗Ǘ;붗J QP/-' "PMNK9PK3M#L%MKK:QEAS:⒡ڼ۵::core::macros::debug_assert_eqDž۞ǗȗǗ"::std::thread::local::thread_local硔÷ȗ̗ ȗM)$OM$߮ذ֌ؚ*::std::thread::local::__thread_local_innerۊԏ٤̗ח̗LJN!NOENM0$NKFDM N(ԩcorecompiler_builtinsstd if_std poll try_ready Poll mapis_ready is_not_ready from mapis_ready is_not_ready  StartSend future222 empty888888empty8FItemFErrorFpoll2 lazyNNNNNNlazyN\getN`Item`Error`poll2 poll_fnhhhhpoll_fnhrItemrErrorrpoll2 result_zzzzzzresultzokzerrzItemErrorpollzfrom2 loop_fnloop_fnItemErrorpoll2 optionItemErrorpoll22222222 2 2 2 2 2222222222222222222 2 and_thennewItemErrorpoll2 flattenFlattenfmtnewItemErrorpoll2 flatten_stream FlattenStreamfmtnewItemErrorpoll2 fusenewis_doneItemErrorpoll2 into_streamnewItemErrorpoll2 join generatepolltake2 mapnewItemErrorpoll2 map_errnewItemErrorpoll2 from_errnewItemErrorpoll2 or_elsenewItemErrorpoll2 selectnewItemErrorpollItemErrorpoll2 select2newItemErrorpoll2 thennewItemErrorpoll2 eithersplitItemErrorpoll2 inspectnewItemErrorpoll2 chainnewpoll2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/2021222324252627282FutureItemErrorpollwaitboxedmapmap_errfrom_errthenand_thenor_elseselectselect2joinjoin3join4join5 into_streamflattenflatten_streamfuseinspect catch_unwindshared2ItemErrorpoll2 assert_future2 IntoFutureFutureItemError into_future2FutureItemError into_future2FutureItemError into_future2 FutureFromFutureError future_from2Executorexecute2 ExecuteError2newkind into_future2fmt stream iteriterItemErrorpoll iter_okiter_okItemErrorpoll  iter_result iter_resultItemErrorpoll    repeatrepeatItemErrorpoll  and_thennewget_refget_mut into_innerSinkItem SinkError start_send poll_completecloseItemErrorpoll chainnewItemErrorpoll concat  Concat2fmtnew2ItemErrorpollConcatfmtnewItemErrorpollnew_safeItemErrorpoll emptyemptyItemErrorpoll filternewget_refget_mut into_innerSinkItem SinkError start_send poll_completecloseItemErrorpoll filter_mapnewget_refget_mut into_innerSinkItem SinkError start_send poll_completecloseItemErrorpoll flattennew get_ref get_mut  into_inner SinkItem  SinkError  start_send  poll_complete close Item Error poll fold        new  Item Error poll for_each       new  Item Error poll from_err     new  get_ref get_mut  into_inner  Item Error poll  SinkItem  SinkError  start_send  poll_complete close fuse      SinkItem  SinkError  start_send  poll_complete close new  Item Error poll  is_done get_ref get_mut  into_inner future      new  get_ref get_mut  into_inner  Item Error poll inspect     new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll inspect_err    new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll map     new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll map_err   new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll merge       new  Item Error poll once     once  Item Error poll or_else       new  SinkItem  SinkError  start_send  poll_complete close  Item Error poll peek       new  SinkItem  SinkError  start_send  poll_complete close  Item Error poll  peek poll_fn    poll_fn  Item Error poll select       new  Item Error poll skip     new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll skip_while       new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll take     new  get_ref get_mut  into_inner  SinkItem  SinkError  start_send  poll_complete close  Item Error poll take_while       new get_refget_mut into_inner SinkItem SinkError start_send poll_completeclose ItemErrorpoll thennewSinkItem SinkError start_send poll_completecloseItemErrorpoll unfoldunfoldItemErrorpoll zipnewItemErrorpoll forwardnewsink_refsink_mut stream_ref stream_mut take_resulttry_start_sendItemErrorpoll !"#$%&'()*+,-./0123456789:StreamItemErrorpollwaitboxed into_futuremapmap_errfilter filter_mapthenand_thenor_elsecollectconcat2concatfoldflatten skip_while take_whilefor_eachfrom_errtakeskipfuseby_ref catch_unwindbufferedbuffer_unorderedmergezipchainpeekablechunksselectforwardsplitinspect inspect_errItemErrorpollfutures_unordered  sink with  is_emptynewItemErrorpollget_refget_mut into_innerpollSinkItem SinkError start_send poll_completeclose with_flat_mapnewget_refget_mut into_innertry_empty_streamItemErrorpollSinkItem SinkError start_send poll_completeclose flushnewget_refget_mut into_innerItemErrorpoll from_errnewget_refget_mut into_innerSinkItem SinkError start_send poll_completecloseItemErrorpoll sendnewget_refget_mutsink_mut take_sinkItemErrorpoll send_allnewsink_mut stream_mut take_resulttry_start_sendItemErrorpoll map_errnewget_refget_mut into_innerSinkItem SinkError start_send poll_completecloseItemErrorpoll fanout  Fanout into_innerfmtnewSinkItem SinkError start_send poll_completeclosenewis_ready keep_flushing poll_completeclose    SinkSinkItem SinkError start_send poll_completeclosewaitwith with_flat_map sink_map_err sink_from_errbufferfanoutflushsendsend_allSinkItem SinkError start_send poll_completeclose     !"#$% lockcoreTryLocknewtry_lockTargetderef deref_mutdrop task_impl atomic_task AtomicTaskWAITING REGISTERING NOTIFYINGnew AssertSyncregister register_tasknotifydefaultfmt core LocalKeyLocalMap local_map TaskUnparknewto_ownednewto_ownednotify will_notifynotify will_notifyclonedropGETSETinitget_ptr is_get_ptrsetResetdrop std      unpark_mutex UnparkMutexWAITINGPOLLINGREPOLLCOMPLETEnewnotify start_pollwaitcomplete data task_localLocalMap local_mapOpaqueIdHasherdefaultwrite write_u64finishwith  task_rcnewwithclone!"INITget_ptrtls_slotsetResetdropnewto_ownednewto_ownednotify will_notifynotify will_notify poll_future wait_futureexecute poll_stream wait_stream start_send poll_flush wait_send wait_flush wait_closeUnparkunparkExecutorexecuteRunRunInnerrunfmt notify ThreadNotifyIDLENOTIFYSLEEP  with_currentpark notifywith_unpark_event newunpark fmtEventSetinsert ArcWrappednotifyclone_iddrop_id clone_rawdrop_rawfrom  BorrowedTask fresh_task_idNEXT_IDwith AssertSendcurrentparknotifyunpark is_currentwill_notify_currentfmtSpawnspawnget_refget_mut into_innerpoll_fn_notifypoll_future_notifypoll_stream_notifystart_send_notifypoll_flush_notify close_notifyenterfmtNotifynotifyclone_iddrop_id with_notify UnsafeNotify clone_rawdrop_raw NotifyHandlenewnotifyclone_iddrop_idclone fmt drop StaticRef notifyclone_iddrop_id  clone_rawdrop_raw from resultstreamnewItemErrorpoll task      executor    sync oneshot     channelnewsend poll_cancel is_canceleddrop_txclose_rxtry_recvrecvdrop_rxcompletesend poll_cancel is_canceleddropfmt descriptionclosetry_recvItemErrorpolldrop SpawnHandle ExecuteInnerExecutespawnspawn_fnforget ItemErrorpoll fmt drop ItemErrorpoll fmtdrop mpsc      queue PopResultnewnewpushpopdrop AssertKindsfmtfmt description into_innerfmtfmt descriptionis_fullis_disconnected into_innerTryPark OPEN_MASK INIT_STATE MAX_CAPACITY MAX_BUFFER newnotifychannel unboundedchannel2 try_senddo_send do_send_nbqueue_push_and_signalinc_num_messagessignalpark poll_ready is_closed poll_unparked SinkItem SinkError start_send poll_completeclose  is_closedsendunbounded_send SinkItem SinkError start_send poll_completecloseSinkItem SinkError start_send poll_completeclosecloneclonedropclose next_message unpark_onetry_parkdec_num_messagesItemErrorpolldropcloseItemErrorpoll SpawnHandleExecutespawnspawn_unboundedItemErrorpollfmtItemErrorpollfmt max_senders is_closed decode_state encode_state bilock     new poll_locklockreuniteunlock into_innerdrop ReuniteErrorfmtfmt descriptionTargetderef  deref_mut drop ItemErrorpoll unlock Targetderef deref_mutdrop unsync mpsc     channelchannel_do_sendcloneSinkItem SinkError start_send poll_completeclosedropcloseItemErrorpolldropcloneSinkItem SinkError start_send poll_completeclose SinkItem SinkError start_send poll_completeclose sendunbounded_send  close  Item Error poll unbounded SendError  fmt fmt  description  into_inner SpawnHandleExecutespawnspawn_unbounded Item Error poll fmt Item Error poll fmt oneshot                         channel   send  poll_cancel  is_canceled  drop  close  Item Error poll !drop  SpawnHandle Execute spawn spawn_fn !forget !Item!Error!poll !fmt !Item!Error!poll  !fmt prelude!!!!!!!!! Async !eq!ne !fmt !clone   AsyncSink !eq!ne !fmt  !clone  8Empty8!fmtNLazyN!fmtN_LazyN!fmthPollFnh!fmtz FutureResultz!clonez"fmtLoop"fmtLoopFn"fmtAndThen"fmtState"fmtFuse"fmt IntoStream"fmtJoin"fmtnew"erase"Item"Error"poll"Future"Item"Error" into_futureJoin3"fmtnew3"erase"Item"Error"poll"Future"Item"Error" into_futureJoin4 "fmtnew4 "erase "Item"Error"poll "Future"Item"Error" into_futureJoin5 #fmtnew5#erase#Item#Error#poll#Future#Item#Error# into_future MaybeDone#fmtMap#fmtMapErr#fmtFromErr#fmtOrElse#fmtSelect#fmt SelectNext#fmtOneOf#fmtSelect2#fmtThen#fmtEither#fmtInspect#fmtChain#fmt2 catch_unwind########## #new#$Item$Error$poll#$Item$Error$poll2 join_all$$$$$$$$$JoinAll$$fmt$join_all$$Item$Error$poll2 select_all$$$$$$$$ SelectAllNext$ select_all$$Item$Error$poll2 select_ok$$$$$$$$ select_ok$$Item$Error$poll2 shared$$$$$$$$$$ $ $ $ $ $$$$$$$$$$Shared$%fmt$Inner$Notifier$IDLE$POLLING$REPOLL$COMPLETE$POISONED$new$%new%peek% set_waiter% clone_result%complete$%Item%Error%poll%Reset%%drop%$%clone$%drop$%notify$$$%fmt$ %Target%deref$ %Target%deref$ %fmt$ % description%cause292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2 BoxFuture2&Item&Error&poll# CatchUnwind#&fmt$ ElemState$&fmt$ SelectAll$&fmt$SelectOk$&fmt$ SharedItem$ &fmt$&clone$ SharedError$&fmt$&clone2ExecuteErrorKind2&eq2&clone22 &fmtIter&fmtIterOk&fmt IterResult&fmtRepeat&fmtAndThen&fmtState'fmtChain'fmt ConcatSafe'fmtInner'fmtEmpty'fmtFilter'fmt FilterMap'fmtFlatten'fmt Fold 'fmt State 'fmt ForEach 'fmt FromErr 'fmt Fuse 'fmt  StreamFuture 'fmt Inspect 'fmt  InspectErr 'fmt Map 'fmt MapErr 'fmt Merge 'fmt  MergedItem 'fmt Once 'fmt OrElse (fmt Peekable (fmt PollFn (fmt Select (fmt Skip (fmt  SkipWhile (fmt Take (fmt  TakeWhile (fmtThen(fmtUnfold(fmtState(fmtZip(fmtForward(fmt; buffered((((((((((Buffered((fmt(new((get_ref(get_mut( into_inner((SinkItem( SinkError( start_send( poll_complete(close()Item)Error)poll buffer_unordered))))))))))BufferUnordered))fmt)new))get_ref)get_mut) into_inner))Item)Error)poll))SinkItem) SinkError) start_send) poll_complete)close catch_unwind)))))))))) ) )new))Item)Error)poll))Item)Error)poll chunks)))))))))new))SinkItem) SinkError) start_send) poll_complete)close)*take*get_ref*get_mut* into_inner)*Item*Error*poll collect********new**finish**Item*Error*poll wait****get_ref*get_mut* into_inner*new**Item*next channel********** * *channel* SendError**fmt**fmt** description**Item*Error*poll*+send*+Item+Error+poll split++++++++++ + ++reunite++Item+Error+poll++reunite++SinkItem+ SinkError+ start_send+ poll_complete+close+split+ ReuniteError++fmt++fmt++ description futures_unordered++++++++++ + + + + +++++++++++++++++++ +!+FuturesUnordered+++Inner+Node+Dequeue+,default+,new+,len,is_empty,push,iter_mut, release_node,link,unlink+,Item,Error,poll,Bomb,,drop+,fmt+,drop+, from_iter+ ,Item,next, size_hint+ + ,enqueue,dequeue,stub+ ,drop+ NodeToHandle+ ,clone+,from+ArcNode+++,notify+, clone_raw,drop_raw+hide_lt+-notify+-drop+arc2ptr+ptr2arc+abort- DoublePanic--drop futures_ordered---------- - - - - ------eq--- partial_cmp--cmp--Item-Error-poll-FuturesOrdered-futures_ordered--default--new-len-is_empty-push--Item-Error-poll--fmt- - from_iter<=>?@ABCDEFGHIJKLMNO BoxStream.Item.Error.poll) CatchUnwind).fmt)CatchUnwindState).fmt)Chunks).fmt*Collect*.fmt*Wait*.fmt*Sender*.fmt*Receiver*.fmt* FutureSender*.fmt+ SplitStream+.fmt+ SplitSink+.fmt+IterMut- OrderWrapperWith.fmt.cloneState.fmt.clone WithFlatMap/fmtFlush/fmt SinkFromErr/fmt/cloneSend/fmtSendAll/fmt SinkMapErr/fmt/clone Downstream/fmt buffer//////////new//get_ref/get_mut/ into_inner/try_empty_buffer//Item/Error/poll//SinkItem/ SinkError/ start_send/ poll_complete/close wait///new//send/flush/close /SinkItem/ SinkError/ start_send/ poll_complete/closeBoxSink0SinkItem0 SinkError0 start_send0 poll_complete0close/Buffer/0fmt/Wait/0fmtLock0fmtBorrowedEvents0cloneBorrowedUnpark0clone  UnparkEvents 0cloneLocalKey0fmtTaskRc0fmt CURRENT_TASK0__init0__getit0__KEYBorrowedUnpark0cloneBorrowedEvents0clone TaskUnpark0clone UnparkEvents0cloneCURRENT_THREAD_NOTIFY0__init0__getit0__KEY UnparkEvent0cloneTask0cloneResults1fmtReceiver1fmtSender1fmtInner1fmtCanceled1fmt1assert_receiver_is_total_eq1eq1cloneNode1fmtQueue1fmtSender1fmtUnboundedSender 1fmtReceiver!1fmtUnboundedReceiver"1fmt SendError#1assert_receiver_is_total_eq$1eq1ne%1clone TrySendError&1assert_receiver_is_total_eq'1eq1ne(1cloneTrySendErrorKind)1assert_receiver_is_total_eq*1eq1ne+1cloneInner,2fmtState-.2clone/2fmt ReceiverTask02fmt SenderTask12fmtBiLock2fmtInner2fmt BiLockGuard2fmt BiLockAcquire2fmtBiLockAcquired2fmtShared2fmtSender2fmtReceiver2fmtState2fmtUnboundedSender2fmtUnboundedReceiver2fmt Sender  2fmt Receiver  2fmt State  2fmt Inner  2fmt&'()*+,-./0123- 3fmt+3fmt{{GlobalMetaData::Krate}}{{GlobalMetaData::CrateDeps}}*{{GlobalMetaData::DylibDependencyFormats}}{{GlobalMetaData::LangItems}}${{GlobalMetaData::LangItemsMissing}}#{{GlobalMetaData::NativeLibraries}}{{GlobalMetaData::SourceMap}}{{GlobalMetaData::Impls}}#{{GlobalMetaData::ExportedSymbols}} T E T F U T T F U& T& ED TD EF TF EZ FZ R\ F\ R` F` Rp Tp Ep Fr Tr Er F T E T E T E T E T E S T A F S T A F F T E  A B F A B F   Astate A A A  Fstate F F F A A A  F F  A A F U A F A F U A F A E A E A B F A B F  A B A B A B A B A B A B F A B F  T A B A B A F A F A B C F F U F E E F B F B F B B B B B C B C D B C D E F 'a F A B F F T E T F Ffuturekind F F J T E I T E I E I E J T E I T E T E T E S F U S F U S F U S F U S1 S2 S1 S2 Sinner S S S  Sinner S S S  S S T E T E S F S F S F S F S F B S F S F S F B S S S S S F Fut T S F Fut T S F U S F U S E S E S E S E S S S S S S S S F S F S F S F S F S F S F S F  S F U S F S F S F U S F U S F S F S F U S1 S2 S1 S2 T E T E S F U S F U S F U S S S S T E F T E F S1 S2 S1 S2 S S S S S P R S P R S P R S P R S S S S S P R S P R S P R S P R S F U S F U S F U T F Fut It T F Fut It S1 S2 S1 S2 T U T U   T U U F U F F F B F U F U F U F T Fut P R P R F U E S S S S S F F 'a S I Fut T S U F Fut S U F Fut S U F Fut S U F Fut S U F St S U F St S U F St S U F St S S S S E S E S E    S E S S S T U T U T U S F S E S F E    S F A Bleftright A B A B A B A B S U F Fut U F St F E E S S 'a S 'a T__ptr T T T 'a T 'a T 'a Tstatetaskhandleid 'a 'a 'a F R01 Dstatusinner D D D Tid T F R   A A A F R A   'a F R 01 'a 'a F   S   S     spawninnermutexexecstatemutexcondvar F R  F R  T0 T T T 'aidunparkeventsmap F R    Tiddataobj T T N F R  N  N  N  N  N  F R  T F T R  inner T0 T T T S E S E T T T T T T T T Erx Tinner keep_running Ffuturetx F E F R E T E T E T E T E F F F TData 0Empty Inconsistent T T T T T T T T T T T T TParkedClosedNotEmpty T T T T  T  T T 'a T T T T T T T T T Item Errorrx _cancel_tx Sinner cancel_rx S E S E I E I E S S T T T T T T T T T01 T T T 'a T 'a T 'a T T T T T T T T T T T T T T T T T 'a T T T T T  T 0 T T T T Item Error inner  _cancel_tx S inner  cancel_rx S E S E I E I E S S T T T T T! T! T! E!rx! keep_running! F!future!tx! keep_running! F! E! F! R! E! T! E! T! E! T! E! F! F! T!Ready 0!NotReady! T! T! T! T! T!Ready!NotReady 0! T! T! T! T! T! E!_data! T! E! F! R!inner! F! R! F! R!First 0!Second 0!Moved! F! R! F!inner! F! T! E!inner! T! E" T" E" T" S"Break0"Continue0" T" S" A" F"future"func" A" F" A" B" F"state" A" B" F" F"Future0"Stream0"Eof"Done" F" A"future" A" F"future" F" A" B"a"B" A" B" A" B" A" B" A" B" A" B" A" B" C"a"B"C" A" B" C" A" B" C" A" B" C" A" B" C" A" B" C" A" B" C" D"a"B"C"D" A" B" C" D" A" B" C" D" A" B" C" D" A" B" C" D" A" B" C" D# A# B# C# D# E#a#B#C#D#E# A# B# C# D# E# A# B# C# D# E# A# B# C# D# E# A# B# C# D# E# A# B# C# D# E# A#NotYet0#Done0#Gone# A# A# F#future#f# A# F# A# F#future#f# A# F# A# E#future#f# A# E# A# B# F#state# A# B# F# A# B#inner# A# B# A# B#inner# A# B# A# B#A0#B0# A# B# A# B#inner# A# B# A# B# F#state# A# B# F# A# B#A0#B0# A# B# A# F#future#f# A# F# A# B# C#First01#Second0#Done# A# B# C$ F$ F$ $ F$ I$elems$ I$ I$ $ I$ $ A$ I$ $ A$ $ I$ $ A$ % F%inner%waiter% F% F% next_clone_id%future%result%notifier%state%waiters% F% F% F%% 'a%0% 'a% F% F% F% F% F% T% E% E% E& T& E& F& F&future& F& T&Pending0&Done0& T& A&inner& A& A&inner& A& T&item& T& T& E&error& E& E&Shutdown& NoCapacity&__Nonexhaustive&& I&0& I& I& E&iter&_marker& I& E& I&iter& I& T& E&item&error& T& E& S& F& U&stream&future&f& S& F& U' S1' S2'First01'Second0'Temp' S1' S2' S1' S2'state' S1' S2' S'stream'extend' S' E'First' Extending0'Done' E' T' E'_data' T' E' S' F'stream'f' S' F' S' F'stream'f' S' F' S'stream'next' S' S' F' Fut' T'stream'f'state' S' F' Fut' T' T' F'Empty'Ready0' Processing0' T' F' S' F' U'stream'f'fut' S' F' U' S' E'stream'f' S' E' S'stream'done' S' S'stream' S' S' F'stream'inspect' S' F' S' F'stream'inspect' S' F' S' F'stream'f' S' F' S' F'stream'f' S' F' S1' S2'stream1'stream2' queued_error' S1' S2' I1' I2'First0'Second0'Both01' I1' I2'' T' E'0' T' E( S( F( U(stream(future(f( S( F( U( S(stream(peeked( S( F(inner( F( S1( S2(stream1(stream2(flag( S1( S2( S(stream( remaining( S( S( P( R(stream(pred(pending( done_skipping( S( P( R( S(stream( remaining( S( S( P( R(stream(pred(pending( done_taking( S( P( R( S( F( U(stream(future(f( S( F( U( T( F( Fut(f(state( T( F( Fut( T( F(Empty(Ready0( Processing0( T( F( S1( S2(stream1(stream2(queued1(queued2( S1( S2( T( U(sink(stream(buffered( T( U( S(stream(queue(max( S( S( S( S) S) S)stream)queue)max) S) S) S) S) S) S) S) ) S) S) S* S* S* S* S* S* S* S* S* T* E** T* E*0* T* E* T* E* T* E* T* E+ T+ E+ T+ E+ + S+ S+ S+ + S+ S++ T+0+1+ T+ T+ T, F,inner,len,head_all, T, T, T,parent,head_readiness,tail_readiness,stub, T,future,next_all,prev_all,next_readiness,queue,queued, T,Data0,Empty, Inconsistent, T, T, T, T, 'a, T,queue,node, 'a, T, , T, T, F, T, 'a, F, 'a, F, T, T,, 'a, T,0, 'a, T, 'a, T,, T,0, T, T, T, T- T- T- T- T- T-- T- T- T- T- T- T- in_progress-queued_results-next_incoming_index-next_outgoing_index- I- T- T- T- T- F- T. T. E. S. S.state. S. S.Stream0.Eof.Done. S. S.items.err.stream.cap. S. S.stream.items. S. S.stream. S. T. E.inner. T. E. T. E.inner. T. E. T. E.inner. T. E.. S.0. S.. S.0. S. 'a. F.node.len._marker. T.item.index. S. U. F. Fut.sink.f.state._phantom. S. U. F. Fut. S. U. F. Fut. Fut. T.Empty.Process0.Buffered0. Fut. T. Fut. T. S. U. F. St.sink.f.stream.buffer._phantom/ S/ U/ F/ St/ S/sink/ S/ S/ E/sink/f/ S/ E/ S/ E/ S/sink/item/ S/ T/ U/sink/stream/buffered/ T/ U/ S/ F/sink/f/ S/ F/ S/ F/ S/sink/state/ S/ S/ S/ S/ S/ S/ S/ T0 T0 E0 S0 S0sink0buf0cap0 S0 S0sink0 S0 T0locked0data0 T00 'a000 'a0 'a0 'a0f0id0 'a0 'a00 T0__key0__init0 T0 A0task0ptr0 A0 'a0Old00New00 'a0 'a0 'a0None0One010 'a0 'a0Old00New00None0One00Many00set0item0id0unpark0events0 S0 E0inner0phantom1 S1 E1 T1inner1 T1 T1inner1 T1 T1complete1data1rx_task1tx_task1 T11 T1next1value1 T1 T1head1tail1 T1 T1inner1 sender_task1 maybe_parked1 T11 T101 T1 T1inner1 T11 T101 T11 T101 T1 T1 T1 T1kind1 T1 T1 T1 T1Full01 Disconnected01 T1 T1 T1 T1buffer1state1 message_queue1 parked_queue1 num_senders1 recv_task2 T2is_open2 num_messages2unparked2task2task2 is_parked2 T2inner2 T2 T2state2inner2 T2 'a2 T2inner2 'a2 T2 T2inner2 T2 T2inner2 T2 T2buffer2capacity2blocked_senders2 blocked_recv2 T2 T2shared2 T2 T2state2 T2 T2Open02Closed02 T22 T202 T22 T202 T2 T2inner2 T2 T2state2 T2 T2Open02Closed02 T2 T2value2tx_task2rx_task2 T3 T3 'a3 F#% )++++++. 2":ccnUB?hmFHc-qzR GxIqPe!xl|k:,^ (ACSvF3O]zLc)!y]Z4 "ZEz3'mVG7%|Mн 1Ak^:1nDdH[Rɩn3P7D-'wbs?TSrpU{1#.AJ7?iGA%|Ue#TbWmyG2A6_gP!W>|T ]tſsl:ѳؑ1(+@jRFEhuU No R48VɘѪ%!}" ~RO' X0Hz(D3 `}TGrCR`#C\{J5.SL ΥOk6Ѽ>nM|`4ٵ^o;Υ:|哨pkYk hj^icKUF~**[@b> PU`Y3=r<7|::p+9 L4Qc'=C͆sR4 ,zY`>N r ֎eQr~Sjl9&9A1W|4]Ntxe} nW 0`#fXOn~0#Tm2^ywyڂ''#["Nx1:g^F9:C9ut6Oeٯ ?⁠o9:pg@:5{؛enuRh:=9=k\س:XhoÉ%]iqġ̞f8meo/,?XbW0Ŏ/Jϙ!JTA_b/I6:,ZT .Pj&PW%I/58q}#`Y*jvq؁z9_.sE6(1uVLVJ=XuIaX\,[/^LhzfEŵHJRCuьX\Q69Pȉϙl|N;s >77Yiy[թ"=f 0q6cI}c;)h v8Áՙx.bQya1~1>kCr;?jӶRb,ssMq"# ӳd`k+://f8YK?;ПލQ̋֨V(ܕ:F6c7.KmFNɜK/KyB$ jíh,GWban{@n{x)(d_c]* v:O$M<}NDǾ>!Y5,M|Z/f= 3XZEXj0kL V1:DzqmN z=wjŕ]gL*7gQo te #GKnWd1v<^MXTpʇ6_c2[%¤]~Q߁L;ł$xS4Q-*wC"/̘T{ |j9z]ϋ`fM37JrQ=fL?WyfPz>D~ vaS@=EpTPhȺZP3%rr؍{b6i|[ #z2>1FM`Wa*'EA- n|Pܼq _yg9;x};ת Yl`JE3|0_}~^ƀZӼ-y1,WmԣTp'c*XP*gr6QSB> GBJ}4 m7 `1)k^⮶)8H9s){nNFh- )@eZj)]Dz֦̪^;BO*hi<)7,ilsĽsQQU#.Ūl-qr'={.U{L9qM9 dh0kjF~C35NͯdLΦ}]$qYv5-S1+Ľ/J^fo,%xq3U` ikWo+K+3PFp6 I#ڵtsti! ySQQ$2XIp_@uPMfS1& d-.`3e{eaj(UV6dlXz>!sG>19|sK}H?-Ǭ J@+H@Uct\.S ,i3ul\n$s-L=^:>h.?"nNuaiI( FEr!WHXyZ+!0ى"K%)DoH%IϘ'@9GA>yxTdfHL3l鬋46v+i"@>d3SUBf!NnV|.Qվ鲭#t6P5(eW!cǗ6ob);#72:r@# UG QM 4[_ou ^+зRQ!+q/,WOO@N+gFL"#zy'B[5K%͔{ <$` YJ9͛"w,JLyWZczӰ9&=|3е]mƓQǯ=ȵY Z&'Yta)}ס8t:,Wf.m DU:/B@#Ud=iUI$}H UB4WhO2t>wK_nO]-7*o>R~~Ha@p#%,\ar 7&jU;JtUxO~ܾ9+<P1)];~xwh 3Z^ CN Kġvaxҋ-XW`i- %<\O R@1v(+ jTΨU=~tZ$}JSC1LE'8X;',eSse9GzlrYKAy-'X9/: Xd P*2[4B(p9=~Ȃ^wCt}+xS^J/%Gh&x )PS뤑h -u@LXCP>/N^! g Ld?Z44C#yݮx6<(Ꙙ>M=ٌFI客rv@ I-YsBH'=HQgW1Ϸ~~ @j=@/VMĘ|[i+t.3sñ$*JO1D9ugK@nBm5&PEW?chHB~сRiL 3E~? }a6uC˂ h18.0} 1ԜR3Lф$DvQlk#a̙Ns3x;[:-7@bMD W:=?#;x8erxtz>@o+һ2ei%jad< KVPjN;v})cy7;!*6R} )uzNW5Q $ii?ot.|=k. }R3+C0?4E+ q-|E(i½܊#j\!.cfyuQǟҰ<6׍M Ph *ղaT5wQ{  ?SHhõṡ97/Or7DP{: b[>H{4,۷B?o˰,Hqf1eBE"P5kPE}mnkG^:4@Jۇ8}cF!s]ŝ2e/yW.96SwIP2 ЖQf*A YjMeβF\׎/7~eǡ& A@y7c"TmCo[/e?yPq6YKrU$^٩ۣ]O?y%uN Qǧ!Pxvz,C4~8,Z04"u >•]`3Ug!V),"ƭS=xg6>k&dBP }!jݘ)|[Mp_Er \fZ*$d{# U}u24=`4Pq?k1oTHfLx p[y-(1б}HP]ε\CE M;Mc,WV5r %ƽ2wj9ǻSݔaF5Ƣ(RZsԦ|! H?iS`M;&@H!0kاD40dmMϙQ"sd&\DӃpf-@I06> RٲSeN8;SgHjz\d' 4dVCA#n5pxe˂2to[^^k QM@AżPCZ>o2XqzF[wmǿMj(:| y;Q+\ 6A*\u~6%hc<0oÿbJ\j.I%bp^?ijC]Kt$[_=ە#;?% C=gaL~{ ݽ3E/$DK9?lU>?(aޣq.g2Mf;0cAۯtd?ѵ0ipV.cܻ_rY:۝q%ښ˔J,4 JNSFy(җcϮIWjrgt4i~bk|&F% OsfJ/Z+V;G|Ol_c^?]lj9"^ͥP-F}8K*g93X+U×p=JGp|/P !xG(N+<>f.9oN1"~nM\;4^QYKe-a֧\ބL'Gv4 Tn,"k)ݚ;9?d}Qbo`S5*j}BꍛPZTiJ3e$TuҐx!ozx@-TfA׈Lʉ"t'+O%(@XJXU ;[a[hyZl D3 @ 8$Ul .h}z@侰2j^\D1 pK4}=>}0K<~Sc;JRLPrak|udQa$c9]M|kJ*٥8?X"q uxV!*W)5FlFo, (eƪ n ~j9CBP?} D^[7"D鯖qhEߡ|fT6mu}|T.H1WB񼊇xrH]:?ю wHze+#ʽK\fyS3(E9vls뗄k_KWbxf}pt+_ *7&t>R]AV$3W(;G3OUqC‘߈K/KmR 4ܑ >JSƈ'DMnnL#ö(:r g^t' I.c<}D`>ԫhXcL`8RX*_"v  oÛGx*CQ_78PUe<BoxnOFΈ^Zd#/1:MESo(8K6VC({ )) W? غS/bTֹrD.F@}Wzs)EۙM B; qЋcEҘ-k]l!6;Q?iӞmk[* ql\|IA@kԕ5>CA^.SΪJ+_wLm$ lZFN S0]6tǑAE2DC5_)[ /hOɿ j'm!UMp .$wCw4gs$ЕyOH>Bz-p(*e CԽa?ba b5 ͺUvFIVF>\N:^%#-pU0hIRR!ƅQy)eV 5/2wbo Lɮbӷ!o۹ibcӲŹs3ƂꙬmS3#HUtI~"zF"\VxmB4_)1i^KOu> |1SA[GYh“)1$ZO:eIES2͆7ܘ?,ʟ'.:CƾݫOF_˭p 8lhw~>Sז$ !'ZW&@$$. ɇ`d8&ʡ =`Rx64O5}Z&Yhҟ F4e]f'3R:/%gh) 8ևN uX]G3āA(;mOu:6B/ GsX4:JGҏCdBsU&Y>)iw6pտF999[ρU{g扡cjPDG9 *҄%upk6\`{yO%^ufAij5mkM G032f"1i$`~ȯ 7YzY(p@)4;vgU˺ѠXcNwYq}H)mxZWIi'u?B`*Hӹ+$@?RV 3)8 `{ IFفG #U&(&¹4đ5G?|$+Fљl3w5!H55*:g_4b )j33;CُDm2BW)OhfLx#0埢MAiET78j|{x͵ZoƼyx1Jڋ\k}Hv8Wĭ\?xỸe+O hZNLAD+VV n׆{o@#xbG р R<Нk @u'(/_jl9.U\lq5Avl'B,P4adY;┱Zzǒ8F(: m-H \ZURbNS@" 0AIlU2z$NIeǴ}ld^sԼ#88&X llo)l:#8 \2u#\ *4{GT/*n(8dD| QЮ^%]0)4^)t<)AH0:K 7MJ>-)/kO8~p˱26!fƭ ;nl )Ȕ5ASLYe"|SX rZ-VY)n['xUC>l#jr먚y͖g yu? u4BS*2c)l . {3 0),Kl&x'i8>&|3`X k* TFM K%7qHa*:fXyFiު?MWj>7S@*4Clfbዀ&-*fmCUWd$ ħw| %. "qP|blJ9I]4 /Y QnW70y4<z<^?s2ra1DНRIɬ}Ĉ=lyӊko%Xd{[fۭ|Ψ0`٠O𲒕84}͜'?",tu13*3zʅ&N㣹~ rz?y8)Yx+,BPWCDXhxxfEtCW7g꤇yo".2 78rv<!Y9]xՉ @ׁ7`wFõ _p(åʤ|덩g_GO%DXsmq٠'\9ZQwS"飼 縔,/1R+KQtg6Z01+(ZMަO6x*O.<2&jr}{(Y)$,FQߩ#bW{[@+7s^V}HfZӮۏ :[(’uqϟ/MWO+ pE&HA4* lҶ-$x4bpO^)4Zl0Rg]bpRCIvSaUhj0XzF/7T 堮urd WˠйϽ&5[џ&s-{1a^׍~ڗc6d:R_e[BkwJL`ȁ&:&cxOAf[v!lK7.]Xht\uqߔ0w:'r l7Dذ'E#?xc7Z&}nLlQ[)L)*L ]ٞqq|[m̅j~m&iQS7O pYe K ?Ա*zIyQ05]Ӝ ?Q-w}˷@c>@_gő?8q[xOl.guP&џ*rjb~1q;e#[̣LUb>+E6l2 95EycwVz/lD1" Vg5&MB|Tou=]U"yTdc3[MrD֬!jB; -o*H E;QGP6'F ksN&yx,UD֨R a#~獈Ӟ e~$G3:ܑy~F[쌽 4 Z*_@[q$>r v yZ53? Knp.$騭zϘk)2e`*K"ZR6&oɞ*QԖn谚FQG ffk|Pog8=dIS&$X:xR#1F,yױ7C8CzЕYnq>)FwFJLk] ?Gヤ[#v z]g""6~)syDlѼ{p8 ^FQGap/k Rf!& i*{5E52daZ&!;ފh2kV K 5#=Oa zN_/ŤIB0 M$=H ,$&e=LW^?%;?Пj]̒qv-շԑ]0]͹r'~Ni"`.VoaFJeyP M1BߍXAe @}'\ajdU*NZ'LIžA' |IVCVv Q-{N<ݼU }KTzgC0zd{HJ. F/ [3֜Nd>byiΠݔP]ط(, 񩙥Mʖ_cͧ [xc^șX$o{.L Tm@2̈́ImwY:c33W5ݨWhp@hEnw*|:e50ƖyZ{;|7uhj0VIY~L8l3%\o_C/w/,kvUeY+]--`O5?)H#Y}L+NȘZ[&)} b0tC pIU&B_X` VNBI>:w9l4Sx3C3mX K]yb^ 8@좸~W_Y4ͻ`gּUZ0y: j$" euy ynK''8];5aqyK +acfá^iIp\..ReX8˶z F ۑɌ·MZ r s,5EW"+ N:A\u^ +p bÿ/!T;D7/TVhBƋq~~=g޷JGQyɾz|E)4s]u][ѧTp3.)w+S?"H$,^&ڮIɪY`K*p$KB"jʾFGRpp1fk=ʤ$g7X5sc,W~5Uc ;; &bfWI ?cgakqqJ0HT RHPة3\=yG4.U c>v-䬵̞DĕXcˬ]SRr?L5/XsrDq[˰3MZDՅHmV*]j<+*d%js=Ao9nhy}ĉuk,<9HgЕ΅`% ƵҌ, f6!gg)HEBDƅuk1Y?ZָěތCVu$(8f=+6y5'NzFU"VCuf):)/h݅?9S2bƉf%a7KCOs@$ }{ !1/OqShWn| !5;qOsPu#dP}p@=X08~tz(`I=|Rw~Q\<1l'XDSFATѪ"m>r+9`LӜWzpJ#WhӴ*t$HrXh0+7¥`46׿~ F@} Gۍq 9.EZu0^\^t z`+mEDşv}Љnufjy?q<(U>Ue Wi\=}"%ʞ/>xtLvwa64NOH0$S=g?k/t&zK:+%ҳ}n WP wNRVmeyxh<#' j9X^uu/d*2HVez.} ַ`#+oϣKS\hI1-j' ˇu$F|s"&7˿6oHyEĹ[Fj .j:?VεE4KjrD=tn MyB!7s^ײ]У&ݦ2^o1;.B ,!PtJ[:r  ?1ķƥ[VU-P9-V{"ȡTs ?DWrk26V0-D&"R(W7OW& O7';ʠEm ^4ɶoqlZGmꖦs]\ O,sJy&JDwU,0}--9$Xgݟ[)TMh '$Mo~8ٴ'KQ{VlEm-\oG9dUq U.vDr"{V8d Vt,aQm2n$4/ P1wAw޽W)zY߮$Z%5CML8P?$ 0A$ P?n u-fs}.(b# $M`4I(HLga:R񞭼iFI֓r.iOU+J%,EKg#z'*ql&`KqR@2d)ax$ dG3-ag\00Ifk!.^NFđ&Q^ ^j,gHʵ-Qz$WDD ^`c5S5EhfAKx0p\ *7'Mvٔvhhh@:2geeNtuTށhBBK%hgO󨾱ܗB"ې[*vx1( ͼQK@lYBe-O1Hs7ढ'uTf^5hS56Ifw8] Z_Iw kHvp"B=pAK0hEN%uLuٔnVĦ8k,aWxzGX yir =#ܪ窒xgTȧnʹQq]G =E?L gs@YoaG\dk*b?ڝTcTy-QD~;&H[fVuѸ`IL([)FcR_хh!, qc@nO&oL n͕}w  .b\ ]ӛ=uy755gZXP/ڡ) ϯ̖a l>V 9ҹLO{}:$HƄ'0ӑxh};tO?Ҍi|_ʘ7)@ӫ?IjʟF{ ԡ;]IC35'()?RP63M Lԡnt SX=8uƕNEIuTO]R@b0DƉF`kd?aHSCCCSfVٰ϶LGYt.ƞcER_ 8[y_rUPJ@Ϲ֨1Y&>ŊNqjoCHk=TcZK3 <W| ?ѱPk(uPP:VY貹`Iт";t WpR[y;q1H)v324M,. ^%g482wI,}kLG d]X9fײ&FokOuՉY372d,޻0ղ(}, ښnF1Vff\ˀB.~ &Eojq"at6I75QPZ 'Z$9zF?ǧ%}Ok Aks% ,t ưVҴA|qR49ĤFu3d{|_jc+"HUhFPe?'m3" {ݿS֡[]ƀ~sڤjv@_ ᲨrդspDA|屪"IZ)dA%Ht̉LG1&g3~ GX1l [={Z"k\)vx+d[`ꡐܼ6͎ DJ)2gD~>)uFc^33<5ÜV|#`KQfU' h._}qp}eЅ}AmO2/iTzCJ$3ݶPgUə?z#·n | ,S8AmDi@q*:`%cDY☋y"9P/)@liL <3 *5%AuҠT퓹0gP2~,4~ XXjTw-ަO=|/o4ϭ\׏L'v9a]ꇯ>0CjvJdN~ ! hN] ;4lѺN[wTQT3K)Z_e+v3n?hdWcبPSWZ㱡 r.[ C(Ռ2;y#f muZkIP+5Vu+Fy!Ek[:`onT 0/N"BX4XJbi㻚=)}6ʃV}RJzP; t'zgV \ Pڠ^5E/ݻK3!Gҷ|bBpS(ki>zT!'9]t'+ۗ#V{tS]T< !UJ[Fz+,+Kj @䪭vu>´8|jܗ1K06KÐL񑪚TY<>Abɍ9CG` Uتj BOh"3'^^XYfkLoNLPslOBHA$j rO*J]>xTY/@ 4Z0RI$M!e$Hq~r*5w~BhEQ4)h2$w8#1z.-%:+kC!O`.>zGR,6\$쥹?,fhޝX'ZdY:p)ZJ\ȟc nMH|%v4_La(ڞOИ! fJ#Q>, |oY4^S$bq; { ɖY *K$(UAP9+ڑ|fXRMk:p$P-v C 6nDCq+9201IaȖTܢV> cd\Wf㨻:R(J"a%z#F2_+6(E /vlF`eՆ^-]5 >w %v{K%`қ ) Z06(ekG1*c|p05o?[ Y^叧hjFnbV'kX@;1m&冕4=a.>2Csԑk)΄c$]`rwDtyR|!90N&M8$|E`` MKE^<3,G La7̠G#q~8z: ŔOS\jJ,d=/pRGXYv?yՒ^č!E5L܅0Oܱ+yճ~CG~yKY5ܷ "p;ԇu00=Ϸ˷žƞUIQbvv Tpt}^JI{KtO 57Ib 紐4h#NYVq4 q`X^)X˜nqnY4x.U8]ģ\%}QȩMLXXʨ ./$S0mGd. wy*j-583pJ?D0EFqy>[>;d^Ffh` J4w[<6#oZn *b؍[6CD~cfaVwJ 4>8; u.7ef zɓ/]*cj o"HO`עx3yc@ݮzıv۳S І}iODpضm+-$b,KP^eSAcw2SuЌIXl iP|tC@BGJgCڟVSoâQ Y݅>H2D^%Z쁚bv/z>|^*D=uͻv 4>ocWss0{Uư>&Q{h5dlI2]O6_#пHc]ȯFBe2}?aoDre|P#~M {c`<+˶ /5(sĎ;XYk?-TJCQw*r[C]1)QK/1J7M58ҖY/e\9a$۝MP?%&$ z΍"#fDie3A j4QՎoEա> YRvEnpE֔ఘ1HS|F`\ `,t^O[fgI^دCN!\|99Rҷޞ#Nhb00Έ˓ +c]u}Zo6m^x0$Yxcv45%G6idop6WC^hY(᭕F;>suaXwMwoLD 3t>8{$# |aZLD:jwͳF62=|G?Qu2 a8O.m71{#Z&;>\˿Oj\l|yra+[l H )FiFv[zt + M,E_N)UO8g[nYAf-dHypW^5 #RoxM(VjL>Ko _pGorx%;_΂fz`_#I;V\k*NĶLwmX`= 9ZQ6,|$TKKoDꔫUn0LrcUbԙ<7Z H Viۇ_Dtc>:GdU\82;; `c~xjeHTM=&3V皝"A/9w))^Hp]ko 9`+@{"S.Ctypgy#i-Ós̺+CJN;v8 c)r-=Eն\;cdg]H,ZLwT;dag^[7ARt_KV$3f({\B L2o9_Wle= 0x%r$ 0BQžQ-QCP1.& ,9[6H;<"5)?|HKsUqOAMAo*Azuq 2npXwhq tHm, EmrwG gײ[ -<؍JAӖW"DfZ;_B=^չ^Raccs6 4U1ц4:=%67vjظh Qӌp<~?[Hazopqe'p3 ӷ^ˎ,S}:+="+[9Һ`O%DE/Þ꧓ؠz 9=[.zC9 NX۫N'\2 +3w^Ȕʄ].WĦgi/uP_w,5D#[!ɶDw]h"ВE&jrH[PIid\xHp}C4  rzwݩ8b)gӱ`" )]>`vX`ub8?5E0hHwF2G'h 3q@mkݔJ'Ah:;Ƌn[CuG^uE3gv }EԃUգPaX4l` Ywאgn$EI.ywc͵DZ",&,n&r cX6ۑ7>2+fwDܖt۔"\(YD9=J91qgXh /t#!L_ڨ9v4!{WE0}h1qW/~hk)k!/ۺWGV*S܉^m*PND)^ Nlr~SR,4Z@:GG^8trs^\E`4 .gK`4v(4n<է]_Jџm?@j7$~yO*gjym6'u/ ,0̧ ;5D6svUR#[% eH蒌p9 CWmH fϘ䪫Cɪ׈,8;q +6"*;$L<a~yTгaّQ+0cK鰴t.T?~Nc [24tnzߓu,}ץB9p$MszvBTGFȯu5)q)t%N-Y0!Re,o?/LI3'n4Jzƍ sV #O5܁΂"CC}pWu.ʵC߄LZB^!9M[96 t.`Wxð.# F-xH+Gdd^՞wDho]JVC#nnE(k,V,2ENsvZcتhhR֓ [@5F便/ART\)PUזl"#ޛ/ |ɜÆ?2_&Akuhi>aNM&,T4yцB`2{i XKȜ )@]>7S.熤~"6hgjXY\y& 2 ESWf؅çˀYpt4J!*-NuA:ls媸KV{'A_tNge϶m}VzG\p[~^'g1#l NӊZb M5ܽ[/ #M|+49C #n]Y(U!hJ1淾:ߜl"wD_z6VRjgh  ;Ȣ>8E:w$NP317mqb#-m'Ȑ&c4cV@vXWmEmDq܄;)~Bb'}$vx8n^Z`pOfĒQU;גjg'MIC\{?&`ziv"ݰrpzqBw%b+F鉵CtbUJ>ȃEv⌨B>gg3{ 41XLAp(Q O03P)Dg=QZkԔimOgNхA$rqqSITjQvoxs{UoqDk؆G=@2v/IdKOԗwAEZ; Kp{{Cut0]2d͋5+.;VQ :ܫŖJi_^6xJ+BrVڝ+XYqhb6.No=AM26$XP /TP+X+~BDs9|J9.m{+lGC^X"I*NW9chRӐ+`5${6sLӨ|X(ѬVt.WlhR*5a5!)zE8̸|SrcU~2>CJDcMwQCB=JH]aќO, 9V1nUuՈp?#m~l(٭$b' Sj>X7AfQ}hz]:h9 4j@fY+O)ʽ]r}%-#UJ z+`s]"ч(X[ipt; wS[ڄ)e\zOQβ8 K ϝn`Zs&`7?OrHٷh=ZqFKפu qc͆-ԟ97UKUCMmZȷpPDʿh +#-qF9LyH]8TR$P@gΖ'<PyۣWҵ\LCaZna ,DĬԌEXX >P{ѠW?y,mgXGe@on# ,u[@q"0m:j .aaMY&.:.39 .|ӥ#=Os(p[C}zͯggjH\C@WH$kAћf]:ZH#fy>Yކa$9aSn# 6`~[$,aM\!` l?CPȄIWw˽|-lJ @q-P𢚚n'ytV?<$DO`_v^Dܗ/!$iW>uR1iI'%n#W>˜_^3oIF4iφn:,5֚6>H&h6z.ls.G`i"ZGh 99]A {4H3vgٹP~*D%:8S! ,Eic6,P6simz6c"8F 4wWڇ(TflW UyQ/Vz]m";U^t:^`XxNjmw.k+&G^k>Y𥚂;CgD4_9>Q{ط^{YuG]{(`M¹ߋ ^_v+2`gaj64U#' %hChu q(\%m64>1b4裯m2 j |W68)Gwzÿѡ`˕ 7Ezuګف wbƝR9i^1F-3)uާux=UI^ 5FwM^ax f"F?I.v(P,\(D,B|ۑn%uy^j ͨE2iZpp}ZF"r m-SG nǺhUE 63h_-MYH(Otof1X'O#3rU|O+Hw)pV6eϝvWǩq(|8j:H*8I$wC=VyZt_T 7~+\ZM##&yLֶ,djo[ H,x2/k4̖<㐱۸ .u LKBOWb]=:ǐ=w_9dXͦ[s$ ƏJڈHbzrpoj[6Ɓ~G tF_mhd \w*}>-ͱ8Ʉ7|4=B7ZJ?}^9'"pWiTy6ݿ } Id6/ $ᔽ5:Px,2Ds9z2(,9#Q0/̯C-fH"} t@dӁg澊Y6^ b}ӭV^.٘D{XI2Ѱ8YUNnwlEIw+^bx6'x=igG` 1D/PTV}h\h,5+1,;aʒN42bVjJ+C"1 Z0{灃LSԇ nX JstcZhN{[&uU8v?3vϟ _Z,|6"tP&k@w (j bB394Eµ} B ]!JEa|}؃F5>`֌f2+mD1u) bʣ2 Ͱ x " XQ}{]$pz IP-5#?>{TH^\3-#X>Qd1Q:z I#zޖx%Y m'9p8'kAX]if .<QCŌSZ1|Kw ! R=FUB=SʰQ߁j ^t3@@t2rho2fϢ+:AA/)@nWƴ+=Vz7ޮSoi75bZF-Ӟ\mUrvδ6bwHX%HO3=i.mKJ9ENwG*mc $ rg|@(L:pTlpe)qLkّUyY-7nӌg eEPՂ"^u@1ޭ9>0@lB387,O:W"f`|xdw2Y=qpaS+wDݺuk̫)ү`#T9sHXLJ=8eȎfAJ3N+D0N\b-`l]v@cjh-Bͤ {Zš-G 5 >6k Pq  tם@$PYVу"᭍Q3; KU 1[NDw0%EVHB0Yd+$%"~d7 ȮO.b\l &+N!H~ +fpv.0J\7*cJ21[f.g K8gID rVq[aq_$>v0wު{sJIȔPEnÞ-2 6*A?/I>ohc&QeJR0[$H," Xh3 nu0Q[019U I.Q{ dQ*kڇdK@ s/2ךZ!j ݓc4f􄳶:|m7mUaT-^g_o YȰ4䣿oMko;9I=6QϢ 󀼾NUO1&aT4qHad4·DkkϾQV>;t(Yie {z'l*ZӨ$190!ڤ)0i=5:, CiPn(*%R;z3߂B( Q oC[ 񻰮EZ D5,-]ᏟOZ`*8,fM+ϖ f_"sJ5AQz/>יz@euP_lqD@"Ɯ싵&QB  l+fCȲ֙Gu~F65r$du&{=n_ *?d&yE1lPtԗΓrY$UQlr1:krseu7LVFx %B;=%]eap^'7Yr  $1 x[ґELmjvG<Z|l~Bmu:&lGDD[4@8I)(c1Ѣe7cEwly#6-b:'q_0rgΔ$M5 / :\%-yV|k c@HyՑKB Dezv9VOs}庻Zr$]]Ꙏq1zy񙸄etN"Q3Ϩ(&=kVe8$ kdT9mfϩ-#Ro%3o֗|h׍d+\U@#pZIK=!R!9䟯\-=73RV kjޣscj| E;5jdI{#ZkQ G؋^-L`-_ [@K22rR$.2=BZÇ9+U(AfT 44C2*S=:R=s+Pv諨_lǝofeo@Muz}2@Sd5Ν5p;?g=Q(t}ĀSZ95_4@-J;e r)ӠFΠbTXNeSjƧZAk3]֟]+eNk NU778 a (U*)PB1vL"'f^7ZL0Y~6Fy uUUaErnwgp2dR' ~I JD,߀Τ8\kX7]d&g=UGzo6@&*NxѫOLRf%&Q0`9=TtRpq >(z fC > *s.kU-yJDUW/i[D>d0~^&[.`>9ThLbͳmH@\ܜyuq2胯> D41Su#$c|2^;n rrs/dL4SLr yQGR5~NAuʼkwX}|)<0,e=[f6 ;,͢64iE/|V&TM#C.(*5ʥfbx:L"k;z,0V頎Л N'Cn)kx3&bo|K?kߥa-_rie;I z9>p>h͕cA:Xy(k=Z_b5qS]0_Pc KF>_ղK\U7wDt:QDeYϒ gmIs4JA]bU=8"4kڪ0Tĥ󼵩0ru/Sx)iCNoyv)OnvXH/V3:Щ[G3PԠ;1{-VU͊ ڑVaM и|2džQ|)oR 6KBl- ZQqʯ#bo[F&(Z\p;B;hSOu,0i4#)vrK-}%,{ϧZn= hGR%q6u'fW՜"s"fpۑBXo[y;:u;_"(ISc ߐ uҩI[/̐iM $`3wPh)B`wLwRhDihȬi6;^jJZ|Acq.x*>Jv5?H%NE>1|k+p-a^ƚ2a|!M'QcP RS%]TVbv3t)AQE ` |CO[MݗK6de0_ KH~nI@&yaSRHYѠhdI=Qvf)G/[DM3QH~ٿb}Ippז>5w?ݙ(ʿQ!htop|d͜-aԱTaB )c@>ln飓k}ߺ:H6+o5"(_0R /g^@yPU Xa?ptZ'1~eo}mf]1 g5MR`ʈ~m.%vE[ i]b%VFT;ǁx %ig?؞Dݦ$قih֞t< 9y/}OB" \$.L5w9&=Dw~o qIhdaTd7$8Ap)`$L=ۅQ!j(nEޓ3泛:WU Bz-!pmT}HI( 9"CvR+NYL}AɦTstt%6Ff'L$I"Ak]2@vS! rEw'P0q 1?dM *!E7AG½̡g2"/2J_[KM|ij']/$^ ї5n3݀sPEdD(1GjJ ƲڗN=waoY]#ܬy1Am$A7dd_™f~"^% ;et#BrZXϤk,M ul71"c/\~?:kmW:2ab֢y Z))~ -^՚b6;GsʫΜnhʽv\8`%hVNj|7"@# 8c a }{B́=&d,b?̽ 4FLih}\R (4{sLÅ.lUvL-JP$1B{ PéurWOUvWb4 `c\8.|?S>\3jU:?:yWaY<?4)%TYUᦦ읐 QY*C>w QT`sr2A'k|XV juj^Eͻx}<;|sSzzN"cU +Q8@_P#"F`[ik+6z~Ҝ˂vؾo-ɇ)jxCB>jِ,d=bP|#1q\hZ2r0cWGc/ѽul}賅ACM-G cީa`vB\pM.ݜ;.V0ru!)..hkrوoqm)?[Tz3}h[#KThoz2Y %r'=R$&}{l=569u=Z^Xnc^ {zDن\iȽ˾֖gNM'GT8ìO:֟B$-exHоnv'&/Ǣ9 ?*Vy9O;E3APR\k>!_ %Qf~3Me# Ԕ V"<\r9IYqTb-.Ӟue :gt s0 $[j.hQ6J`/}?5lHAt|Y~;q+8]q=Ki51XYuYӮ)q5SWُ|'yK) Z-̦9Jd) i8G-n BGz 5~f*P$:1 xNKDU, *KWw7rEht o]W=v.$PS4ҀkVrL:t:젞J(V"bk~L㑆P0`:y;ěh!g8Z"̒ 79dQILU=Cȏ-xj/%5た =cR̊g$ed΀>J`BC_eL;}Åp^E8Ct0Kn9O)kTcf {*9#>lI\.41ihV#B+GV^T,3o.?0#>^jjT:\fS,ԨCJe ྗ#qqxB,ʵm2b4gҜt)'_<[d.a=%s◡<i6DYCdmg|`2GkyAsds(#jv#+Q#9^8R1#QBxI9joDXsŕOos`-7u[b>4NxZo5!4^Ÿ0#2)(3S`!Awsy,xs<7aNcIjLϠ^k{ pWi qE>%=jV&|y=U5phl{sQz1$TS Yѩj_ߨ$uyPpKY1ƀ(x6lUsұ QmR(>DCD$aJKva7panRņ>ܓPJr 9b+~b7\vÏIsM;8k:rRNZ6XcExPN'#0Q c,LmܣE u,%ͱxM.^,>f,6J>Q䄽yG": *U8tN㊍\pO;0;泄H7hJԌk9)~شc;pϝnyCJ~ۺr1 `ELQngWY[ís)eI}3ca HyԨѣ%L<92+.]gKsP_YLM mTa )^s}E=`SLx. vyN}m?38T#saT  M.$d\cv ȣc{86a0f1# 8k2SMĉb{ÉYmqu8&M&H!U K94/ri[p4zl݇à Jw}=+&w1za+1 :_X66zUNӴ(㼫y8 &  )0Izܛ;$eAG'S5Oi;rDS]BR g߇}7e@ bdONV*\m,zK1CWD_׊?Lߵ@O ~KA#_0u")5fRtbovsJgb o-Gzv/P#8;9 Q0  li1)aU5^ N lQX} &*UjmDfg><%f,yJƣDV@&SǎAFQ^] *St0um¸AD5$1h\Qq3y7# x1'C6˃1!HJWu,HY(| <1`tu)(GN'@dR :M[gBr0'abMB;lz˟O}T{*elu|xA8!waAtڡ p)Jk, N 3/'SKX˹*?BCĸ DZ"ihHܪsОH }g\&)мfVǰ#lPyͱa-G$cx1Jz5y,f}W'CեV%0abz\z]Q{dퟍ~QqvM,ؤO?gBPbY%'mQgQ"lyYeߟ[!zm]JݬeN$wEj|qdҏ#pl.㉑.BRpb'9w%wi3澂}Pu2tiɾE?N’W.V"1ܫ'b׊zL(UOФ6Z|nX&C{X7Gtip]I9?ܩLkئ_C8m%Mp&%{ٙIĿ{x,sHX,a %[(`-~.8gͱ8r%B0,߯u!SW2&G"#Λ.#1HMru1҆NH0Xm5T(Y=8unLQ) L8ҍ5FgU:[e6_?-wF]=ka(nuUBκ}?S M@*8ߙTT.䒬iǶ|ӱn_il)؛i-.qʇz.oהbŎ,t^'9Oī`ƺQAAMmO?#iȫ A,W{ %a&^\Uk܍o/5J}ܤTEfVkWd Sxa.ųibBCs Pk>u72e Ի#K_>rgcΦbY }xFat;:8Nxm)?A / "1?L<^z}UעzN&$GF,-巁` t#ַK`A7j&%:l#CNnD]V3ݭ*,d30<~.~ouI0EͼOdu}V~QJ<:?&+)]ĺ ?6b%Cr5ڏO2`! +l7enEB-~ Hb\-Nol_y0+ /4,~N[~Z|uI1z_xvqB#)O$:35inEFwb4bwh:}9=edg8daJT5ahWKKUoZ>3N35uH~*=Xu6{O \ P!8ٛOsuoSީ8!-X#ݱ ы*Phˬأ tKdUB7 `ҦNN ;4~dli(zjCs&H3,{|Ê/vbOٷZ%d}C_\]L{3#ఃG'[V k;Èl}8* V^#s:R+6?\JFzUgj. 'aju{tn, ^رb<}Uԗ6jv+j=5wXd߆53is./߮2P"DX 9WFx^D"ho>juw>m[y! b1!v G]Av?m4Dmlaoٱ5aq|؉۩gy%tpTr*jI^P_ݺib%&BBDY'U6âBZ 貟n#$zރw|C5QR0×qGa]Ŋ.~` T' 0DKk5L7=8b[mtاjo2֧CcݿqBz|P:G7?H-'IX}R"\k]xcNj"*b#^jɑʏs 9fZMmap^#m w f80VͿ>/-mq.Cm'J;q~/Lls4p @t3ntͻ=B2Pt@)yV,/`G2tK In>ԁ (M˨|*(ң_?l83؂& \py@cQR@󪊠`wZ=Zk1ۘdF͛3*?6,rfΛ&eo\_f?٩TԞ,moa,G".">)j5c5Ng-`;ZIӟҪ9b`+V0nWv.V g |(Y!Qe>O|$I5h5)eʑ| Zt|encaY `>"ǜTpiԫX"I38 N C ^2njm!?jy=K*2yĹn$ȉЪ&]_d+7oLzA!/i7x,{P*QD R$!bM'o:rvP24"V^6E5'/|{TGbA O VFʦ9dhg^Nf78x)?=~ N  9>bE{rϚ[DR%KEt58J^ .||پjwxʛe lH "=ʶ}cS):|* &%\MN¸:_GYp8kШf#q.)\S vyHm0yR!}h[e8TRnPI;{|V)%fc1W$r|]W߬F XQٸ}Xkm7}j /|;_7D/v$ic_σ"HIu#\B-:Yoֻp.'TX+ֵg7xxoo*ӠK =PxNp^,@?vA"[SmKm ו!|o[Mn{Q]6|@Cp[n hnУ5vy!"|NӐ/Ci.~߉sXtH_H&ı-_ްY!D4O 3Q\erTq^ޗl ܎ 5%gba[8I\n_n~ A-W<'Ac ,_ :KyC Gh,Tc:[7([BWКqZbO&Gm?[RdB\@ZrkE)-$T۫./EK)c 4$KT #y|Fx2:ʼn|˹t>X"s3&02E#DuĈ1Ck )}iRePYJNn*? V^~:Q+U:Z6z M?0q3$Г,o&{Ė_m|+d8\dNfGB+ga}{9||c%ʲiBwexKu<$Y㱕3g{6 bSf۹N{fPy*>A"cZTDh1S qXR+1jE4=DijTGS?!۰3g;W*0c/+`t 9﫰pB HwYONNtovr^~{f* 4kM1e!X10HAzG&^~0I.⹫DvbalǍ1GcAGz<&zRvϴ*:&`o]/qƁrˌN oT.4ݽH®S$lBBʏ`Qt>z9}}S&cJ]iPIDw} 9:9kF{uhy[rUohgL pЀevҳDZjbn/rkAƈӢ|v @6NRGͫ ZeNPEFm߃NtLny `D(p%tK[Gޛ$wDBa %41jKYkV[ lo`)HM6vӂHJ,Vc}9z t:^=j0b$]L.F5yaqpykXfZX>C++XS6T/o6eyapd-;*F|S*_\)5,Q c=U-,jkXK&]SVMw`\0C& @W^dq~A(WsUJ7P܋/|֪;˲oXa6UT⺝%6> : _sQMG?sN#XqmTxti >oM[đYwR,;$tB::} kSsaۨEȱa~jʃe0hxP*r#%=gYE O<:йPmrxGjվZ+)TVJy$L[!+&]+efa;ïVF~B?Az u-1?j@)]\]=O\e ?a?5V4{o7d;Q1]ɋ l8w$<1rhxv8:(ѕV8A6Ȉ> `2sp)LU*F.Z,z3K@/xݩW(&ەFu) D,.T_5Zz? +5ļY6n;{Z e*w}}?o*}atY{} ^{-~(D |',"[C&C07B [BNJ.uGJ:>9W ?"[Md- /up 'rg@a *W@RݗҍM8 YJ\3.ZN(vVHǡ;޶Lp=XQc?*RB^7 !g yD2Xgb[omпԺ߾p* ,2+ve}J觌KM}MlīiJClk']fJ9ng@M!a VSD i.$ɞf~Qoa:noNÆ7":~QHk=",$4%dցk0 SmE^GO$@X`sEI2wR@h(=o}rDΟC}=;w^>.+l}":60ؑ^6(˯NXj_P!H3B?Kiǃ%<1RT)u!B]$;;ҀAjL7Hz{%T40 E&9NӪ74:]%]\BСU6:PK!0`&kO?9FEN:#D%YY~i'{'`D&fY% !ә.pޝ# (3[¹g[BV-KFr`l;ggAPVaIyzcUj?xkIIhwqr޼ ҤZ2mϼckdzz[ՉL Qz^@e^o-7MSĆƿwua9kIԶݔ>P R]rDYt>9Ѱ1tozJwp'4iS!I>`eoő#ڢF{e@_taE?n)ʦ|ȳSm#uOոz]DH^OQzp$\pVMG[]kFww`0=4XqL>.ciO&Vli5S.<:cʼ}4m4P,w))#DjY\XVMFB4k~S;ìg5\04JBJ{N>-Uvq٤k4 9?4bFn& o P2ԯ `3y]QhL7Ʒ(F!>' qv! pMwZnoWkjlw9i(Drd[K/Lj{D@,y}*Qq`䔝DK 7M4 e7l]ud2ߩ.afGWVb=p{ϝc_3zӐ}?TO mg V_BJʽa!]쀗# G>)08Ȉ.".`ne3:|d $dOw l1v9Hq^Oaf h'Vb[~Y4<"I _E u7UD^+<>!zЦ /fF ­Gx&a-^~-Gf{Ǻ&92_:޻vL(9@mz9\#HfM)_9S qB%uB?;QG0>H}gxfXj+#8~lQX$ZhQp zkS.*&9iqJoA'1VrpvϨr%K*,NsYJXQR3Q/*%Rư֯@GW~rr}w@Abs  :y Iu\HfAl׃O.'SY TFx@0p̻9~VQYؽ#%Y=2PO5B_lm1BōOskz,2ğ_-.ޤ8{mV|~%b˘R@AE{=X?DjAA\cYIv?n{a Vېge평"OBAK9kYlؐP|[ -[c#>KC?z8bh=#g9h+~ýc=nK)ԛk$TZIu` +i2qXB ЅaUshE:PSTyT?(":}؎´ *၁P BG~=u-" 0!dhd a'Rk.zm'8~TbHcT,2. rA7/!\{^dܔE\~ǖcHPVХx:Pvh.,{\SKWS~s搫>w>1c9;+t0 {*'۟Z4Y/*|0wWEā_?++;[6PcU40*:| U` g$aֵR܈5++C攁} y"Ď$ZDy28׎v @N *li!0@up\ \qᐁoԾhǥI+nK Vٴ lGW * *)橠]ܒi)zRV1ظ)d&i]O۽YgRgDV1bL'~Ÿ_>Z\dC|NVdkՐ;HfQ=ZNX d?hq@,~qEm-\cSi5C[ٴ)ΩMLF#I>VQ<\NAq۪!G8P-(W5Nc ì2lGa*qM +hS-Ncр.KgVݿ2䭻i[;;zRtmjdPxJzx:F!?C` Fʠ y=ALw߂ne,.O 3=~fK@Ah(p)x\IO:qAsk+ڄ&J5KJ3ıkjpux6̾}eca ~ ߄ێ"kΩ695UDy\X >ZUG(ܵiX`0PS~ޢ7>eؖEǎSqɪQya뷚4c\[O 8bUj@]dʹƵZHJR\M@ (ki7͌u E-Qhh4选5&vIro3$'O`y܀ŻթjFlj?gTpJȚ{z111BIǺ߽dȔC!9&hƫrKcM_6t|e/V shl4n7,e_6fQRM=t"O)9ͦ:AHqX|-ԡ)y؃PB'V}@NFLfkD|^ #Oh(>Snfq$U,i00o |&`uN 2씞?r^˻KhȚ>ju2\NTkgE$ 41F@f^oQd{4X4azYZ&fQr2ڍ e&OA$)٣tkj9E=_~XМ ?Sq%/9 <K vTȥMXe#MnxYzB4M1vـB=Cw_dI F]K%@lLs8:Ir.ԚB4ܰ0)P%+>sƭүh)Ld2_vMA|vgqGE(qM>Jʯk71bI@%<5w>EIGB:2!9KºkJ/`Zh9}BS~zB[l#Uai87ݕ@)*`h6([f>s5'f}q\H%^o8V "G)]{!2+W  @ڸRܢsW K^!;$P WgJqW#TX=~@vz>:ټØ)ˈ%;Kpȫ|hD/c vO&26ϢwuFI0?Xsde6c~9ɡ@f`P^OM}P.{GͲn# L,wl=G~W'tlʒ_@79:4a4 憵hGgJv:!Β|}]lP:80m{Mj5L8@\YU9ò5wO6="YBDe:^ﮍluX`r*7 03ZrjJi'Ҋp6U>GDG)}|iޅ|kHJ˻vA'Wk\Ǧ] uiGRJCA0 JKq"V+[n!&J]Fd b3&vHsNI_7i~ W *mE mM(EѐvI% n(%ݧljTsb1Ɯ!j=Y?NBr|AOD,"D. rk{e~lkOVi9}@xep7̘9rB *πBNĎ8(4{K OYdlM^ٵ  i#0n^]M۝?P@LjFe$2`߷X'ChLǹX+KBg@Dc>Õ"jw5+H&'8o8;g=:46` }(9 iu !P.sO䳙7:EdY͐8B9*vڑS? ;R^ŎM>-ɢnvuOL~%%U>"DZ3@KbزND/0v~$NNv~_܋pƊ?&0BBwA9$x&%P5^O @9;W6*]c4`Gt G ϵN=(u֗B|ۋzI%sw4~F&T!v%\%+/Hu8VY!opsقjIIW}r!E8Z,#=1!Ζ]Iűr|a<%5]Ќ H+8 = e{ˬ-V'ZRӞ$g(l4lN<ϭ#HX[7sͽ_t 7ɼob,Ϩh΁]X58\+77qjX>qsۮ݈ targv쳦$! WF %3QJ]6oZnYEI(`f܋+IO>ژ{7gM .$UXRV02rdHN`냵bbB&ZM%2.;`2qq!c {8]ifBҙ2ϬE$!?)N wTCH>2 d'n>$S9|ؽbR0BO%gƣ]FXQGAuѵPC#s6κCqI>.C4=}{,VgRohH{5\jGreǡ]h$F$/1[(4TOVs' aITc2(zs6l1uA~e:pEnO Ҍ%00V$/#t{\% ѳYyGp9j!EkoWrOOm?>=*rU*(E*I;@B!>ar?7tӫsb^L zɣ**R^Ę1ړrۿˮ?fIJ엣A Z0Mgӏ)ؙNU!UWժHm,38)*v(}a%sM$zk yx;I;}U%-IOru4b^TFq&TjL>lűp\(C<bҤ}R} gg{t;Z׎tB:ROƑER:A KIeQCj"]vE/x٢vzN.j[gc` ":,ǞMipD˩k/ЎYL+(#f?*˲ʢ =tOr O݇2 'i/YIh rs<+a~.YhKd PX4!с_:ZG(tDkVC{U MV[Pȗ⁸tM$۟`obcg7b>s|E ٹ)|bQ?גu0{ѡohL ԋ]>ix=uUYW>._״grSܭߓ^.tQ$ )$'ѻRؔհʖWƿ;1GԴx޼m hډaہTY|·3駫=K˜<&s~WhG!/O3'E]^$-+ҌK$fr[w6L8jaTSu x2E h>"v%=b(=sl훊}1^݃HT%z>C=_ZHlfuRMW\V!<:۬^dF!nך~b\_ nFL2YP[gmOd92 }ݿx^E"zI - D\}fY@'dK^0G43LՇmx܇h1‰kQ3j,>yR ޻ݕݯmCIVC$?TUU!eWnѣI{p;\,?&:P/ va`m.'VHTuY RӁ= 0*fu5HFR̋.E0` ?j%ravMRGWhT-Clb3Z9$uz.-T,rP*pM&eY{l|No|p9KOJki/4fdlU\+ ԃ}^FύS18>'?ɁG =R` y2otG;^]'|]$in1al[n'XXaZA]-Ɋ*[lz8;)!Lf\cT]~!7E.]}Q_Stf?**(_O1^ p@p{"Pa@VoWE e9d3V#4N|"cd4ipER,ʆTV}*3e8Aa(aCނjK-5?M1ѨrQy+.q&ˬjd0ègDn`¼ҞJ* ,-j15~n{iqQYNET)],0Zpl3YOPQx**\j&.p`"uyQoW,$ UtSp]8ا}UG[Ψ,|t1="z]HŒmW\f)lՙTj1J@~Ngr:f>&~i?vܽ7ݕ&GG6j@.uqD7$=[zM&380=؎'=f33XdR菤lvWF?9덇8?w} B`& EsE#>p*Fa Yi[K}t,\z@Rc[7L46}$;~]PL1_8] Z^-iŠ4fꄺfC<̿WY HNd$3?VL1Z*򼥦ԡ嘙~W~)41yn>}ƀi29 ؖķ8>EgnrF;!>k/n4)d:y0R,Q(P>ZqRu9T3͋zubczSFYeݥ R b\J{T\D#reeS) ~kf?<>yz[V@| p)LscχW@ ƲVjഺK~ 2 ) JLg*.g[8 1G$6F]e]W pYIϸgܐ*ӂ`f0{A`VQݡ4,9GzjaYJ>vs|kt \9Wupd8_K[b~_=F#\Ӕ:څaE]6BBD ,V(T}0HU(uchxK҇n5R22`whT9pÊ%+9k=_]O ~ZG[ @a 7~ryyOVL*XZ1ȏ6`Bb ;|7r&#yU$2P:5ޓkU74`\XɃnaT;A bͰjQ#6C=]݌5e!oЧe7kS E-ݏqc#rx}|$CָB4럒ԛeDIF? ^E_Z\x(A1 Ar'iB8)%ꕗ^__B K 297 +> !f{*}qA@$E"ې*,.r!+sU-p2ʯq}L ةOIoy<̜c!ŭ ̪5m+n (OKp1AagQrHR}rAbX'>рN5Ade-Y)2(?5ǮAXiQ [ x [&4Z4AGT BwX?LudpTS7aNj]F5,,]kY*)@dN?kx:@(6{%B?He|wIK~d/VשƠ| ӳ6e!#GI˫|adp\wH%%j}pLfYs0@Ƿ> rd+o_3VG!1k*Ub˗<t %hGIOr ]⎗V+;s+R8;(B>~KĤiVG#??:/c4+srj$:m?4IZ[oIo`8l(VbV0oOb)DK=W(oƧ ;, ˶bYKFk&4@ÕY[~tH>6rK~צye}9*G^&2z9a ƪ?ѧba.Ɉ\஥z)xmzȴ$NT| $abgb>qY1m\| 0=l6D2~͞vTeؼRG`o.)i$ eFq4a=Mc=֧i?w3M [W 5gSA!4zeK纪iFb䘍ˤbZpsqm:)BPx?'c/Y/bLqj\m 1Cx轿L:)#_? 58FHgɑ:(k0n'Esg3:ŏ1 :͑H裿l:ӌPN5 bm OYUBKVEy WW0DDV7Q*LJMM;wk3k,ҿ|ӊcFÙC^% ˯Gic]% oLoކ0r]y U*KSu7eW[ZpFEXFv45{%"JD|X04/9y q%Λtxip׭Z&^4trF~6Ƙp0yi),ݾn+|QܧHO:;>ve{Bk":^b9<ʼn{s,$$-u/J$ 7=t.*^nm0Q}f)[z=j\%;w_;ت>}ܥvG 7,d 'D|i'WTNe:X@iz8I2NjN/:ϩvJ:G*ng}EBTtMj:ASB"j Pe2e<\uwH JN捖Bw(4N'8i7[bܕ<,3LR?CWg_uF[[f'ݔ M(cΌ5`qeF t`0 rPJzB]-r sZv~1Y>#S!ֿt#|K-[ <,r]"PoAѲ?;=6L9@;ܐXҀLʹu#U%=@ggxm?a9GES<`b3ARql0j4Y_yǰH#b}Y{drb׻hZ1x4.tM=y6ҝXPE]mK$>ph~w7jW˥R}Ҩ7u@gn4 xBpKXK)$Zӥh^M6Qe#Z G#k~.@#P̹#=+eK1qJ{ȾN>O о8P޺Wie'D0eIJ܂jޫ6%d<ލ\KS, )H#,6!8 _1W5 YUߑÖg0 &u4] D.R\$*2맦aQ2{N,K^XPQfL4$C/gWYp#> e3p;v#P9ɯ&|-.1Nvx1#`x+   ?= ټ%g?G~: ư\494X3[A7m9𸼲 Bҝafθ)[UsJLE4Ϋ>@dېLo|QLk,'OF)QgIŅt4d\z2f/p==Ԉ =}'u(_+[2ӊ8zhFi 솳=j'sihZHazL |5F4ea^AyKSn' [%)o S#HrXGJoX#{ӈ$`=M> g>4_@uK⾎?~XA+SecH@\0ᗛA:#yaѬNPԂ|W~[t砎_=3O#YfgіDe;4[/0Ng[LjgL+ VR0I'yf=µIoPHR'Ȃ*U3RB\>Lf`3̗'&jXݴ(S t FӄMe4Y({qEY8H] 1л_;KnfSg:\nC4?~O OR;",l@=>Y߳j.ǺX .#nv:\;LĊMCA U|s/IןS^cpQmÖ BW$472FXZO&Fmmt)OM}Ї{90;wyƐ݋j خKo||5|h8H{Q-ezu6x𱶈e$p>\c@lGs)iV\ d*^$ /(ګ9Gذ;J7EŽЛ5JF2=̥ߥ yɼBXRwKVhփ[5mv߄`j\ͦ=`i|Uշ v3S~ٝ(wI\PT@Q< ݵ/ohn1ng{l]M7 s[dĉ>FmH !]E q2uPAfA{袿Us}Bn롡s.kO-Wmxq\R؟ʔl(jM hw}N3a~P4ET\>SKJ'pdjsܚMuvRHhTà{1ʪY\T_xw 9!#AjEc+Фl?rc~ M+?hKJJ-$*x~wR&HcKZPzt.^-qS쭠Us_^}IuՊ&zn3u̍+g&uL/6U"imcR~*&|I vA@o3jЋ2RX.@x+y_; 7@;Len%n+wU$\s^!/DT>9Ò_혴>.xI WvF c'[kS6@dx4#BNҌ2OCha#f}9[[m+F8>7qbAƈ`? "6_7.gGED /SvX#٣7N!%/`cpi9]DS*ʗ ZiiՊa ῩYN2EkߝdW{ ie_/ {?2h[BkX_U5$^l[ϬEȷc)q߬0Vj1wI{_jG,|xR|> C$&F!Fp| /l'xY}VjSB# wf/G\2^pE: .`,bP1 ':Rn0@.YjX?6zSNm4-T8V*J\Pʝ\zX.e]S~P8lAhj[ pi.ĥ BOԽp*iv569_s鼶6O23'v@ɂZiA{ӫL/?eZ EMJg%^= fYO9E嘧:{F1iwF[ZM:^GԠ^lƪV+MyfeO̫z7RF&ꑔa ☤p(+xp5%t ҄ʧ-(]M&% Vm@*s[ٞ|4ƨCX79@07wR#KNƼKdha`yjhk &|Rݍ36rCDFüh Mq$SDٸEB,\Kq9~:ߔ'o Ɵ7"MցwxCX+h; [ CB6!7[{倿On xNlż.>ژ 2а6?ggkk!8ɪOػb\j w 5Rdy>Yz*ܣ+_PaܣmcAZ1ƒ6L120} zboخ1,HN|ky|olE}~a H.h#H-CxOlI,td~d_n]krZ Fh20o-fήVG\)|K8O*%7HܑbI>PKj彽)< ?:#ʝ\[& ?tI˟ -G΂dj'-`NDOL>-@JD!}NlΠ0TPl]SMBGlTB!w Qi"^'9{:rc_i"_ɛs\}6 ӻsJLp.,LߐXXy**ȡѻ=}P%bȊ{Mnȸiy U)"K҇ OU1Hㅦ-3GXOqY>"pDYա.%;gix:${i|W9dz:QY$O\3At*=G6WldVA`Y~E7{UV'S䱵I=HðM+098Y7@Ss[f%%Pq eb4hM~@K* 9dxmR 9l*_1KLYsva&fկ q(2[ð)QcS8{:D}F J+$NʓZ [d,Qo'H:zbۈ6+hH#i @rۛW>2Lڛ= "sKHR3"UT{6/`Jm%7Һ%񿷎 }C:O3Q%"(f*uVDKc9=<8$Q nh'9cSof&tcnYHD%p#UM~fם?(IOGul2ꢚDOE |,}L)A,iбD]g[qix~a5J#}m$a_3)'܅l sK$zͶȅu1mr*o'd,eXsjDf3cq\(+k+$slS,3Nk߁_eSBvj|b`6!3Mt||IB? մV߻dz$Q7DVҮ*57҇{2){UX,~_l$_В:{ 4Xa4/ @i1ITs*w+$Tk%?܀Zy[v qc~47_ړYGkffa?&y`.gbY(AQPcpqY}=yluU;ytUгXyQV"):\oL[3YEa]b$L;V:h"zx8%F;.rԳ4Z)Me;&lN0qc7F` 겝.6fY9 DlA.MtѢ~L&K*Ea"WsCYpS`+Ovo #=Xr YnC%ވw.57Fj<[-/E8_VU@ǎєßܖ$% PtHR2*K7@@K&ˋk^1!wxJa_5EeR u3-K^ՙP\]j9QW kK9ٌ e`Z Ybhwg #K߹LͻV͖2Lg,K-i"gƺUuAzzC;V =I[A%<,K&Apt=R)?EBoMi08{UDn61&E#Je"y>=~_DT9rc\-**F9Ԛ2zjG<~>ȦZSV,'0 հ֊$d4SlkWznb.H Wxߋa-zQ׏~VoJյnz:sSG&q4hY,S:0NdїNmYdowJ-MV8o]I#9G,@dְ<#\ϛJ`E5o"2]-OfuJhJea6"JMayb۴>t}VO mEw=>h/*r#Jwݚ}9taκXAr(NJ1~{-fϏ~?F, %nb8~̆} e'wT[Ic]z`QN<=S,LƯءƔU)c,>OD&񒜳or`8M>.ǐ-R"Q\MYks*kL؂;à#Z5 {J=u9'uw.4u6&OP~PRᔦj͈>n[{xɨrMZ!<+]g (#lTڀ$""-sJepJ7o 5eZ/xLFEC5]ſ0@rD9=P1џ! 3yE[ֵy0F^b^-f9'eT{]:1q&>cy-/ߋaB}!]d9.#$D8S.0E7s弌Ǧ%K6;bm9HyrVn\<0BށFx2 uSܕ% $ ),Miwsagmަym(c6駍g'ʲso@Sl>l_ QL` +oaEo ̤S=b<9-{ õh1 SB' $P7'-L|M/ޭ~!2~ M_U #^ =lxJ /K򴣈jTqٽ(ϩY ?EէbH:GrԾZ˒@IªlPYCcR1j΋< .JFYCas6sa)YNQY@}Mx(# 1r,^ރ&2s;b4 x0Jb1 G%zffj9dx]D Q<@&Ea::/./xU2o93NTCE6?T{N& ǾUcxtnR4a,{{SNFOKty1G5M|Yf7xݪåPAV`  ",NDi[Yևzo֤蹱-}7e0jtTkoފh1_d"؆GJu8gq霌 {+EL}Z&UUfΉT́R-*z ՟ڢ'=i.6ltGSL,~&l ̠|32M +ˤ $4-i]2Ls|VK`S+")o"\ͬw?=ԫ=xقVj*S&eR̅`@gE7YBxk;QF?&^ pu[.{@^#tT.7/h4X:O~c[#w.EjV.µ}#oT>SaHN݅MJ:O.38dc!mGfΰ=QCL>C+z}sE8겪Ѽ}`ִ֦ܺU7D<5d0$vD]է;咖Sq*;VN32'朊)d ĵv_c8}=N*B]gfN]ɟ'd)e$i*DYHR3C*, zPCEQtuh:_6; ?J![xfBf>P(̣P?Nd  r豈TPʝ.Q⒚kjuhG1m n%6-=[RWta3b"*L6 Գ O<|ʙMpņwzIKbhjQ7saԭJ>`uXR}&/: :# L 5Ο% TCzбѥ>86l̪gσ/}>-x8ZoOsh 'T`Q}g,3GclQ>Ud^ 7fvʕ>=mmnS+М.% 5d ؄b*(4(4>˕6|4!p0uaX*N)h- 3d~T!OhZSXMlL$ਜ਼AʮKnT'}vAkir 2&C*P@R-Ӻq}ѳ-tKn64I~dNGcif/ɝΠ=hy˕p Y5兎V<_枖9WUڮq\ZU3з`6B=bqk_:RP{9ciֽcF@ĕ~u6,ıf 5VR$)-O]8h-S3œafĖsz]=5P5c۟$91?FnVk"٨O3<:"?LlY1L,SYգ%p^ ~wkAΨ8X{Yfap]ԓ]3d1G4y8Өj@xZ\뎊@bҦCL^s}xb~[8Xul%``N\̽87%,wH=`KC4h; @zQ) 'F<(waTi!O,tL&5Q3K A 8'yc !)5J7gw[lo=,`ڳusݤp&rU pz(~j9$?D~gF㢽{"&OrgVI'17{%!##}Fz&s%N&37 Es PT&Uv6"kZl +ܫ3mnDLF Mb*L~htTc֊WI7Yi ȃD`(YGαŽt;3$ #O?kx[?\-hKWW9O(}ryecRTj5+(\D h OklS=0x%ef~EC*&~w=1ɫu+wQcUhZL8hoEY벷rO\:yrG"H3 ʎ;C͗$~[[0VzUJ M(Ut+34-KVP "O,/@σlF&ij(zO,j@hpIjTwyivZ+\.6SVOdCӹRwJY5swYv#lWPftHr,{D/UrLUaD"P$2x E,?H:Z eTw$e졡~HPg̸fn{_2 UH\G|^mXUhPՕ`UZaH 295T-G<wI>uSR0(5zh֤QL0DxӮىXD&0:"tbPH?002hP&#V܃zK.µ _L5k pa dUbuFǮ6ǁԯ?5%Ƿ.SBTУ:.j7TxCD32ћȲf յ| e#;~<~|X)n1 ^x:+ޗMo>K09Ki 67w3ykn`DեN EeBsVpߛ'jv?%_hPUV\3iR /`Uly26[[;In^*v,*8-=VN7#e/ʏ !pzv =[.7pW:L5ᅽw id?\XO؋^Yx=r.ʔf}^{8cJ1G)%E$_٠[c򨹥Aaw=7{>Nj\Z#p:xYьP۰GaAm/cVsG#0mHIm)OҶ/ϿX{rYG;˫wꮵ'!?GH]G i?l/ 2TeDžL\b|vp~t(ۍ\-AT?@4ơ&oI~:R{IwÊ,aYa[JvzObb3rr=K9C=uU :LZwK\|\jZ71iKO@'T5z[5De++nn۟@UQ,4Ҟ?GB8OEgB(]7G112i :L ٞeJBKq^/ ~66ߠ(R尥+PEYֲ=bCp\ #3B]`'SYTm]捅E]x` Qb6JB|_Z/Vrݒ4QY)~|y08К{Xi" fV=czǑfH9;;:(IǞl JEB8cS%G%JmVaPgc!k6#f>[ .MXLAwR1 ko#KO_h"SHivwE e o|_*KH}d d} isP '_ Yv,i02R Z(bE`״Wu / n~6kh-m{R8Z}7sU@c.\9T "m/p3r<ȝ_ i0hXk!!8'ŋrE^3v^s_o2B3=Ň# '>LC̳yz'j: WKw?$etblJNDF7Zdz0 v (δkJkwpjLQ5% ;U_i\נ'ͥ#& L~$v `2Oc@r3 8J w0*&$j1Bh J`1<〰zg5eC$0ҿN_2bD{Ox͚Փv{PNTy%jn\ /ދQP 0KG[GIJ4`G*c%̈W9.^.Q7jɧ CAIswvaȊm]Mpt0blfVc|PftERS^&Ny \T{~㳙8D9ɒf*o,wS\W Lq(6غDMUxBv2w|nr PQNqPY |ē%ѯ&|/q%]5yvB0tйV\Ƽ[Y/uW Oِ!mFK$)%IX[Qfi򡸴CSĮ+fO ٿE%]WC|>)'HXT#I^[Cs?L=oZmqB'W/&ENs d1r]'|M7M@*(YbA܈D~To~l 5 *Km Dz@j+q2f\ V$vd7VY_EaNN1'HM*Pa:84*^Jl{QqTuΩ&‘*NV^6_x}Jh66'jk(j:s}!4P:Y,v3zP JRXmv lT 6"ﱲ?<S+^z$̕ IHsm ̛9\Ƣ {И9G-* 11^c$J(jYJv>'3"=3,O{.y0 wp-%ՃJl]zAwEQ:jS .w2 a9]pѰ\F~f34>/+;W"Rqr%wJm$4W#LÂ^S^HOGF9A!aUӮc'k`kF;<{6`mκޓ)z N @t4g*a!e82eѬ,p3MeTΒFNu ݯ8y:MC= vL렕6qCf`\ '*ui;6o PcnhSʼnX=c2SN7F-Oyk {LihrUln}c}r;2-k*-<"GNU>"eW|Uc Lf&wݕdH.W,uJz-+GājR'۰$-II}'Y .]`){Q#aO<91jۅ=ESҨyr)1+)'5u ާmk]qM@!N]~ [Ok- e<θ  ;.>92c]=;p=('%(+(1'&#.2("#'2,1&/#2."3!)" '#%!2((("'#('1'1!!2222#!/0..1'&##2 01&('2'2'#1".'#02'2&"*.&''&1&'2##2 -2#"3(1.#($!/'.2.'.2"&1/'(&(&1(/.!'&"/0.02/"'!,-,     // () 0  )+ `%!+   $!$$"r-* "$&$F"#"""#,-0/.&1001!1%!00&,201&!.0/00. /  )) ) , ) * -   * + %%!1111!&-,%,,-!-- ,%,%,%* +,*+% -,*%,0!02&!0101111-,,%A>"$5$2#!6!6  A!   Flatten7Join5#7Empty!6Collect$B task_local AsyncSink!2 Canceled1? IntoStream"7 Done!6std1 try_readyIOrElse#7compiler_builtinsSink3 Future3Then#7Map#7 SelectAll&B select_ok$A Poll2Failed!6 select_all$A finished5oneshot:!SelectOk&B StartSend&2 Canceled?Select#7failed5emptyD5AndThen"6Join4"7Oneshot1<"Lazy!6 IntoFuture3 Fuse"7Async!2Complete1=!MapErr#7 FlattenStream7 collect$@ SelectAllNext$B BoxFuture&@ done5Finished!6coreJoin3"7 SelectNext#7 lazyZ5Join"7Stream33Hdoc//! Zero-cost Futures in Rustdoc//!"Ndoc"N"NN//! This library is an implementation of futures in Rust which aims to provide"NqLdocqLqLL//! a robust implementation of handling asynchronous computations, ergonomicqLOdocOOO//! composition and usage, and zero-cost abstractions over what would otherwiseOdoc//! be written by hand.doc//!OdocOOO//! Futures are a concept for an object which is a proxy for another value thatOJdoc JJJ//! may not be ready yet. For example issuing an HTTP request may return aJ Ldoc LLM//! future for the HTTP response, as it probably hasn\'t arrived yet. With anL Pdoc PPP//! object representing a value that will eventually be available, futures allowP Pdoc PPP//! for powerful composition of tasks through basic combinators that can performP Ldoc LLL//! operations like chaining computations, changing the types of futures, orL 9doc999//! waiting for two futures to complete at the same time.9doc//!MdocMMM//! You can find extensive tutorials and documentations at [https://tokio.rs]MLdocLLL//! for both this crate (asynchronous programming in general) as well as theL*doc***//! Tokio stack to perform async I/O with.*doc//!(doc(((//! [https://tokio.rs]: https://tokio.rs(doc//!doc//! ## Installationdoc//!"doc"""//! Add this to your `Cargo.toml`:"doc//! doc   //! ```toml  doc  //! [dependencies]  doc  //! futures = \"0.1\"  doc  //! ```  doc  //!  doc  //! ## Examples  doc   //!   Edoc! E EF//! Let\'s take a look at a few examples of how futures might be used: E! doc"  //! " doc#  //! ``` # doc$  //! extern crate futures; $ doc%  //! % doc&  //! use std::io; & doc'  //! use std::time::Duration; ' doc(  //! use futures::prelude::*; ( doc)  //! use futures::future::Map; ) doc*  //! * Pdoc+ P PP//! // A future is actually a trait implementation, so we can generically take a P+ Odoc, O OO//! // future of any integer and return back a future that will resolve to that O, doc-  //! // value plus 10 more. - doc.  //! // . Mdoc/ M MN//! // Note here that like iterators, we\'re returning the `Map` combinator in M/ Fdoc0 F FF//! // the futures crate, not a boxed abstraction. This is a zero-cost F0 doc1  //! // construction of a future. 16doc2666//! fn add_ten(future: F) -> Map i32>62"doc3"""//! where F: Future,"3doc4//! {4(doc5(((//! fn add(a: i32) -> i32 { a + 10 }(5doc6//! future.map(add)6doc7//! }7doc8//!8Pdoc9PPP//! // Not only can we modify one future, but we can even compose them together!P9Ndoc:NNN//! // Here we have a function which takes two futures as input, and returns aN:>doc;>>>//! // future that will calculate the sum of their two values.>;doc<//! //<Fdoc=FFF//! // Above we saw a direct return value of the `Map` combinator, butF=Mdoc>MMO//! // performance isn\'t always critical and sometimes it\'s more ergonomic toM>Odoc?OOP//! // return a trait object like we do here. Note though that there\'s only oneO?=doc@===//! // allocation here, not any for the intermediate futures.=@NdocANNP//! fn add<\'a, A, B>(a: A, b: B) -> Box + \'a>NA'docB''(//! where A: Future + \'a,'B7docC778//! B: Future + \'a,7CdocD//! {D/docE/////! Box::new(a.join(b).map(|(a, b)| a + b))/EdocF//! }FdocG//!GPdocHPPP//! // Futures also allow chaining computations together, starting another afterPHOdocIOOO//! // the previous finishes. Here we wait for the first computation to finish,OI:docJ::://! // and then decide what to do depending on the result.:J"docK"""//! fn download_timeout(url: &str,"K.docL...//! timeout_dur: Duration).LGdocMGGG//! -> Box, Error=io::Error>> {GMdocN//! use std::io;N.docO...//! use std::net::{SocketAddr, TcpStream};.OdocP//!P@docQ@@@//! type IoFuture = Box>;@QdocR//!RNdocSNNN//! // First thing to do is we need to resolve our URL to an address. ThisNSEdocTEEE//! // will likely perform a DNS lookup which may take some time.ET docU   //! let addr = resolve(url); UdocV//!VFdocWFFF//! // After we acquire the address, we next want to open up a TCPFWdocX//! // connection.X7docY777//! let tcp = addr.and_then(|addr| connect(&addr));7YdocZ//!ZPdoc[PPQ//! // After the TCP connection is established and ready to go, we\'re off toP[doc\//! // the races!\7doc]777//! let data = tcp.and_then(|conn| download(conn));7]doc^//!^Pdoc_PPQ//! // That all might take awhile, though, so let\'s not wait too long for itP_Pdoc`PPP//! // to all come back. The `select` combinator here returns a future whichP`IdocaIIJ//! // resolves to the first value that\'s ready plus the next future.Ia docb   //! // bIdoccIII//! // Note we can also use the `then` combinator which is similar toIcEdocdEEE//! // `and_then` above except that it receives the result of theEd 6doce 6 66//! // computation, not just the successful value. 6e docf  //! // f!Pdocg!P!PP//! // Again note that all the above calls to `and_then` and the below calls!Pg!Odoch!O!OO//! // to `map` and such require no allocations. We only ever allocate once!Oh"Pdoci"P"PQ//! // we hit the `Box::new()` call at the end here, which means we\'ve built"Pi"Pdocj"P"PP//! // up a relatively involved computation with only one box, and even that"Pj#dock##//! // was optional!#k#docl##//!#l# docm# #  //! let data = data.map(Ok);# m$4docn$4$44//! let timeout = timeout(timeout_dur).map(Err);$4n$doco$$//!$o$6docp$6$66//! let ret = data.select(timeout).then(|result| {$6p$docq$$//! match result {$q%Edocr%E%EE//! // One future succeeded, and it was the one which was%Er%8docs%8%88//! // downloading data from the connection.%8s&:doct&:&:://! Ok((Ok(data), _other_future)) => Ok(data),&:t&docu&&//!&u&Jdocv&J&JJ//! // The timeout fired, and otherwise no error was found, so&Jv'1docw'1'11//! // we translate this to an error.'1w'7docx'7'77//! Ok((Err(_timeout), _other_future)) => {'7x(Hdocy(H(HJ//! Err(io::Error::new(io::ErrorKind::Other, \"timeout\"))(Hy(docz((//! }(z(doc{((//!({(Kdoc|(K(KK//! // A normal I/O error happened, so we pass that on through.(K|)2doc})2)22//! Err((e, _other_future)) => Err(e),)2}) doc~) )  //! }) ~) doc) )  //! });) )doc))//! return Box::new(ret);)*doc**//!**7doc*7*77//! fn resolve(url: &str) -> IoFuture {*7*doc**//! // ...**$doc*$*$&//! # panic!(\"unimplemented\");*$+ doc+ +  //! }+ +doc++//!++Bdoc+B+BB//! fn connect(hostname: &SocketAddr) -> IoFuture {+B+doc++//! // ...++$doc+$+$&//! # panic!(\"unimplemented\");+$, doc, ,  //! }, ,doc,,//!,,=doc,=,==//! fn download(stream: TcpStream) -> IoFuture> {,=,doc,,//! // ...,,$doc,$,$&//! # panic!(\"unimplemented\");,$- doc- -  //! }- -doc--//!--6doc-6-66//! fn timeout(stream: Duration) -> IoFuture<()> {-6-doc--//! // ...--$doc-$-$&//! # panic!(\"unimplemented\");-$. doc. .  //! }. .doc..//! }..doc..//! # fn main() {}..doc..//! ```..doc..//!..Hdoc.H.HH//! Some more information can also be found in the [README] for now, but.H/5doc/5/55//! otherwise feel free to jump in to the docs below!/5/doc////!//Hdoc/H/HH//! [README]: https://github.com/rust-lang-nursery/futures-rs#futures-rs/H0no_std0 0deny000 missing_docs00 missing_debug_implementations050doc010 html_root_url00https://docs.rs/futures/0.106 (*,.0222222333333333![DY2 2  macro_use2 !!!!!!!!!!&;NNN*KPdocKPKPQ/// Return type of the `Future::poll` method, indicates whether a future\'s valueKPLdocLL/// is ready or not.LLdocLL///LLIdocLILII/// * `Ok(Async::Ready(t))` means that a future has successfully resolvedLIMLdocMLMLL/// * `Ok(Async::NotReady)` means that a future is not ready to complete yetMLMGdocMGMGG/// * `Err(e)` means that a future has completed with the given failureMG!TETE  N  NP P T P.selff F!U QPFdocPFPFF/// Change the success value of this `Async` with the closure providedPF    FU  Q  Q  Q   Ri!self   SS*docS*S**/// Returns whether this is `Async::Ready`S*  SrM self   UCT-docT-T--/// Returns whether this is `Async::NotReady`T-  UtP U    U^ T U,t    V9  !Z Z "$! T Z4selff !  [ZKdocZKZKK/// Change the NotReady value of this `AsyncSink` with the closure providedZK    F!U##! [ [ [ \n!self   ]].doc].]../// Returns whether this is `AsyncSink::Ready`]. " ]vQ self   _C_1doc_1_11/// Returns whether this is `AsyncSink::NotReady`_1 $ _xT aaa3`Mdoc`M`MM/// Return type of the `Sink::start_send` method, indicating the outcome of a`M`3doc`3`33/// send attempt. See `AsyncSink` for more details.`3  T%E''% a a  FutureResult!e FlattenmJoin5#ostream|2Empty!dCollect$w"JoinAll$s IntoStream"nDone!iFromErr#oOk!jresult,b 2OrElse#p CatchUnwind&rLoopFn"e SharedError&t fmt?b 2Then#q SharedItem&t Map#o SelectAll&s select_ok$t Poll|2done,i2Loop"eFailed!g select_all$s finishedfSelectOk&sShared%tSelect#pfailedg emptyDdjoin_all$sAndThen"mpoll_fnpdresulteJoin4"oInspect#qerreokeLazy!dFuse"nErr!kMapErr#o FlattenStreamn# SelectAllNext$s collect$u#Either#qdoneiFinished!fJoin3"oPollFn!d SelectNext#p lazyZdSelect2#pJoin"oloop_fne:2a doca a  //! Futuresa adocaa//!aaMdocaMaMM//! This module contains the `Future` trait and a number of adaptors for thisaMbJdocbJbJJ//! trait. See the crate docs, and the docs for `Future`, for full detail.bJ468Nhz#$$$$%%&&&&&&&&&&&&&&&&&&&&&&xAsync!8Future8Poll8marker  8D2c DdocDDE//! Definition of the Empty combinator, a future that\'s never ready.D:<>@B!!DF l!   PPdocPPP/// Creates a future which never resolves, representing a computation that neverPѹ docѹ ѹ  /// finishes.ѹ ߹doc߹߹///߹>doc>>>/// The returned future will forever return `Async::NotReady`.> D  T)E++)    8HJL T-E/-/  F8 FF8 FFself   8ĻD L  F̻F,  FutureNPollN IntoFuture Nmem  NF2c NdocNNN//! Definition of the Lazy combinator, deferring execution of a function untilNۼdocۼۼ//! the future is polled.ۼPRTVX!!!!Z\` fF! R MdocMMM/// Creates a new future which will eventually be the same as the one createdMdoc/// by the closure provided.doc///MdocMMM/// The provided closure is only run once the future has a callback scheduledMOdocOOO/// on it, otherwise the callback never runs. Once run, however, this future isO,doc,,,/// the same as the one the closure creates.,doc///doc/// # Examplesdoc///doc/// ```doc/// use futures::future::*;doc///'doc'''/// let a = lazy(|| ok::(1));'doc////doc////// let b = lazy(|| -> FutureResult {/doc/// panic!(\"oh no!\")doc/// });$doc$$$/// drop(b); // closure is never run$doc/// ``` Z  F1R331             N^ F5R775Չ  ĉ    [self     N ^  \\-   Nbdf F9R;9;Չ  ĉ    ^N ``N ``self ! ߍ  NO f  ``,  FuturehPollh!2c 1doc111//! Definition of the `PollFn` adapter combinator1jln!!prjXfF!Đ  kEdocEEE/// Creates a new future wrapping around a function returning `Poll`.Edoc///BdocBBB/// Polling the returned future delegates to the wrapped function.Bdoc///doc/// # Examplesdoc///doc/// ```!doc!!!/// use futures::future::poll_fn;!doc/// use futures::{Async, Poll};doc///4doc444/// fn read_line() -> Poll {40doc002/// Ok(Async::Ready(\"Hello, World!\".into()))0doc/// }doc///)doc)))/// let read_future = poll_fn(read_line);)doc/// ``` p  Đ T=E?FAA?=   Đ Đ Đ    ,Ȑ htvxȐ TCEEFGCGEՙ   ę  k,h rrh rrself Ȑ  h? x  Đ rr1 FuturezPollzresult, zAsync!zD2c cpathcc  result.rsc@doc@@@//! Definition of the `Result` (immediately finished) combinator@|~!"! r  !    jIdocIIK/// Creates a new \"leaf future\" which will resolve with the given result.Idoc///OdocOOO/// The returned future represents a computation which is finished immediately.OLdocLLL/// This can be useful with the `finished` and `failed` base future types toLEdocEEE/// convert an immediate value to a future to interoperate elsewhere.Edoc///doc/// # Examplesdoc///doc/// ```doc/// use futures::future::*;doc///0doc000/// let future_of_1 = result::(Ok(1));05doc555/// let future_of_err_2 = result::(Err(2));5doc/// ```   TIEKKI   t   AEdocEEG/// Creates a \"leaf future\" from an immediate value of a finished andEdoc/// successful computation.doc///NdocNNN/// The returned future is similar to `result` where it will immediately run aN/doc////// scheduled callback with the provided value./doc///doc/// # Examplesdoc///doc/// ```doc/// use futures::future::*;doc///(doc(((/// let future_of_1 = ok::(1);(doc/// ```   TMEOMO    e   CLdocLLN/// Creates a \"leaf future\" from an immediate value of a failed computation.Ldoc///NdocNNN/// The returned future is similar to `result` where it will immediately run aN/doc////// scheduled callback with the provided value./doc///doc/// # Examplesdoc///doc/// ```doc/// use futures::future::*;doc///-doc---/// let future_of_err_1 = err::(1);-doc/// ```   TQESSQ     z TUEWWU  Iz z self   zw   /     zw TYE[Y[  Dr   z:   * FuturePoll IntoFuture Async!L2c GdocGGG//! Definition of the `LoopFn` combinator, implementing `Future` loops.G"""" n initial_statefuncSF"A  +<doc<<` to indicate the status of theJ doc   /// loop. doc///MdocMMM/// `Loop::Break(T)` halts the loop and completes the future with output `T`.Mdoc///PdocPPP/// `Loop::Continue(S)` reinvokes the loop function with state `S`. The returnedPDdocDDD/// future will be subsequently polled for a new `Loop` value.Ddoc///doc/// # Examplesdoc///doc/// ```CdocCCC/// use futures::future::{ok, loop_fn, Future, FutureResult, Loop};Cdoc/// use std::io::Error;doc///doc/// struct Client {doc/// ping_count: u8,doc/// }doc///doc/// impl Client {doc/// fn new() -> Self {$doc$$$/// Client { ping_count: 0 }$ doc   /// } doc///9doc999/// fn send_ping(self) -> FutureResult {9:doc:::/// ok(Client { ping_count: self.ping_count + 1 }): doc   /// } doc///DdocDDD/// fn receive_pong(self) -> FutureResult<(Self, bool), Error> {D,doc,,,/// let done = self.ping_count >= 5;,doc/// ok((self, done)) doc   /// } doc/// }doc///9doc999/// let ping_til_done = loop_fn(Client::new(), |client| {9doc/// client.send_ping()5doc555/// .and_then(|client| client.receive_pong())5(doc(((/// .and_then(|(client, done)| {(doc/// if done {+doc+++/// Ok(Loop::Break(client))+doc/// } else {.doc.../// Ok(Loop::Continue(client)).doc/// }doc/// })doc/// });doc/// ```  T  S]T_AaFcca_]                "  19  SeTgAiFkkige        9  self  !   1     ; FuturePollAsync!52c 9doc 999//! Definition of the `Option` (optional step) combinator9s`  FmToEqmqo   E     ,    self  !   %    6 Chain#FuturePoll IntoFuture L2k "" ڀ݀futurefAĐ " BĐ  $π   Đ AuBwFyywu  ڀ  ݀    ,  A{B}F}{  ̂Đ       Đ   ,  self  !   %   Đ Ã6 Chain#Futurefmt? Poll IntoFuture \2l  x…Tdoc …T…TT/// Future for the `flatten` combinator, flattening a future-of-a-future to get just…T#doc ###/// the result of the final future.#doc ///4doc 444/// This is created by the `Future::flatten` method.4must_use " futures do nothing unless polled0 A  ć Շ 4#   ,A  A  ΈA ׈  A  kselffmt   A 4ω  ։, future    A   Ë C  A   Ռ   _6 8 self  !   1  , Async!Futurefmt? PollStreamX2l""  <doc<<doc>>>/// Returns whether the underlying future has finished or not.>doc/// BdocBBB/// If this method returns `true`, then all future calls to `poll`BCdocCCC/// are guaranteed to return `Ok(Async::NotReady)`. If this returnsCĭ<docĭ<ĭ<` to a `Future` or an `and_then` combinator couldNMdoc$MMM/// create a future after the first one is done and only be resolved when theMdoc$/// second is done.ŏdoc$ŏŏ///ŏɏPdoc$ɏPɏPP/// Combinators act very similarly to the methods on the `Iterator` trait itselfɏPOdoc$OOO/// or those on `Option` and `Result`. Like with iterators, the combinators areOKdoc$KKM/// zero-cost and don\'t impose any extra layers of indirection you wouldn\'tK!doc$!!!/// otherwise have to write down.!ؑdoc$ؑؑ///ܑؑBdoc$ܑBܑBB/// More information about combinators can be found [on tokio.rs].ܑBdoc$///Pdoc$PPP/// [on tokio.rs]: https://tokio.rs/docs/going-deeper-futures/futures-mechanics/PSelf Self   ܔ    ܔ (9'= Bdoc$BBB/// The type of value that this future will resolved with if it isBғdoc$ғғ/// successful.ғܔ Idoc$III/// The type of error that this future will resolve with if it fails in aIĔdoc$ĔĔ/// normal fashion.Ĕself  !   %ƹ4Kdoc$KKK/// Query this future to see if its value has become available, registeringKdoc$/// interest if it is not.ܕdoc$ܕܕ///ܕHdoc$HHH/// This function will check the internal state of the future and assessHLdoc$LLL/// whether the value is ready to be produced. Implementers of this functionLIdoc$III/// should ensure that a call to this **never blocks** as event loops mayIЗ doc%З З  /// not work properly otherwise.З doc%///Gdoc%GGG/// When a future is not ready yet, the `Async::NotReady` value will beGɘKdoc%ɘKɘKK/// returned. In this situation the future will *also* register interest ofɘKIdoc%III/// the current task in the value being produced. This is done by callingILdoc%LLL/// `task::park` to retrieve a handle to the current `Task`. When the futureLIdoc%III/// is then ready to make progress (e.g. it should be `poll`ed again) theI,doc%,,,/// `unpark` method is called on the `Task`.,doc%///Hdoc%HHH/// More information about the details of `poll` and the nitty-gritty ofH6doc%666/// tasks can be [found online at tokio.rs][poll-dox].6ǜdoc%ǜǜ///ǜϜIdoc%ϜIϜII/// [poll-dox]: https://tokio.rs/docs/going-deeper-futures/futures-model/ϜIdoc%///doc%/// # Runtime characteristicsǝdoc%ǝǝ///ǝϝFdoc%ϝFϝFH/// This function, `poll`, is the primary method for \'making progress\'ϝFDdoc%DDD/// within a tree of futures. For example this method will be calledDKdoc%KKK/// repeatedly as the internal state machine makes its various transitions.KJdoc%JJJ/// Executors are responsible for ensuring that this function is called inJJdoc%JJJ/// the right location (e.g. always on an I/O thread or not). Unless it isJѠLdoc%ѠLѠLL/// otherwise arranged to be so, it should be ensured that **implementationsѠL+doc%+++/// of this function finish very quickly**.+ҡdoc%ҡҡ///ҡڡGdoc%ڡGڡGG/// Returning quickly prevents unnecessarily clogging up threads and/orڡGKdoc%KKK/// event loops while a `poll` function call, for example, takes up computeKIdoc%III/// resources to perform some expensive computation. If it is known aheadIģKdoc%ģKģKK/// of time that a call to `poll` may end up taking awhile, the work shouldģKGdoc%GGG/// be offloaded to a thread pool (or something similar) to ensure thatGdoc%/// `poll` can return quickly.doc%///Hdoc%HHH/// Note that the `poll` function is not called repeatedly in a loop forHإGdoc%إGإGG/// futures typically, but only whenever the future itself is ready. IfإGFdoc%FFG/// you\'re familiar with the `poll(2)` or `select(2)` syscalls on UnixFEdoc%EEF/// it\'s worth noting that futures typically do *not* suffer the sameEGdoc%GGI/// problems of \"all wakeups must poll all events\". Futures have enoughG:doc%:::/// support for only polling futures which cause a wakeup.:Ĩdoc%ĨĨ///Į̃doc%̨̨/// # Return valuędoc%///Kdoc%KKK/// This function returns `Async::NotReady` if the future is not ready yet,K@doc%@@@/// `Err` if the future is finished but resolved to an error, or@Bdoc%BBC/// `Async::Ready` with the result of this future if it\'s finishedBǪHdoc%ǪHǪHH/// successfully. Once a future has finished it is considered a contractǪH)doc%)))/// error to continue polling the future.)«doc%««///«ʫGdoc%ʫGʫGG/// If `NotReady` is returned, then the future will internally registerʫGFdoc%FFF/// interest in the value being produced for the current task (throughFBdoc%BBB/// `task::park`). In other words, the current task will receive aBLdoc%LLL/// notification (through the `unpark` method) once the value is ready to beL-doc%---/// produced or the future can make progress.-doc%///Kdoc%KKK/// Note that if `NotReady` is returned it only means that *this* task willKKdoc%KKK/// receive a notification. Historical calls to `poll` with different tasksKӯGdoc%ӯGӯGG/// will not receive notifications. In other words, implementers of theӯGJdoc%JJJ/// `Future` trait need not store a queue of tasks to notify, but only theJKdoc%KKK/// last task that called this method. Alternatively callers of this methodKJdoc%JJJ/// can only rely on the most recent task which call `poll` being notifiedJdoc%/// when a future is ready.doc%/// doc%   /// # Panics Ʋdoc%ƲƲ///ƲβHdoc%βHβHH/// Once a future has completed (returned `Ready` or `Err` from `poll`),βHJdoc%JJJ/// then any future calls to `poll` may panic, block forever, or otherwiseJJdoc%JJJ/// cause wrong behavior. The `Future` trait itself provides no guaranteesJ>doc%>>>/// about the behavior of `poll` after a future has completed.>doc%///Idoc%III/// Callers who may call `poll` too many times may want to consider usingIҵKdoc%ҵKҵKK/// the `fuse` adaptor which defines the behavior of `poll`, but comes withҵKdoc%/// a little bit of extra cost.ƶdoc%ƶƶ///ƶζEdoc%ζEζEE/// Additionally, calls to `poll` must always be made from within theζEIdoc%III/// context of a task. If a current task is not set then this method willIdoc%/// likely panic.doc%/// doc%   /// # Errors doc%///Hdoc%HHH/// This future may have failed to finish the computation, in which caseHHdoc%HHH/// the `Err` variant will be returned with an appropriate payload of anH doc%   /// error.  ι<V; self    ;doc%;;;/// Block the current thread until this future is resolved.;doc%///ȺDdoc%ȺDȺDD/// This method will consume ownership of this future, driving it toȺDLdoc%LLM/// completion via `poll` and blocking the current thread while it\'s waitingLFdoc%FFF/// for the value to become available. Once the future is resolved theF&doc%&&&/// result of this future is returned.&ؼdoc%ؼؼ///ؼHdoc%HHH/// > **Note:** This method is not appropriate to call on event loops orHHdoc%HHH/// > similar I/O situations because it will prevent the eventHHdoc%HHH/// > loop from making progress (this blocks the thread). ThisHǾJdoc%ǾJǾJK/// > method should only be called when it\'s guaranteed that theǾJKdoc%KKK/// > blocking work associated with this future will be completedK"doc%"""/// > by another thread."doc%///Ddoc%DDD/// This method is only available when the `use_std` feature of thisD9doc%999/// library is activated, and it is activated by default.9doc%/// doc%   /// # Panics doc%///Jdoc%JJJ/// This function does not attempt to catch panics. If the `poll` functionJCdoc%CCC/// of this future panics, panics will be propagated to the caller.Ccfg% feature use_std       %   л ' self    self     -Jdoc&JJJ/// Convenience function for turning this future into a trait object whichJdoc&/// is also `Send`.doc&///Kdoc&KKK/// This simply avoids the need to write `Box::new` and can often help withKHdoc&HHH/// type inference as well by always returning a trait object. Note thatHJdoc&JJJ/// this method requires the `Send` bound and returns a `BoxFuture`, whichJJdoc&JJK/// also encodes this. If you\'d like to create a `Box` without theJCdoc&CCC/// `Send` bound, then the `Box::new` function can be used instead.Cdoc&///Ddoc&DDD/// This method is only available when the `use_std` feature of thisD9doc&999/// library is activated, and it is activated by default.9doc&///doc&/// # Examplesdoc&///doc&/// ```doc&/// use futures::prelude::*;-doc&---/// use futures::future::{BoxFuture, result};-doc&///7doc&777/// let a: BoxFuture = result(Ok(1)).boxed();7doc&/// ```cfg& feature use_stddoc& hidden  deprecated& noteremoved without replacement, recommended to use a \ local extension trait or function if needed, more \ details in https://github.com/rust-lang-nursery/futures-rs/issues/228allow& deprecatedremoved without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228              " self    $selff #   Kdoc&KKL/// Map this future\'s result to a different type, returning a new future ofKdoc&/// the resulting type.doc&///Jdoc&JJJ/// This function is similar to the `Option::map` or `Iterator::map` whereJGdoc&GGG/// it will change the type of the underlying future. This is useful toG>doc&>>>/// chain along a computation once a future has been resolved.>doc&///Gdoc&GGG/// The closure provided will only be called if this future is resolvedGIdoc&III/// successfully. If this future returns an error, panics, or is dropped,I4doc&444/// then the closure provided will never be invoked.4doc&///Gdoc&GGG/// Note that this function consumes the receiving future and returns aGGdoc&GGG/// wrapped version of it, similar to the existing `map` methods in theGdoc&/// standard library.doc&///doc&/// # Examplesdoc&///doc&/// ```doc&/// use futures::prelude::*;doc&/// use futures::future;doc&///+doc&+++/// let future = future::ok::(1);++doc&+++/// let new_future = future.map(|x| x + 3);+)doc&)))/// assert_eq!(new_future.wait(), Ok(4));)doc&/// ```doc&///7doc&777/// Calling `map` on an errored `Future` has no effect:7doc&///doc&/// ```doc&/// use futures::prelude::*;doc&/// use futures::future;doc&///,doc&,,,/// let future = future::err::(1);,+doc&+++/// let new_future = future.map(|x| x + 3);+*doc&***/// assert_eq!(new_future.wait(), Err(1));*doc&/// ```    FU            5"        self f      " $&Eselff #   Idoc'IIJ/// Map this future\'s error to a different error, returning a new future.Idoc'///Jdoc'JJJ/// This function is similar to the `Result::map_err` where it will changeJJdoc'JJJ/// the error type of the underlying future. This is useful for example toJKdoc'KKK/// ensure that futures have the same error type when used with combinatorsKdoc'/// like `select` and `join`.doc'///Gdoc'GGG/// The closure provided will only be called if this future is resolvedGBdoc'BBB/// with an error. If this future returns a success, panics, or isB=doc'===/// dropped, then the closure provided will never be invoked.=doc'///Gdoc'GGG/// Note that this function consumes the receiving future and returns aGdoc'/// wrapped version of it.doc'///doc'/// # Examplesdoc'///doc'/// ```doc'/// use futures::future::*;doc'///$doc'$$$/// let future = err::(1);$/doc'////// let new_future = future.map_err(|x| x + 3);/*doc'***/// assert_eq!(new_future.wait(), Err(4));*doc'/// ```doc'///=doc'===/// Calling `map_err` on a successful `Future` has no effect:=doc'///doc'/// ```doc'/// use futures::future::*;doc'///#doc'###/// let future = ok::(1);#/doc'////// let new_future = future.map_err(|x| x + 3);/)doc')))/// assert_eq!(new_future.wait(), Ok(1));)doc'/// ```    FE          8!      self f      !!&Eself #   @doc'@@A/// Map this future\'s error to any error implementing `From` for@2doc'223/// this future\'s `Error`, returning a new future.2doc'///Adoc'AAA/// This function does for futures what `try!` does for `Result`,ABdoc'BBB/// by letting the compiler infer the type of the resulting error.BAdoc'AAA/// Just as `map_err` above, this is useful for example to ensureA8doc'888/// that futures have the same error type when used with8)doc')))/// combinators like `select` and `join`.)doc'///Gdoc'GGG/// Note that this function consumes the receiving future and returns aGdoc'/// wrapped version of it.doc'///doc'/// # Examplesdoc'///doc'/// ```doc'/// use futures::prelude::*;doc'/// use futures::future;doc'///6doc'666/// let future_with_err_u8 = future::err::<(), u8>(1);6Cdoc'CCC/// let future_with_err_u32 = future_with_err_u8.from_err::();Cdoc'/// ```   E       ޟ6!    self    !  &selff #     Ldoc(LLL/// Chain on a computation for when a future finished, passing the result ofL+doc(+++/// the future to the provided closure `f`.+doc(///Hdoc(HHH/// This function can be used to ensure a computation runs regardless ofHHdoc(HHH/// the conclusion of the future. The closure provided will be yielded aH)doc()))/// `Result` once the future is complete.)doc(///Kdoc(KKK/// The returned value of the closure must implement the `IntoFuture` traitKJdoc(JJJ/// and can represent some more work to be done before the composed futureJHdoc(HHH/// is finished. Note that the `Result` type implements the `IntoFuture`HGdoc(GGG/// trait so it is possible to simply alter the `Result` yielded to theGdoc(/// closure and return it.doc(///Hdoc(HHH/// If this future is dropped or panics then the closure `f` will not beHdoc(/// run.doc(///Gdoc(GGG/// Note that this function consumes the receiving future and returns aGdoc(/// wrapped version of it.doc(///doc(/// # Examplesdoc(///doc(/// ```doc(/// use futures::prelude::*;doc(/// use futures::future;doc(///0doc(000/// let future_of_1 = future::ok::(1);0,doc(,,,/// let future_of_4 = future_of_1.then(|x| {,doc(/// x.map(|y| y + 3)doc(/// });doc(///5doc(555/// let future_of_err_1 = future::err::(1);50doc(000/// let future_of_4 = future_of_err_1.then(|x| {0doc(/// match x {1doc(113/// Ok(_) => panic!(\"expected an error\"),14doc(444/// Err(y) => future::ok::(y + 3),4 doc(   /// } doc(/// });doc(/// ```    FB   л 4 ̸       ù9%    self f   %&&Sselff "     Ddoc)DDD/// Execute another future after this one has resolved successfully.Ddoc)///Kdoc)KKK/// This function can be used to chain two futures together and ensure thatKIdoc)IIJ/// the final future isn\'t resolved until both have finished. The closureIHdoc)HHH/// provided is yielded the successful result of this future and returnsH7doc)777/// another value which can be converted into a future.7doc)///Ldoc)LLL/// Note that because `Result` implements the `IntoFuture` trait this methodLIdoc)III/// can also be useful for chaining fallible and serial computations ontoIdoc)/// the end of one future.doc)///Jdoc)JJJ/// If this future is dropped, panics, or completes with an error then theJ)doc))))/// provided closure `f` is never called.)doc)///Gdoc)GGG/// Note that this function consumes the receiving future and returns aGЀdoc)ЀЀ/// wrapped version of it.Ѐdoc)///doc)/// # Examplesdoc)///doc)/// ```doc)/// use futures::prelude::*;.doc).../// use futures::future::{self, FutureResult};.doc)///0doc)000/// let future_of_1 = future::ok::(1);00doc)000/// let future_of_4 = future_of_1.and_then(|x| {0doc)/// Ok(x + 3)doc)/// });doc)///5doc)555/// let future_of_err_1 = future::err::(1);5ȃ<doc)ȃ<ȃ< FutureResult {ȃ<;doc);;=/// panic!(\"should not be called in case of an error\");;Ʉdoc)ɄɄ/// });ɄՄdoc)ՄՄ/// ```Մ    FB      х  ܅ Ć҆҆؆؆ĆĆ    نن@(  چ self fĆ ҆ ؆  (!&Rselff #     >doc)>>>/// Execute another future if this one resolves with an error.>doc)///Idoc)IIJ/// Return a future that passes along this future\'s value if it succeeds,IGdoc)GGG/// and otherwise passes the error to the closure `f` and waits for theG̈Jdoc)̈J̈JJ/// future it returns. The closure may also simply return a value that can̈Jdoc)/// be converted into a future.doc)///ljLdoc)ljLljLL/// Note that because `Result` implements the `IntoFuture` trait this methodljLIdoc)III/// can also be useful for chaining together fallback computations, whereI*doc)***/// when one fails, the next is attempted.*doc)///Idoc)III/// If this future is dropped, panics, or completes successfully then theI)doc))))/// provided closure `f` is never called.)doc)///Gdoc)GGG/// Note that this function consumes the receiving future and returns aGdoc)/// wrapped version of it.doc)///doc)/// # Examplesdoc)///doc)/// ```doc)/// use futures::prelude::*;܍.doc)܍.܍../// use futures::future::{self, FutureResult};܍.doc)///5doc)555/// let future_of_err_1 = future::err::(1);5юGdoc)юGюGG/// let future_of_4 = future_of_err_1.or_else(|x| -> Result {юGdoc)/// Ok(x + 3)doc)/// });doc)///Ǐ0doc*Ǐ0Ǐ00/// let future_of_1 = future::ok::(1);Ǐ07doc*777/// future_of_1.or_else(|_| -> FutureResult {7:doc*::(\'a\')#doc*/// });doc*///ř#doc*ř#ř##/// let future2 = future::lazy(|| {ř#4doc*444/// thread::sleep(time::Duration::from_secs(3));4#doc*##%/// future::ok::(\'b\')#Κdoc*ΚΚ/// });Κښdoc*ښښ///ښLdoc*LLL/// let (value, last_future) = future1.select(future2).wait().ok().unwrap();Ldoc*/// assert_eq!(value, \'a\');ӛ1doc*ӛ1ӛ13/// assert_eq!(last_future.wait().unwrap(), \'b\');ӛ1doc*/// ```doc*///7doc*778/// A poor-man\'s `join` implemented on top of `select`:7ٜdoc*ٜٜ///ٜdoc*/// ```doc*/// use futures::prelude::*;doc*/// use futures::future;doc*///Edoc*EEE/// fn join(a: A, b: A) -> Box>E;doc*;; + \'static,;doc*/// {ǞIdoc*ǞIǞII/// Box::new(a.select(b).then(|res| -> Box> {ǞIdoc*/// match res {?doc*???/// Ok((a, b)) => Box::new(b.map(move |b| (a, b))),?8doc*888/// Err((a, _)) => Box::new(future::err(a)),8 doc*   /// } Ġ doc*Ġ Ġ  /// }))Ġ Ԡdoc*ԠԠ/// }Ԡޠdoc*ޠޠ/// ```ޠ   B  .    ϡ   &&&  ƣƣĢĢ  #  ǣͣΣ  self otherf  ƣ Ģ!2 >selfother #   ԣFdoc+ԣFԣFF/// Waits for either one of two differently-typed futures to complete.ԣFdoc+///Jdoc+JJJ/// This function will return a new future which awaits for either this orJHdoc+HHH/// the `other` future to complete. The returned future will finish withHåKdoc+åKåKK/// both the value resolved and a future representing the completion of theåKdoc+/// other work.doc+///Hdoc+HHH/// Note that this function consumes the receiving futures and returns aHdoc+/// wrapped version of them.doc+///Cdoc+CCC/// Also note that if both this and the second future have the sameC@doc+@@@/// success/error type you can use the `Either::split` method to@2doc+222/// conveniently extract out the value at the end.2doc+///doc+/// # Examplesdoc+///doc+/// ```doc+/// use futures::prelude::*;(doc+(((/// use futures::future::{self, Either};(doc+///6doc+667/// // A poor-man\'s join implemented on top of select26doc+///Qdoc+QQQ/// fn join(a: A, b: B) -> Box>Q-doc+--./// where A: Future + \'static,--doc+--./// B: Future + \'static,-doc+/// E: \'static,doc+/// {Jdoc+JJJ/// Box::new(a.select2(b).then(|res| -> Box> {Jdoc+/// match res {Jdoc+JJJ/// Ok(Either::A((x, b))) => Box::new(b.map(move |y| (x, y))),JͭJdoc+ͭJͭJJ/// Ok(Either::B((y, a))) => Box::new(a.map(move |x| (x, y))),ͭJCdoc+CCC/// Err(Either::A((e, _))) => Box::new(future::err(e)),CCdoc+CCC/// Err(Either::B((e, _))) => Box::new(future::err(e)),C doc+   /// }  doc+   /// })) ίdoc+ίί/// }ίدdoc+دد/// ```د   B    հ'հ'հ'հ  ͦ self other  % selfother "   Gdoc,GGG/// Joins the result of two futures, waiting for them both to complete.GԱdoc,ԱԱ///ԱܱIdoc,ܱIܱII/// This function will return a new future which awaits both this and theܱILdoc,LLL/// `other` future to complete. The returned future will finish with a tupleLdoc,/// of both results.doc,///Kdoc,KKK/// Both futures must have the same error type, and if either finishes withKBdoc,BBB/// an error then the other will be dropped and that error will beB doc,   /// returned. Ŵdoc,ŴŴ///ŴʹGdoc,ʹGʹGG/// Note that this function consumes the receiving future and returns aʹGdoc,/// wrapped version of it.doc,///doc,/// # Examplesӵdoc,ӵӵ///ӵ۵doc,۵۵/// ```۵doc,/// use futures::prelude::*;doc,/// use futures::future;doc,///&doc,&&&/// let a = future::ok::(1);&ض&doc,ض&ض&&/// let b = future::ok::(2);ض&doc,/// let pair = a.join(b);doc,///(doc,(((/// assert_eq!(pair.wait(), Ok((1, 2)));(ַdoc,ַַ/// ```ַdoc,///Ddoc,DDD/// If one or both of the joined `Future`s is errored, the resultingDdoc,/// `Future` will be errored:ոdoc,ոո///ոݸdoc,ݸݸ/// ```ݸdoc,/// use futures::prelude::*;doc,/// use futures::future;doc,///&doc,&&&/// let a = future::ok::(1);&ڹ'doc,ڹ'ڹ''/// let b = future::err::(2);ڹ'doc,/// let pair = a.join(b);doc,///$doc,$$$/// assert_eq!(pair.wait(), Err(2));$պdoc,պպ/// ```պ   B   ٻ $$$ " ۼۼ96   ܼuu  self otherf  ۼ  6' $selfbc "   **doc,***/// Same as `join`, but with more futures.*    BC       Ҿ               2 22 22 "         ! self b c    Q&Kselfbcd D"  3Կ*doc-***/// Same as `join`, but with more futures.*    BCD ݿ                 Կ              CCCCCCC "        Կ, self b cd   Կ Q5iselfbcde E#  ;*doc-***/// Same as `join`, but with more futures.*    BCDE                          ggggggggg #            7 self b cde   QDself "  m5doc.555/// Convert this future into a single element stream.5doc.///Jdoc.JJJ/// The returned stream contains single success if this future resolves toJ?doc.???/// success or single error if this future resolves into error.?doc.///doc./// # Examplesdoc.///doc./// ```doc./// use futures::prelude::*;doc./// use futures::future;doc.///+doc.+++/// let future = future::ok::<_, bool>(17);+*doc.***/// let mut stream = future.into_stream();*:doc.:::/// assert_eq!(Ok(Async::Ready(Some(17))), stream.poll());:6doc.666/// assert_eq!(Ok(Async::Ready(None)), stream.poll());6doc.///,doc.,,,/// let future = future::err::(19);,*doc.***/// let mut stream = future.into_stream();*'doc.'''/// assert_eq!(Err(19), stream.poll());'6doc.666/// assert_eq!(Ok(Async::Ready(None)), stream.poll());6doc./// ```     m self m   self   Kdoc/KKK/// Flatten the execution of this future when the successful result of thisK$doc/$$$/// future is itself another future.$doc////Edoc/EEE/// This can be useful when combining futures together to flatten theEDdoc/DDD/// computation out the final result. This method can only be calledDCdoc/CCC/// when the successful result of this future itself implements theCLdoc/LLM/// `IntoFuture` trait and the error can be created from this future\'s errorL doc/   /// type. doc////@doc/@@@/// This method is roughly equivalent to `self.and_then(|x| x)`.@doc////Gdoc/GGG/// Note that this function consumes the receiving future and returns aGdoc//// wrapped version of it.doc////doc//// # Examplesdoc////doc//// ```doc//// use futures::prelude::*;doc//// use futures::future;doc////Hdoc/HHH/// let nested_future = future::ok::<_, u32>(future::ok::(1));H)doc/)))/// let future = nested_future.flatten();)%doc/%%%/// assert_eq!(future.wait(), Ok(1));%doc//// ```doc////Idoc/III/// Calling `flatten` on an errored `Future`, or if the inner `Future` isI0doc/000/// errored, will result in an errored `Future`:0doc////doc//// ```doc//// use futures::prelude::*;doc//// use futures::future;doc////Idoc/III/// let nested_future = future::ok::<_, u32>(future::err::(1));I)doc/)))/// let future = nested_future.flatten();)&doc/&&&/// assert_eq!(future.wait(), Err(1));&doc//// ```           ʐ  selff А ʐ$2self   Kdoc/KKK/// Flatten the execution of this future when the successful result of thisKdoc//// future is a stream.doc////Hdoc/HHH/// This can be useful when stream initialization is deferred, and it isHIdoc/III/// convenient to work with that stream as if stream was available at theIdoc//// call site.doc////Fdoc/FFF/// Note that this function consumes this future and returns a wrappedFdoc//// version of it.doc////doc//// # Examplesdoc////doc//// ```doc//// use futures::prelude::*;doc//// use futures::future;doc//// use futures::stream;doc////(doc/(((/// let stream_items = vec![17, 18, 19];(Rdoc/RRR/// let future_of_a_stream = future::ok::<_, bool>(stream::iter_ok(stream_items));Rdoc////5doc/555/// let stream = future_of_a_stream.flatten_stream();5doc////!doc/!!!/// let mut iter = stream.wait();!-doc/---/// assert_eq!(Ok(17), iter.next().unwrap());--doc/---/// assert_eq!(Ok(18), iter.next().unwrap());--doc/---/// assert_eq!(Ok(19), iter.next().unwrap());-"doc0"""/// assert_eq!(None, iter.next());"doc0/// ```   !     ђ self +self "  Idoc0III/// Fuse a future such that `poll` will never again be called once it hasIdoc0/// completed.doc0///>doc0>>>/// Currently once a future has returned `Ready` or `Err` from>Hdoc0HHH/// `poll` any further calls could exhibit bad behavior such as blockingHHdoc0HHH/// forever, panicking, never returning, etc. If it is known that `poll`HJdoc0JJJ/// may be called too often then this method can be used to ensure that itJdoc0/// has defined semantics.doc0///Kdoc0KKK/// Once a future has been `fuse`d and it returns a completion from `poll`,KCdoc0CCC/// then it will forever return `NotReady` from `poll` again (neverCEdoc0EEF/// resolve). This, unlike the trait\'s `poll` method, is guaranteed.Edoc0///Kdoc0KKL/// This combinator will drop this future as soon as it\'s been completed toK7doc0777/// ensure resources are reclaimed as soon as possible.7doc0///doc0/// # Examplesdoc0/// doc0   /// ```rust doc0/// use futures::prelude::*;doc0/// use futures::future;doc0////doc0////// let mut future = future::ok::(2);/3doc0333/// assert_eq!(future.poll(), Ok(Async::Ready(2)));3doc0///1doc0111/// // Normally, a call such as this would panic:1doc0/// //future.poll();doc0///0doc0000/// // This, however, is guaranteed to not panic06doc0666/// let mut future = future::ok::(2).fuse();63doc0333/// assert_eq!(future.poll(), Ok(Async::Ready(2)));33doc0333/// assert_eq!(future.poll(), Ok(Async::NotReady));3doc0/// ```     .+   UU  selff    +! selff #   :doc0:::/// Do something with the item of a future, passing it on.:doc0///Ddoc0DDE/// When using futures, you\'ll often chain several of them together.DOdoc0OOP/// While working on such code, you might want to check out what\'s happening atOJdoc0JJJ/// various parts in the pipeline. To do that, insert a call to inspect().Jdoc0///doc0/// # Examplesdoc0///doc0/// ```doc0/// use futures::prelude::*;doc0/// use futures::future;doc0///+doc0+++/// let future = future::ok::(1);+Ndoc0NNP/// let new_future = future.inspect(|&x| println!(\"about to resolve: {}\", x));N)doc0)))/// assert_eq!(new_future.wait(), Ok(1));)doc0/// ```   F         B+    self f     +   Bself &  6doc1666/// Catches unwinding panics while polling the future.6doc1///Kdoc1KKK/// In general, panics within a future can propagate all the way out to theKJdoc1JJJ/// task level. This combinator makes it possible to halt unwinding withinJJdoc1JJL/// the future itself. It\'s most commonly used within task executors. It\'sJ3doc1333/// not recommended to use this for error handling.3doc1///Kdoc1KKK/// Note that this method requires the `UnwindSafe` bound from the standardKFdoc1FFG/// library. This isn\'t always applied automatically, and the standardFCdoc1CCC/// library provides an `AssertUnwindSafe` wrapper type to apply itCKdoc1KKK/// after-the fact. To assist using this method, the `Future` trait is alsoKHdoc1HHH/// implemented for `AssertUnwindSafe` where `F` implements `Future`.Hdoc1///Ddoc1DDD/// This method is only available when the `use_std` feature of thisD9doc1999/// library is activated, and it is activated by default.9doc1///doc1/// # Examplesdoc1/// doc1   /// ```rust doc1/// use futures::prelude::*; .doc1.../// use futures::future::{self, FutureResult};. doc1/// /doc1////// let mut future = future::ok::(2);/ 2doc1222/// assert!(future.catch_unwind().wait().is_ok());2 doc1/// @doc1@@@/// let mut future = future::lazy(|| -> FutureResult {@ Ādoc1ĀĀ/// panic!();Ā ڀ!doc1ڀ!ڀ!!/// future::ok::(2)ڀ! doc1/// }); 3doc1333/// assert!(future.catch_unwind().wait().is_err());3 ādoc1āā/// ```ā ҁcfg1Ձց featureށ use_stdЁ   - ނނ $  self  self %  ȏ_ Kdoc1KKK/// Create a cloneable handle to this future where all handles will resolveK уdoc1уу/// to the same result.у doc1/// Fdoc1FFF/// The shared() method provides a method to convert any future into aF Kdoc1KKK/// cloneable future. It enables a future to be polled by multiple threads.K doc1/// ;doc1;;;/// The returned `Shared` future resolves successfully with; ؅Ldoc1؅L؅LL/// `SharedItem` or erroneously with `SharedError`.؅L Jdoc1JJJ/// Both `SharedItem` and `SharedError` implements `Deref` to allow sharedJ Bdoc1BBB/// access to the underlying result. Ownership of `Self::Item` andB 0doc1000/// `Self::Error` cannot currently be reclaimed.0 doc1/// Ddoc1DDD/// This method is only available when the `use_std` feature of thisD ň9doc1ň9ň99/// library is activated, and it is activated by default.ň9 doc1/// doc1/// # Examples doc1/// doc1/// ``` doc1/// use futures::prelude::*; Ӊdoc1ӉӉ/// use futures::future;Ӊ doc1/// *doc1***/// let future = future::ok::<_, bool>(6);* "doc1"""/// let shared1 = future.shared();" Ί"doc1Ί"Ί""/// let shared2 = shared1.clone();Ί" ,doc1,,,/// assert_eq!(6, *shared1.wait().unwrap());, ,doc1,,,/// assert_eq!(6, *shared2.wait().unwrap());, ׋doc1׋׋/// ```׋ doc1/// doc1/// ``` doc1/// use std::thread; doc1/// use futures::prelude::*; doc1/// use futures::future; Όdoc1ΌΌ///Ό ֌*doc1֌*֌**/// let future = future::ok::<_, bool>(6);֌* "doc2"""/// let shared1 = future.shared();" "doc2"""/// let shared2 = shared1.clone();" Ӎ-doc2Ӎ-Ӎ--/// let join_handle = thread::spawn(move || {Ӎ- 0doc2000/// assert_eq!(6, *shared2.wait().unwrap());0 doc2/// }); Ǝ,doc2Ǝ,Ǝ,,/// assert_eq!(6, *shared1.wait().unwrap());Ǝ,  doc2   /// join_handle.join().unwrap(); doc2/// ``` cfg2 feature use_std    % ȏ_ۏ  selfҏ ȏ_+  'a 2'aF I!2 2 self ! 12S 'a 4 tĐ Đ   2֒T   Đ ABF   Đ Đ  Đ  2ޔ 8doc2888/// Class of types which can be converted into a future.8 doc2/// Pdoc2PPP/// This trait is very similar to the `IntoIterator` trait and is intended to beP #doc2###/// used in a very similar fashion.#Self  8* ƕ ו ހ    ޔ8ǀ*Հƕו  |8 4doc2444/// The future that this type can be converted into.4o[ .doc2.../// The item that the future may resolve with..iU /doc2////// The error that the future may resolve with./jVself  % /doc2////// Consumes this object and produces a future./  zVٗ 2ԗ F ٗ ܗ@2 2 2 self  2Ř.  % 2 TE  O#2! 2ҙ 2 self  2G   *   ԛ Ś,doc3Ś,Ś,,/// Asynchronous conversion from a type `T`.Ś, doc3/// Ldoc3LLL/// This trait is analogous to `std::convert::From`, adapted to asynchronousL Ûdoc3ÛÛ/// computation.ÛSelfT     2Î$Î  Î      ԛ  2Վ$  &2 "doc3"""/// The future for the conversion."]I ؜&doc3؜&؜&&/// Possible errors during conversion.؜&aM Î  ϝ" 6doc3666/// Consume the given value, beginning the conversion.6   ]  4doc3444/// A trait for types which can spawn fresh futures.4 doc3/// Mdoc3MMO/// This trait is typically implemented for \"executors\", or those types whichM Gdoc3GGG/// can execute futures to completion. Futures passed to `Spawn::spawn`G ğIdoc3ğIğII/// typically get turned into a *task* and are then driven to completion.ğI doc3/// Pdoc3PPP/// On spawn, the executor takes ownership of the future and becomes responsibleP Idoc3III/// to call `Future::poll()` whenever a readiness notification is raised.ISelfF á ʡ  ա    áۙʡ ա &Dselffuture     - < ?doc4???/// Spawns a future to run on this `Executor`, typically in the? doc4/// \"background\". ¢doc4¢¢///¢ ʢKdoc4ʢKʢKK/// This function will return immediately, and schedule the future `future`ʢK Idoc4III/// to run on `self`. The details of scheduling and execution are left toI Ldoc4LLL/// the implementations of `Executor`, but this is typically a primary pointL Hdoc4HHH/// for injecting concurrency in a futures-based system. Futures spawnedH Jdoc4JJK/// through this `execute` function tend to run concurrently while they\'reJ եdoc4եե/// waiting on events.ե doc4///  doc4   /// # Errors doc4/// Jdoc4JJJ/// Implementers of this trait are allowed to reject accepting this futureJ 8doc4888/// as well. This can happen for various reason such as:8 doc4/// doc4/// * The executor is shut down ɧ=doc4ɧ=ɧ==/// * The executor has run out of capacity to execute futuresɧ= doc4/// Kdoc4KKK/// The decision is left to the caller how to work with this form of error.K Ldoc4LLL/// The error returned transfers ownership of the future back to the caller.L       ªI 5doc4555/// Errors returned from the `Spawn::spawn` function.5 F ª \2˪  2ڪ& ׯ2үĩF ׯ5kindfuture ĩ   doc4/// Create a new `ExecuteError`  kFself ĩ @ /doc4////// Returns the associated reason for the error/  V selfĩ  9 Cdoc4CCC/// Consumes self and returns the original future that was spawned.C  jAĩ2ĩF 2selffܬ  2  + SkipWhile(Fold' FutureSender. Empty'Concatstd FilterMap'OrElse( CatchUnwind.Forward(Receiver. IterResult& ReuniteError Then(Chunks. IterStream&ForEach' SplitSink. Select(Concat2Merge'AndThen&futures_ordered-Skip(Inspect'once  IntoFuture repeatFuse' InspectErr' TakeWhile(Wait. ReuniteError+ PollFn(Chain'channel*Sender.IterOk&Zip(Flatten'Repeat&Collect. SplitStream. FromErr'Unfold(SinkFuturesUnordered,)Filter' iter_result StreamFuture'Map'iter_okPoll MergedItem' unfoldemptyBuffered(poll_fn iterFuturesOrdered-Peekable(MapErr'Take(Once' SendError* BufferUnordered)'Iter&C 3 Ϻdoc5ϺϺ//! Asynchronous streamsϺ doc5//! Mdoc5MMM//! This module contains the `Stream` trait and a number of adaptors for thisM Mdoc5MMM//! trait. This trait is very similar to the `Iterator` trait in the standardM Ndoc5NNN//! library except that it expresses the concept of blocking as well. A streamN ׼Ndoc5׼N׼NN//! here is a sequential sequence of values which may take some amount of time׼N doc5//! in between to produce. doc5//! ŽOdoc5ŽOŽOO//! A stream may request that it is blocked between values while the next valueŽO Ldoc5LLL//! is calculated, and provides a way to get notified once the next value isL doc5//! ready as well. doc5//! Ddoc5DDD//! You can find more information/tutorials about streams [online atD doc5//! https://tokio.rs][online] ܿdoc5ܿܿ//!ܿ Fdoc5FFF//! [online]: https://tokio.rs/docs/getting-started/streams-and-sinks/F (()))***++-----..................  Pollڅ IterResult&  iter_result Stream iter_result j   deprecated5 note53implementation moved to `iter_ok` and `iter_result`L …allow5Dž҅ȅ deprecated&&3implementation moved to `iter_ok` and `iter_result`  ӌ֌ٌiJ&# njz Odoc5OOO/// Converts an `Iterator` over `Result`s into a `Stream` which is always readyO ͈doc5͈͈/// to yield the next value.͈ doc5/// Pdoc5PPQ/// Iterators in Rust don\'t express the ability to block, so this adapter simplyP 0doc5000/// always calls `iter.next()` and returns that.0 doc5///  doc5   /// ```rust doc5/// use futures::*; doc5/// Ddoc5DDD/// let mut stream = stream::iter(vec![Ok(17), Err(false), Ok(19)]);D ݊:doc5݊:݊::/// assert_eq!(Ok(Async::Ready(Some(17))), stream.poll());݊: *doc5***/// assert_eq!(Err(false), stream.poll());* Ë:doc5Ë:Ë::/// assert_eq!(Ok(Async::Ready(Some(19))), stream.poll());Ë: 6doc5666/// assert_eq!(Ok(Async::Ready(None)), stream.poll());6 doc5/// ``` inline5 3implementation moved to `iter_ok` and `iter_result`   JTE ӌ ֌ ٌ##    52ȍˍ΍&IÍ3implementation moved to `iter_ok` and `iter_result`ITE! ˍ ΍! ȍ523implementation moved to `iter_ok` and `iter_result` O53implementation moved to `iter_ok` and `iter_result` O5self   ʎF inline6 3implementation moved to `iter_ok` and `iter_result`   Ҏ5 Async!PollStreammarker  H && i&#   @doc6@@@/// Converts an `Iterator` into a `Stream` which is always ready@ doc6/// to yield the next value. ͒doc6͒͒///͒ ђIdoc6ђIђIJ/// Iterators in Rust don\'t express the ability to block, so this adapterђI 7doc6777/// simply always calls `iter.next()` and returns that.7 ӓdoc6ӓӓ///ӓ ד doc6ד ד  /// ```rustד doc6/// use futures::*; doc6/// <doc6<<(vec![17, 19]);< :doc6:::/// assert_eq!(Ok(Async::Ready(Some(17))), stream.poll());: :doc6:::/// assert_eq!(Ok(Async::Ready(Some(19))), stream.poll());: 6doc6666/// assert_eq!(Ok(Async::Ready(None)), stream.poll());6 doc6/// ```  IE #  #& IE ȗV#ؗ! self !  ,a  0  PollStreamAsync!5&&i& Ο Odoc7OOO/// Converts an `Iterator` over `Result`s into a `Stream` which is always readyO כdoc7ככ/// to yield the next value.כ doc7/// Pdoc7PPQ/// Iterators in Rust don\'t express the ability to block, so this adapter simplyP ɜ0doc7ɜ0ɜ00/// always calls `iter.next()` and returns that.ɜ0 doc7///  doc7   /// ```rust doc7/// use futures::*; doc7/// Kdoc7KKK/// let mut stream = stream::iter_result(vec![Ok(17), Err(false), Ok(19)]);K :doc7:::/// assert_eq!(Ok(Async::Ready(Some(17))), stream.poll());: *doc7***/// assert_eq!(Err(false), stream.poll());* Ԟ:doc7Ԟ:Ԟ::/// assert_eq!(Ok(Async::Ready(Some(19))), stream.poll());Ԟ: 6doc7666/// assert_eq!(Ok(Async::Ready(None)), stream.poll());6 Ɵdoc7ƟƟ/// ```Ɵ   JTE  !  2& ITE  u2͡  self      6 Async!PollStreammarker ޣ H && item &   ۪ <doc9<<(10);3 :doc9:::/// assert_eq!(Ok(Async::Ready(Some(10))), stream.poll());: ݩ:doc9ݩ:ݩ::/// assert_eq!(Ok(Async::Ready(Some(10))), stream.poll());ݩ: :doc9:::/// assert_eq!(Ok(Async::Ready(Some(10))), stream.poll());: Ӫdoc9ӪӪ/// ```Ӫ   TE     #TE  V#  self ! 8Ϭu   ׬0  Future٭Poll IntoFutureͭ StreamAsync!_ &&" sf &    ְ    SFU         α  ٱ2²ŲSFU  ² Ųш l2self    ܳ8 Idoc:III/// Acquires a reference to the underlying stream that this combinator isI Ƴdoc:ƳƳ/// pulling from.Ƴ     self    D Cdoc:CCC/// Acquires a mutable reference to the underlying stream that thisC doc:/// combinator is pulling from. doc:/// Idoc:III/// Note that care must be taken to avoid tampering with the state of theI ܵ7doc:ܵ7ܵ77/// stream which may otherwise confuse this combinator.ܵ7     self  Ƹ8 >doc:>>>/// Consumes this combinator, returning the underlying stream.> doc:/// Hdoc:HHH/// Note that this may discard intermediate state of this combinator, soH Gdoc:GGG/// care should be taken to avoid losing resources when this is called.G    ùSFU   ùшƹ   2  selfitemڌ! &ٺ    6 selfڌ! a    5 selfڌޗ ȼQ    Ѽ5 SFU߈ Խ ш 2 ƾselfڌ! &    6 Pollmem  StreamAsync!E ''''  s1s2S1S2'  S1S2  &  %S1S2 &Ϟݞp%self ! 8 1  DebugAFutureDefaultPoll FmtResultA FormatterA mem  StreamAsync!  ''''=G Mdoc>MMM/// A stream combinator to concatenate the results of a stream into the firstM doc>/// yielded item. doc>/// >doc>>>>/// This structure is produced by the `Stream::concat` method.> must_use>" streams do nothing unless polled0 S  '  AS A AWselffmt     , s     S ##3# oS 3ի Wself ! 1  , F Mdoc@MMM/// A stream combinator to concatenate the results of a stream into the firstM doc@/// yielded item. doc@/// >doc@>>>/// This structure is produced by the `Stream::concat` method.>   deprecated@ since0.1.18 note&$please use `Stream::Concat2` insteadJ must_use@" streams do nothing unless polled00.1.18$please use `Stream::Concat2` instead S  -0.1.18$please use `Stream::Concat2` instead֨ G-Aɳ allow@ deprecatedɳS Ω8selffmt ɳ    , s ɳ   allow@ deprecated  S 3ի 8ɳ allowA deprecatedɳS 3ի 8self ɳ!ɳɳ 1  , s ֨    S 3ի N֨ ֨S 3ի O  self ֨!֨֨ 1  , Async!PollStreammarker  H '' '   P 0docC000/// Creates a stream which contains no elements.0 docC/// EdocCEEE/// The returned stream will always return `Ready(None)` when polled.E   TE   #TE  N#  self ! 8b   0  PollStreamAsync!5 '' sf '      SF      #SF  M#self Պ 8 IdocDIII/// Acquires a reference to the underlying stream that this combinator isI docD/// pulling from.     self   D CdocECCC/// Acquires a mutable reference to the underlying stream that thisC docE/// combinator is pulling from. docE/// IdocEIII/// Note that care must be taken to avoid tampering with the state of theI 7docE 7 77/// stream which may otherwise confuse this combinator. 7      self   8 >docE > >>/// Consumes this combinator, returning the underlying stream. > docE  ///  HdocE H HH/// Note that this may discard intermediate state of this combinator, so H ‚ GdocE‚ G‚ GG/// care should be taken to avoid losing resources when this is called.‚ G       SF  ޕ Z#Ʉ  selfitem      1  selfޗ  a    0  selfޗ  Q    0  ׇ ڇ ҇ SF  ڇ    ׇ f# ψ self!ʽ      1  Poll Stream Async! 5'' Î Ǝ Ɏ sf '        SFB Î  Ǝ  Ɏ     2   SF  M#self Պ  8 IdocG I II/// Acquires a reference to the underlying stream that this combinator is I Ր docGՐ Ր /// pulling from.Ր       self   D CdocG C CC/// Acquires a mutable reference to the underlying stream that this C docG  /// combinator is pulling from.  docG  ///  IdocG I II/// Note that care must be taken to avoid tampering with the state of the I 7docG 7 77/// stream which may otherwise confuse this combinator. 7      self  Օ 8 >docG > >>/// Consumes this combinator, returning the underlying stream. > docG  ///  HdocG H HH/// Note that this may discard intermediate state of this combinator, so H GdocG G GG/// care should be taken to avoid losing resources when this is called. G    ̖ ϖ ǖ SF ̖  ϖ ޕ Z#  selfitem ؗ     1  selfޗ  a    0  selfޗ Ǚ Q   Й 0     SFB  Қ   }2   self!       6 Poll Stream͞ Async! 5  ''   s '     S ȡ   a   S  >self Պ  8 IdocI I II/// Acquires a reference to the underlying stream that this combinator is I У docIУ У /// pulling from.У       self   D CdocI C CC/// Acquires a mutable reference to the underlying stream that this C docI  /// combinator is pulling from.  docI  ///  IdocI I II/// Note that care must be taken to avoid tampering with the state of the I 7docI 7 77/// stream which may otherwise confuse this combinator. 7      self  Ш 8 >docI > >>/// Consumes this combinator, returning the underlying stream. > docI  ///  HdocI H HH/// Note that this may discard intermediate state of this combinator, so H GdocJ G GG/// care should be taken to avoid losing resources when this is called. G    ǩ ©  S ǩ ޕ  K      selfitem Ԫ      , selfޗ ܫ a     + selfޗ ì Q   ̬  +   S í ޭ  O &  ͮ (  self! 2      , Async!dz  Future  Poll  IntoFuture  mem  Streamӳ  o '''' $ Ѹ Ը ׸ ܸ sft T'  Fut )Ƹ    SFFutT Ѹ  Ը  ׸  ܸ      ҹ ݹ  C     SFFutT ˄ͻ          C      self ! % Ҽ    ڼ  ; Future  Poll  IntoFuture  Stream  Async!  _ ''     sf '         SFU      ш '  ߈ 2     SFU   ߈    ш &  2      self          6 PhantomData  Poll  PhantomData  Stream  Async!  f  ''     stream '       SE   W #    SE  M#self Պ  8 IdocP I II/// Acquires a reference to the underlying stream that this combinator is I docP  /// pulling from.         self   D CdocP C CC/// Acquires a mutable reference to the underlying stream that this C docP  /// combinator is pulling from.  docP  ///  IdocP I II/// Note that care must be taken to avoid tampering with the state of the I 7docP 7 77/// stream which may otherwise confuse this combinator. 7        self   8 >docP > >>/// Consumes this combinator, returning the underlying stream. > docP  ///  HdocP H HH/// Note that this may discard intermediate state of this combinator, so H GdocP G GG/// care should be taken to avoid losing resources when this is called. G          SE     h#       selfĕ         1     SE  ޕ b#      selfitemĕ! 2       1  selfĕ  d      0  selfĕ  T      0  Poll  Stream  Async!  5 ''   '    S ޕ C      selfitem        , selfЦޗ  a     + selfЦޗ  Q     + s    N  S  :   S  ?      selfЦ       ,   S 8self   7 >docS > >>/// Returns whether the underlying stream has finished or not. > docS  ///  DdocS D DD/// If this method returns `true`, then all future calls to poll are D BdocS B BB/// guaranteed to return `None`. If this returns `false`, then the B &docS & &&/// underlying stream is still in use. &      selfՊ  8 IdocS I II/// Acquires a reference to the underlying stream that this combinator is I docS  /// pulling from.       selfЦ  D CdocS C CC/// Acquires a mutable reference to the underlying stream that this C docS  /// combinator is pulling from.  docS  ///  IdocS I II/// Note that care must be taken to avoid tampering with the state of the I 7docS 7 77/// stream which may otherwise confuse this combinator. 7      self   8 >docT > >>/// Consumes this combinator, returning the underlying stream. > docT  ///  HdocT H HH/// Note that this may discard intermediate state of this combinator, so H GdocT G GG/// care should be taken to avoid losing resources when this is called. G    Future  Poll  Stream  Async!  H ''   s '   W  S  :  S 6self Պ  H IdocT I II/// Acquires a reference to the underlying stream that this combinator is I docT  /// pulling from.  docT  ///  QdocT Q QR/// This method returns an `Option` to account for the fact that `StreamFuture`\'s Q SdocT S SS/// implementation of `Future::poll` consumes the underlying stream during polling  S OdocT O OO/// in order to return it to the caller of `Future::poll` if the stream yielded O docT  /// an element.       self  ǀ P CdocT C CC/// Acquires a mutable reference to the underlying stream that this C docT  /// combinator is pulling from.  docT  ///  IdocT I II/// Note that care must be taken to avoid tampering with the state of the I 7docT 7 77/// stream which may otherwise confuse this combinator. 7 docT  ///  QdocT Q QR/// This method returns an `Option` to account for the fact that `StreamFuture`\'s Q SdocT S SS/// implementation of `Future::poll` consumes the underlying stream during polling  S OdocT O OO/// in order to return it to the caller of `Future::poll` if the stream yielded O docT  /// an element.    ր    self   @ >docT > >>/// Consumes this combinator, returning the underlying stream. > docT  ///  HdocT H HH/// Note that this may discard intermediate state of this combinator, so H GdocT G GG/// care should be taken to avoid losing resources when this is called. G docT  ///  QdocT Q QR/// This method returns an `Option` to account for the fact that `StreamFuture`\'s Q ߃ SdocT߃ S߃ SS/// implementation of `Future::poll` consumes the underlying stream during polling ߃ S OdocT O OO/// in order to return it to the caller of `Future::poll` if the stream yielded O docT  /// an element.         S  ? !ʽ       self! + ۆ      , Poll  Stream  Async!  5 ''    streamf '       SF  ԍ    s #ʎ Վ  Ŏ  SF ʎ ͎  Վ U#self Պ Џ 8 IdocV I II/// Acquires a reference to the underlying stream that this combinator is I docV  /// pulling from.     ߏ    self   D CdocV C CC/// Acquires a mutable reference to the underlying stream that this C ֐ docV֐ ֐ /// combinator is pulling from.֐  docV  ///  IdocV I II/// Note that care must be taken to avoid tampering with the state of the I Б 7docVБ 7Б 77/// stream which may otherwise confuse this combinator.Б 7        self   8 ֒ >docV֒ >֒ >>/// Consumes this combinator, returning the underlying stream.֒ > docV  ///  HdocV H HH/// Note that this may discard intermediate state of this combinator, so H GdocV G GG/// care should be taken to avoid losing resources when this is called. G          SF  ޕ  b#      selfitem  Ė     Җ  1  selfޗ  ̗ a    ݗ  0  selfޗ  Q      0     SFә  Ι  f#      self        1  Pollœ  Stream  # ''    streamf '   ՞    SF         #    SF   U#self Պ  8 IdocX I II/// Acquires a reference to the underlying stream that this combinator is I docX  /// pulling from.         self  ף D ١ CdocY١ C١ CC/// Acquires a mutable reference to the underlying stream that this١ C docY  /// combinator is pulling from.  Ţ docYŢ Ţ ///Ţ  ͢ IdocY͢ I͢ II/// Note that care must be taken to avoid tampering with the state of the͢ I 7docY 7 77/// stream which may otherwise confuse this combinator. 7        self   8 >docY > >>/// Consumes this combinator, returning the underlying stream. > docY  ///  HdocY H HH/// Note that this may discard intermediate state of this combinator, so H GdocY G GG/// care should be taken to avoid losing resources when this is called. G          SF  ޕ  b# ͧ      selfitem        1  selfޗ  a      0  selfޗ  Q      0  ۪ ު  ֪  SF ު    ۪ f#    Ы   self        1  Poll  Stream  Async!  5 ''  ʯ ͯ Я sf '        SFU ʯ  ͯ  Я    2ް   ٰ  SF ް  M#self Պ ر 8 Idoc[ I II/// Acquires a reference to the underlying stream that this combinator is I ± doc[± ± /// pulling from.±         self   D Cdoc[ C CC/// Acquires a mutable reference to the underlying stream that this C ޲ doc[޲ ޲ /// combinator is pulling from.޲  doc[  ///  Idoc[ I II/// Note that care must be taken to avoid tampering with the state of the I س 7doc[س 7س 77/// stream which may otherwise confuse this combinator.س 7        self  ¶ 8 ޴ >doc[޴ >޴ >>/// Consumes this combinator, returning the underlying stream.޴ > doc[  ///  Hdoc[ H HH/// Note that this may discard intermediate state of this combinator, so H Gdoc[ G GG/// care should be taken to avoid losing resources when this is called. G          SF  ޕ Z#      selfitemĀ      ͸  1  selfĀޗ  ǹ a    ع  0  selfĀޗ  Q      0      SFUڻ    Ȼ  }2       selfĀ!  &        6 Poll  Stream½  # ''    sf '        SFU        2    SF  M#self Պ  8 Idoc] I II/// Acquires a reference to the underlying stream that this combinator is I doc]  /// pulling from.         self   D Cdoc] C CC/// Acquires a mutable reference to the underlying stream that this C doc]  /// combinator is pulling from.  doc]  ///  Idoc] I II/// Note that care must be taken to avoid tampering with the state of the I 7doc] 7 77/// stream which may otherwise confuse this combinator. 7        self   8 >doc] > >>/// Consumes this combinator, returning the underlying stream. > doc]  ///  Hdoc] H HH/// Note that this may discard intermediate state of this combinator, so H Gdoc] G GG/// care should be taken to avoid losing resources when this is called. G          SF  ޕ Z#      selfitem        1  selfޗ  a      0  selfޗ  Q      0      SFUǑ      }2       self   f       5 Poll  Fuse'  Stream  Async!  F   deprecated^    note  (&functionality provided by `select` now ?  allow^   deprecated  '' '' &functionality provided by `select` now   stream1stream2' % &functionality provided by `select` now S1S2Ϟ ݞ    ( %  ٦ &functionality provided by `select` now٦S1S2 ݞ   Ϟ (% +&functionality provided by `select` now'  R( &functionality provided by `select` now  B(self ٦!٦٦ 8 &functionality provided by `select` now    Z(  Poll  Stream  Async!  5 ''   item '    L &doca & &&/// Creates a stream of single element & doca  ///  doca  /// ```rust doca  /// use futures::*;  doca  ///  4doca 4 44/// let mut stream = stream::once::<(), _>(Err(17)); 4 'doca ' ''/// assert_eq!(Err(17), stream.poll()); ' 6doca 6 66/// assert_eq!(Ok(Async::Ready(None)), stream.poll()); 6 doca  /// ```    TE    #    TE  N#        self !   ,       1  Future  Poll  IntoFuture  Stream  Async!  _ ((      sf (         SFU     Ǒ ш   2   ׷  ׷SFU   ޕ ш y2      selfitem ׷         6 selfлޗ  a       5 selfлޗ  Q       5   ׷  ׷SFUǑ     ш  2       selfл         6 Poll  Fuse'  Stream  Async!  F (( "  stream (   |  S  :   S ޕ  K      selfitem        , selfޗ  a   Ѐ  + selfޗ  Q     +   S  ?      self! 2 ݂      ,   S  :self! &  ̈́ >docf̈́ >̈́ >>/// Peek retrieves a reference to the next item in the stream.̈́ > docf  ///  Idocf I II/// This method polls the underlying stream and return either a reference I Idocf I II/// to the next item if the stream is ready or passes through any errors. I      Poll  Stream  # ʉ )docgʉ )ʉ ))//! Definition of the `PollFn` combinatorʉ ) (( iP   fĐ (Đ  ֏ r ֋ Edocg֋ E֋ EE/// Creates a new stream wrapping around a function returning `Poll`.֋ E docg  ///  Bdocg B BB/// Polling the returned stream delegates to the wrapped function. B docg  ///  docg  /// # Examples  docg  ///  docg  /// ```  !docg ! !!/// use futures::stream::poll_fn; ! docg  /// use futures::{Async, Poll};  č docgč č ///č  ȍ docgȍ ȍ /// let mut counter = 1usize;ȍ  docg  ///  Odocg O OO/// let read_stream = poll_fn(move || -> Poll, std::io::Error> { O :docg : ::/// if counter == 0 { return Ok(Async::Ready(None)); } : docg  /// counter -= 1;  :docg : :dockɩ >ɩ >>/// Consumes this combinator, returning the underlying stream.ɩ > dock  ///  Hdock H HH/// Note that this may discard intermediate state of this combinator, so H Gdock G GG/// care should be taken to avoid losing resources when this is called. G       S ޕͬ C      selfitem       , selfޗ  a     + selfޗ  Q     +   S  ?      self  ԰    ܰ  , Async!  Future  Poll  IntoFuture  Stream  _ (( " ζ Ѷ Զ sp P( R ö   SPR ζ  Ѷ  Զ     %ɷ Է 2޸    ٸ  SPR ޸     t2self Պ  8 Idocm I II/// Acquires a reference to the underlying stream that this combinator is I docm  /// pulling from.       self   D Cdocm C CC/// Acquires a mutable reference to the underlying stream that this C docm  /// combinator is pulling from.  docm  ///  Idocm I II/// Note that care must be taken to avoid tampering with the state of the I 7docm 7 77/// stream which may otherwise confuse this combinator. 7   μ   self   8 >docm > >>/// Consumes this combinator, returning the underlying stream. > ̽ docm̽ ̽ ///̽  Խ HdocmԽ HԽ HH/// Note that this may discard intermediate state of this combinator, soԽ H Gdocm G GG/// care should be taken to avoid losing resources when this is called. G        ߿  SPR   ޕ   2      selfitem       6 selfޗ  a     5 selfޗ  Q     5    SPR        %  2      self       6 Poll  Stream  Async!  5 ((   samt (   }  S  :   S 6self Պ  8 Idocp I II/// Acquires a reference to the underlying stream that this combinator is I docp  /// pulling from.       self   D Cdocp C CC/// Acquires a mutable reference to the underlying stream that this C docp  /// combinator is pulling from.  docp  ///  Idocp I II/// Note that care must be taken to avoid tampering with the state of the I 7docp 7 77/// stream which may otherwise confuse this combinator. 7      self   8 >docp > >>/// Consumes this combinator, returning the underlying stream. > docp  ///  Hdocp H HH/// Note that this may discard intermediate state of this combinator, so H Gdocp G GG/// care should be taken to avoid losing resources when this is called. G       S ޕ  K      selfitem       , selfޗ  a     + selfޗ  Q     +   S  ?      self       , Future  Poll  IntoFuture  Stream  Async!  _ (("    sp (     SPR       %  2    SPR     t2self Պ  8 Idocs I II/// Acquires a reference to the underlying stream that this combinator is I docs  /// pulling from.     self   D Cdocs C CC/// Acquires a mutable reference to the underlying stream that this C docs  /// combinator is pulling from.  docs  ///  Idocs I II/// Note that care must be taken to avoid tampering with the state of the I 7docs 7 77/// stream which may otherwise confuse this combinator. 7    self   8 >docs > >>/// Consumes this combinator, returning the underlying stream. > docs  ///  Hdocs H HH/// Note that this may discard intermediate state of this combinator, so H Gdocs G GG/// care should be taken to avoid losing resources when this is called. G      SPR   ޕ   2  selfitem     6 selfޗ  a   5 selfޗ  Q   5    SPR        %  2  self     6 Future Poll  IntoFuture Stream Async! _ ((     sf (         SFU      % ص ш 2   ƴ ƴSFU   ޕ ш y2  selfitem ƴ       6 selfҸޗ  a     5 selfҸޗ ʁ Q    Ӂ 5   ƴ ƴSFU   ӂ ε % ш 2 ǃ selfҸ       6 Async!ۊ FutureNJ Poll  IntoFutureϊ mem Stream o (((($     initf (      Fdocy F FF/// Creates a `Stream` from a seed and a closure returning a `Future`. F ŋ docyŋ ŋ ///ŋ  ɋ Edocyɋ Eɋ EE/// This function is the dual for the `Stream::fold()` adapter: whileɋ E Qdocy Q QQ/// `Stream::fold()` reduces a `Stream` to one single value, `unfold()` creates a Q docy  /// `Stream` from a seed value.  docy  ///  Odocy O OO/// `unfold()` will call the provided closure with the provided seed, then wait OՍ OdocyՍ OՍ OO/// for the returned `Future` to complete with `(a, b)`. It will then yield theՍ O 6docy 6 66/// value `a`, and use `b` as the next internal state. 6܎ docy܎ ܎ ///܎  Pdocy P PP/// If the closure returns `None` instead of `Some(Future)`, then the `unfold()` P Kdocy K KK/// will stop producing items and return `Ok(Async::Ready(None))` in future K docy  /// calls to `poll()`.  docy  ///  Jdocy J JJ/// In case of error generated by the returned `Future`, the error will be J ;docy ; ;;/// returned by the `Stream`. The `Stream` will then yield ; 9docy 9 99/// `Ok(Async::Ready(None))` in future calls to `poll()`. 9ّ docyّ ّ ///ّ ݑ Mdocyݑ Mݑ MN/// This function can typically be used when wanting to go from the \"world ofݑ M Hdocy H HK/// futures\" to the \"world of streams\": the provided closure can build a H Mdocy M MM/// `Future` using other library functions working on futures, and `unfold()` M“ <docy“ <“ <((yielded, next_state)); Bі docyі і /// Some(fut)і  docy  /// } else {  docy  /// None  docy  /// }  docy  /// });  docy  ///  )docy ) ))/// let result = stream.collect().wait(); )ɗ *docyɗ *ɗ **/// assert_eq!(result, Ok(vec![0, 2, 4]));ɗ * docy  /// ```    ItTFFutIt       ʘ   ֘   +D     TFFutItל    ˜    D  self ! ,ǝ    ϝ ; Poll Fuse' Stream Async! F((   stream1stream2( %  S1S2Ϟ ݞ   ĭ i %  ܮ S1S2 ݞ   Ϟ h% ! self ! 8   1  Future  AsyncSink! Poll SinkԷ Fuse'ɷ Stream Async!  (('º ź streamsink U(  "   TU º  ź        #ļ Ǽ  TU Ǽ   ļ   s#self   !˾ G -doc~ - --/// Get a shared reference to the inner sink. - Tdoc~ T TT/// If this combinator has already been polled to completion, None will be returned. T  ۾   self   ! O .doc~ . ../// Get a mutable reference to the inner sink. .˿ Tdoc~˿ T˿ TT/// If this combinator has already been polled to completion, None will be returned.˿ T     self    ` /doc~ / ///// Get a shared reference to the inner stream. / Tdoc~ T TT/// If this combinator has already been polled to completion, None will be returned. T     self    h 0doc 0 00/// Get a mutable reference to the inner stream. 0 Tdoc T TT/// If this combinator has already been polled to completion, None will be returned. T     self      1  selfitem      1    TU      n#  self!     1  DdocڂDDD/// A stream of values, not all of which may have been produced yet.Ddocۂ///Mdoc܂MMM/// `Stream` is a trait to represent any source of sequential events or itemsMIdoc݂III/// which acts like an iterator but long periods of time may pass betweenIKdocނKKK/// items. Like `Future` the methods of `Stream` never block and it is thusKKdoc߂KKK/// suitable for programming in an asynchronous fashion. This trait is veryKKdocKKK/// similar to the `Iterator` trait in the standard library where `Some` isKMdocMMM/// used to signal elements of the stream and `None` is used to indicate thatMdoc/// the stream is finished.doc///PdocPPP/// Like futures a stream has basic combinators to transform the stream, performP doc   /// more work on each item, etc. doc///DdocDDD/// You can find more information/tutorials about streams [online atDdoc/// https://tokio.rs][online]doc///FdocFFF/// [online]: https://tokio.rs/docs/getting-started/streams-and-sinks/Fdoc///doc/// # Streams as Futuresdoc///PdocPPP/// Any instance of `Stream` can also be viewed as a `Future` where the resolvedPOdocOOO/// value is the next item in the stream along with the rest of the stream. TheONdocNNN/// `into_future` adaptor can be used here to convert any stream into a futureN?doc???/// for use with other future methods like `join` and `select`.?doc/// doc   /// # Errors doc///JdocJJJ/// Streams, like futures, can also model errors in their computation. AllJNdocNNN/// streams have an associated `Error` type like with futures. Currently as ofNMdocMMM/// the 0.1 release of this library an error on a stream **does not terminateMLdocLLL/// the stream**. That is, after one error is received, another error may beL?doc??@/// received from the same stream (it\'s valid to keep polling).?doc///NdocNNN/// This property of streams, however, is [being considered] for change in 0.2NMdocMMM/// where an error on a stream is similar to `None`, it terminates the streamMNdocNNN/// entirely. If one of these use cases suits you perfectly and not the other,NDdocDDD/// please feel welcome to comment on [the issue][being considered]!Ddoc///RdocRRR/// [being considered]: https://github.com/rust-lang-nursery/futures-rs/issues/206RSelf         '''9 7doc777/// The type of item this stream will yield on success.7s_ /doc////// The type of error this stream may generate./kWself ! &<JdocJJJ/// Attempt to pull out the next value of this stream, returning `None` ifJdoc/// the stream is finished.doc///IdocIII/// This method, like `Future::poll`, is the sole method of pulling out aIKdocKKK/// value from a stream. This method must also be run within the context ofKDdocDDD/// a task typically and implementors of this trait must ensure thatDJdocJJJ/// implementations of this method do not block, as it may cause consumersJdoc/// to behave badly.doc///doc/// # Return valuedoc///HdocHHI/// If `NotReady` is returned then this stream\'s next value is not readyHEdocEEE/// yet and implementations will ensure that the current task will beEIdocIII/// notified when the next value may be ready. If `Some` is returned thenIEdocEEE/// the returned value represents the next value on the stream. `Err`EIdocIII/// indicates an error happened, while `Ok` indicates whether there was aI@doc@@@/// new item on the stream or whether the stream has terminated.@doc/// doc   /// # Panics doc///GdocGGG/// Once a stream is finished, that is `Ready(None)` has been returned,GJdocJJL/// further calls to `poll` may result in a panic or other \"bad behavior\".JHdocHHH/// If this is difficult to guard against then the `fuse` adapter can beHAdocAAA/// used to ensure that `poll` always has well-defined semantics.A   self .  YJdocJJJ/// Creates an iterator which blocks the current thread until each item ofJdoc/// this stream is resolved.doc///CdocCCC/// This method will consume ownership of this stream, returning anCHdocHHH/// implementation of a standard iterator. This iterator will *block theHJdocJJK/// current thread* on each call to `next` if the item in the stream isn\'tJdoc/// ready yet.doc///HdocHHH/// > **Note:** This method is not appropriate to call on event loops orHHdocHHH/// > similar I/O situations because it will prevent the eventHHdocHHH/// > loop from making progress (this blocks the thread). ThisHJdocJJK/// > method should only be called when it\'s guaranteed that theJKdocKKK/// > blocking work associated with this stream will be completedK"doc"""/// > by another thread."doc///DdocDDD/// This method is only available when the `use_std` feature of thisD9docƒ999/// library is activated, and it is activated by default.9docÃ/// docă   /// # Panics docŃ///IdocƃIII/// The returned iterator does not attempt to catch panics. If the `poll`IGdocǃGGG/// function panics, panics will be propagated to the caller of `next`.Gcfgȃ feature use_std   ЀЀƀƀ * ԀۀY  self ЀY self   -Edoc݃EEE/// Convenience function for turning this stream into a trait object.Edocރ///Kdoc߃KKK/// This simply avoids the need to write `Box::new` and can often help withKHdocHHH/// type inference as well by always returning a trait object. Note thatHЂJdocЂJЂJJ/// this method requires the `Send` bound and returns a `BoxStream`, whichЂJJdocJJK/// also encodes this. If you\'d like to create a `Box` without theJCdocCCC/// `Send` bound, then the `Box::new` function can be used instead.Cdoc///DdocDDD/// This method is only available when the `use_std` feature of thisD9doc999/// library is activated, and it is activated by default.9ŅdocŅŅ///Ņͅdocͅͅ/// # Examplesͅdoc///doc/// ```doc/// use futures::stream::*;doc/// use futures::sync::mpsc;doc///%doc%%%/// let (_tx, rx) = mpsc::channel(1);%+doc+++/// let a: BoxStream = rx.boxed();+doc/// ```cfg feature use_stdŇdocȇχɇ hiddenÇ؇  deprecatedˉ noteremoved without replacement, recommended to use a \ local extension trait or function if needed, more \ details in https://github.com/rust-lang-nursery/futures-rs/issues/228ևԉallowىډ deprecated҉removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228     Êڊڊڊڊ  ڊ ڊ" selfڊ ڊ   ڊ self '  j)doc)))/// Converts this stream into a `Future`.)doc///NdocNNN/// A stream can be viewed as a future which will resolve to a pair containingNKdocKKK/// the next element of the stream plus the remaining stream. If the streamKیKdocیKیKK/// terminates, then the next element is `None` and the remaining stream isیK=doc===/// still passed back, to allow reclamation of its resources.=doc///NdocNNN/// The returned future can be used to compose streams and futures together byNȎ3docȎ3Ȏ35/// placing everything into the \"world of futures\".Ȏ3   ߏߏӏӏ  j self ߏj  selff Đ ' Đ  :doc:::/// Converts a stream of type `T` to a stream of type `U`.:doc///HdocHHH/// The provided closure is executed over all elements of this stream asHJdocJJJ/// they are made available, and the callback will be executed inline withJӑdocӑӑ/// calls to `poll`.ӑdoc///GdocGGG/// Note that this function consumes the receiving stream and returns aGGdocGGG/// wrapped version of it, similar to the existing `map` methods in theGdoc/// standard library.doc///doc/// # Examplesdoc///ɓdocɓɓ/// ```ɓՓdocՓՓ/// use futures::prelude::*;Փdoc/// use futures::sync::mpsc;doc///,doc,,,/// let (_tx, rx) = mpsc::channel::(1);,ДdocДД/// let rx = rx.map(|x| x + 3);Дdoc„/// ```  Đ UF Đ Đ ϕ   Đ   selfĐ f Đ   &Eselff Đ ' Đ  FdocFFF/// Converts a stream of error type `T` to a stream of error type `U`.Fdoc///FdocFFF/// The provided closure is executed over all errors of this stream asFJdocJJJ/// they are made available, and the callback will be executed inline withJdoc/// calls to `poll`.doc///GdocGGG/// Note that this function consumes the receiving stream and returns aGKdocKKK/// wrapped version of it, similar to the existing `map_err` methods in theKdoc/// standard library.ۙdocۙۙ///ۙdoc/// # Examplesdoc///doc/// ```doc/// use futures::prelude::*;doc/// use futures::sync::mpsc;̚doc̚̚///̚Ԛ,docԚ,Ԛ,,/// let (_tx, rx) = mpsc::channel::(1);Ԛ, doc   /// let rx = rx.map_err(|()| 3); doc/// ```  Đ UF ěĐ Đ  ŜŜ˜˜  Đ ̜̜Ӝ֛ selfǛĐ f͛ ŜĐ ˜  &Eselff '   ٜHdocٜHٜHH/// Filters the values produced by this stream according to the providedٜHdoc/// predicate.doc///LdocLLL/// As values of this stream are made available, the provided predicate willLHdocHHH/// be run against them. If the predicate returns `true` then the streamHߞGdocߞGߞGG/// will yield the value, but if the predicate returns `false` then theߞG@doc@@@/// value will be discarded and the next value will be produced.@doc///GdocGGG/// All errors are passed through without filtering in this combinator.GĠdocĠĠ///Ġ̠Gdoc̠G̠GG/// Note that this function consumes the receiving stream and returns a̠GJdocJJJ/// wrapped version of it, similar to the existing `filter` methods in theJdoc/// standard library.doc///doc/// # Examplesdoc///doc/// ```doc/// use futures::prelude::*;ѢdocѢѢ/// use futures::sync::mpsc;Ѣdoc///,doc,,,/// let (_tx, rx) = mpsc::channel::(1);,*doc***/// let evens = rx.filter(|x| x % 2 == 0);*ڣdocڣڣ/// ```ڣ   F    Ȃ Ӥ    self f    Aselff '   KdocKKK/// Filters the values produced by this stream while simultaneously mappingKץdocץץ/// them to a different type.ץdoc///KdocKKK/// As values of this stream are made available, the provided function willKѦKdocѦKѦKK/// be run on them. If the predicate returns `Some(e)` then the stream willѦKJdocJJJ/// yield the value `e`, but if the predicate returns `None` then the nextJdoc/// value will be produced.doc///GdocGGG/// All errors are passed through without filtering in this combinator.Gdoc///GdocGGG/// Note that this function consumes the receiving stream and returns aGNdocNNN/// wrapped version of it, similar to the existing `filter_map` methods in theNdoc/// standard library.doc///doc/// # Examplesdoc///ȪdocȪȪ/// ```ȪԪdocԪԪ/// use futures::prelude::*;Ԫdoc/// use futures::sync::mpsc;doc///,doc,,,/// let (_tx, rx) = mpsc::channel::(1);,ϫ,docϫ,ϫ,,/// let evens_plus_one = rx.filter_map(|x| {ϫ,doc/// if x % 0 == 2 {doc/// Some(x + 1)doc/// } else {ͬdocͬͬ/// Noneͬ doc   /// } doc/// });doc/// ```    FB   ϭ       self f  &Cselff (     KdocKKK/// Chain on a computation for when a value is ready, passing the resultingK%doc%%%/// item to the provided closure `f`.%doc///HdocHHH/// This function can be used to ensure a computation runs regardless ofHHdocHHH/// the next value on the stream. The closure provided will be yielded aHװLdocװLװLL/// `Result` once a value is ready, and the returned future will then be runװL;doc;;;/// to completion to produce the next value on this stream.;doc///KdocKKK/// The returned value of the closure must implement the `IntoFuture` traitKJdocJJJ/// and can represent some more work to be done before the composed streamJHdocHHH/// is finished. Note that the `Result` type implements the `IntoFuture`HܳGdocܳGܳGG/// trait so it is possible to simply alter the `Result` yielded to theܳGdoc/// closure and return it.ǴdocǴǴ///ǴϴGdocϴGϴGG/// Note that this function consumes the receiving stream and returns aϴGdoc/// wrapped version of it.doc///µdocµµ/// # Examplesµյdocյյ///յݵdocݵݵ/// ```ݵdoc/// use futures::prelude::*;doc/// use futures::sync::mpsc;doc///,doc,,,/// let (_tx, rx) = mpsc::channel::(1);,doc///doc/// let rx = rx.then(|result| {doc†/// match result {docÆ/// Ok(e) => Ok(e + 3),ϷdocĆϷϷ/// Err(()) => Err(4),Ϸ docņ   /// } docƆ/// });docdž/// ```    FU   ׸+  ш ӹӹٹٹɹɹ    ڹڹƘ self f ӹ ٹ &Xselff &     LdocLLL/// Chain on a computation for when a value is ready, passing the successfulL(doc(((/// results to the provided closure `f`.(doc///LdocLLL/// This function can be used to run a unit of work when the next successfulLLdocLLL/// value on a stream is ready. The closure provided will be yielded a valueLIdocIII/// when ready, and the returned future will then be run to completion toIݼ*docݼ*ݼ**/// produce the next value on this stream.ݼ*doc///IdocIII/// Any errors produced by this stream will not be passed to the closure,Idoc/// and will be passed through.doc///KdocKKK/// The returned value of the closure must implement the `IntoFuture` traitK޾Jdoc޾J޾JJ/// and can represent some more work to be done before the composed stream޾JHdocHHH/// is finished. Note that the `Result` type implements the `IntoFuture`HGdocGGG/// trait so it is possible to simply alter the `Result` yielded to theGdoc/// closure and return it.doc///GdocGGG/// Note that this function consumes the receiving stream and returns aGdoc/// wrapped version of it.doc///HdocHHH/// To process the entire stream and return a single future representingH-doc---/// success or error, use `for_each` instead.-doc///doc/// # Examplesdoc///doc/// ```doc/// use futures::prelude::*;doc/// use futures::sync::mpsc;doc///,doc,,,/// let (_tx, rx) = mpsc::channel::(1);,doc///#doc###/// let rx = rx.and_then(|result| {#doc/// if result % 2 == 0 {doc/// Ok(result)doc/// } else {doc/// Err(()) doc   /// } doc/// });doc/// ```    FU    ш       self f  '&Rselff (     Adoc҇AAA/// Chain on a computation for when an error happens, passing theA1docӇ111/// erroneous result to the provided closure `f`.1docԇ///OdocՇOOO/// This function can be used to run a unit of work and attempt to recover fromOJdocևJJJ/// an error if one happens. The closure provided will be yielded an errorJLdocׇLLL/// when one appears, and the returned future will then be run to completionL-doc؇---/// to produce the next value on this stream.-docه///KdocڇKKK/// Any successful values produced by this stream will not be passed to theK(docۇ(((/// closure, and will be passed through.(doc܇///Kdoc݇KKK/// The returned value of the closure must implement the `IntoFuture` traitKJdocއJJJ/// and can represent some more work to be done before the composed streamJHdoc߇HHH/// is finished. Note that the `Result` type implements the `IntoFuture`HGdocGGG/// trait so it is possible to simply alter the `Result` yielded to theGdoc/// closure and return it.doc///GdocGGG/// Note that this function consumes the receiving stream and returns aGdoc/// wrapped version of it.    FU     ш       self f   &\self .  bGdocGGG/// Collect all of the values of this stream into a vector, returning aG7doc777/// future representing the result of that computation.7doc///JdocJJJ/// This combinator will collect all successful results of this stream andJGdocGGG/// collect them into a `Vec`. If an error happens then allGFdocFFF/// collected elements will be dropped and the error will be returned.Fdoc///JdocJJJ/// The returned future will be resolved whenever an error happens or whenJ"doc"""/// the stream returns `Ok(None)`."doc///DdocDDD/// This method is only available when the `use_std` feature of thisD9doc999/// library is activated, and it is activated by default.9doc///doc/// # Examplesdoc///doc/// ```doc/// use std::thread;doc///doc/// use futures::prelude::*;doc/// use futures::sync::mpsc;doc///(doc(((/// let (mut tx, rx) = mpsc::channel(1);(doc///doc/// thread::spawn(|| {doc/// for i in (0..5).rev() {0doc000/// tx = tx.send(i + 1).wait().unwrap();0 doc   /// } doc/// });doc///"doc"""/// let mut result = rx.collect();"7doc777/// assert_eq!(result.wait(), Ok(vec![5, 4, 3, 2, 1]));7doc/// ```cfg feature use_std    * b  self b! self   @docˈ@@@/// Concatenate all results of a stream into a single extendable@@doc̈@@@/// destination, returning a future representing the end result.@doc͈///@docΈ@@@/// This combinator will extend the first item with the contents@AdocψAAA/// of all the successful results of the stream. If the stream isABdocЈBBB/// empty, the default value will be returned. If an error occurs,BCdocшCCC/// all the results will be dropped and the error will be returned.Cdoc҈///FdocӈFFF/// The name `concat2` is an intermediate measure until the release ofFDdocԈDDD/// futures 0.2, at which point it will be renamed back to `concat`.DdocՈ///docֈ/// # Examplesdoc׈///doc؈/// ```docو/// use std::thread;docڈ///docۈ/// use futures::prelude::*;doc܈/// use futures::sync::mpsc;doc݈///(docވ(((/// let (mut tx, rx) = mpsc::channel(1);(doc߈///doc/// thread::spawn(move || {doc/// for i in (0..3).rev() {doc/// let n = i * 3;DdocDDD/// tx = tx.send(vec![n + 1, n + 2, n + 3]).wait().unwrap();D doc   /// } doc/// });doc/// let result = rx.concat2();CdocCCC/// assert_eq!(result.wait(), Ok(vec![7, 8, 9, 4, 5, 6, 1, 2, 3]));Cdoc/// ```   ##6#     self @self   @doc@@@/// Concatenate all results of a stream into a single extendable@@doc@@@/// destination, returning a future representing the end result.@doc///@doc@@@/// This combinator will extend the first item with the contents@DdocDDD/// of all the successful results of the stream. If an error occurs,DCdocCCC/// all the results will be dropped and the error will be returned.Cdoc///doc/// # Examplesdoc///doc/// ```doc/// use std::thread;doc///doc/// use futures::prelude::*;doc/// use futures::sync::mpsc;doc///(doc(((/// let (mut tx, rx) = mpsc::channel(1);(doc///doc/// thread::spawn(move || {doc/// for i in (0..3).rev() {doc/// let n = i * 3;DdocDDD/// tx = tx.send(vec![n + 1, n + 2, n + 3]).wait().unwrap();D doc   /// } doc/// });doc/// let result = rx.concat();CdocCCC/// assert_eq!(result.wait(), Ok(vec![7, 8, 9, 4, 5, 6, 1, 2, 3]));Cdoc/// ```doc/// doc   /// # Panics doc///FdocFFG/// It\'s important to note that this function will panic if the streamF6doc666/// is empty, which is the reason for its deprecation.6  deprecated since0.1.14 note&$please use `Stream::concat2` insteadJallow deprecated0.1.14$please use `Stream::concat2` instead   6   ׁ  self !-selfinitf T '  Fut / Idoc҉III/// Execute an accumulating computation over a stream, collecting all theI!docӉ!!!/// values into one final result.!docԉ///FdocՉFFF/// This combinator will collect all successful results of this streamFLdoc։LLL/// according to the closure provided. The initial state is also provided toLLdoc׉LLL/// this method and then is returned again by each execution of the closure.LFdoc؉FFF/// Once the entire stream has been exhausted the returned future willFdocى/// resolve to this value.docډ///JdocۉJJJ/// If an error happens then collected state will be dropped and the errorJdoc܉/// will be returned.doc݉///docމ/// # Examplesdoc߉///doc/// ```doc/// use futures::prelude::*;doc/// use futures::stream;doc/// use futures::future;doc///7doc777/// let number_stream = stream::iter_ok::<_, ()>(0..6);7BdocBBB/// let sum = number_stream.fold(0, |acc, x| future::ok(acc + x));B#doc###/// assert_eq!(sum.wait(), Ok(15));#doc/// ```   FTFut          selfinit f   7self '  AdocAAA/// Flattens a stream of streams into just one continuous stream.Adoc///IdocIIJ/// If this stream\'s elements are themselves streams then this combinatorIIdocIII/// will flatten out the entire stream to one long chain of elements. AnyIIdocIII/// errors are passed through without looking at them, but otherwise eachIFdocFFF/// individual stream will get exhausted before moving on to the next.Fdoc///doc/// ```doc/// use std::thread;doc///doc/// use futures::prelude::*;doc/// use futures::sync::mpsc;doc///-doc---/// let (tx1, rx1) = mpsc::channel::(1);--doc---/// let (tx2, rx2) = mpsc::channel::(1);-&doc&&&/// let (tx3, rx3) = mpsc::channel(1);&doc///doc/// thread::spawn(|| {#doc###/// tx1.send(1).wait().unwrap()#$doc$$$/// .send(2).wait().unwrap();$doc/// });doc/// thread::spawn(|| {#docŠ###/// tx2.send(3).wait().unwrap()#$docÊ$$$/// .send(4).wait().unwrap();$docĊ/// });docŊ/// thread::spawn(|| {%docƊ%%%/// tx3.send(rx1).wait().unwrap()%&docNJ&&&/// .send(rx2).wait().unwrap();&docȊ/// });docɊ///-docʊ---/// let mut result = rx3.flatten().collect();-4docˊ444/// assert_eq!(result.wait(), Ok(vec![1, 2, 3, 4]));4߁doc̊߁߁/// ```߁  ܂   Ǽ  self !2selfpred (  #IdocIII/// Skip elements on this stream while the predicate provided resolves toI doc   /// `true`. doc///IdocIII/// This function, like `Iterator::skip_while`, will skip elements on theIFdocFFF/// stream until the `predicate` resolves to `false`. Once one elementFJdocJJJ/// returns false all future elements will be returned from the underlyingJ doc   /// stream.  PRȂȂ(  ȇ܇܇   selfpred &dselfpred (  #ˊKdocKKK/// Take elements from this stream while the predicate provided resolves toKӈ docӈ ӈ  /// `true`.ӈ doc///KdocKKK/// This function, like `Iterator::take_while`, will take elements from theKFdocFFF/// stream until the `predicate` resolves to `false`. Once one elementF@doc@@@/// returns false it will always return that the stream is done.@  PRي܊‹(͋ ؋   ˊ selfߊpred ˊ&Dselff '     KdocKKK/// Runs this stream to completion, executing the provided closure for eachKdoc/// element on the stream.doc///JdocJJJ/// The closure provided will be called for each item this stream resolvesJJdocJJJ/// to successfully, producing a future. That future will then be executedJЎ4docЎ4Ў44/// to completion before moving on to the next item.Ў4doc///FdocFFF/// The returned value is a `Future` where the `Item` type is `()` andF܏Ldoc܏L܏LL/// errors are otherwise threaded through. Any error on the stream or in the܏LHdocHHH/// closure will cause iteration to be halted immediately and the futureHdoc/// will resolve to that error.doc///IdocIII/// To process each item in the stream and produce another stream insteadI/doc////// of a single future, use `and_then` instead./    FU  ш( Փ    ɒ self f    &Dself '   ~@doc@@A/// Map this stream\'s error to any error implementing `From` for@Д2docД2Д23/// this stream\'s `Error`, returning a new stream.Д2doc///AdocAAA/// This function does for streams what `try!` does for `Result`,AՕBdocՕBՕBB/// by letting the compiler infer the type of the resulting error.ՕBAdocAAA/// Just as `map_err` above, this is useful for example to ensureA8doc888/// that streams have the same error type when used with8doc/// combinators.doc///GdocGGG/// Note that this function consumes the receiving stream and returns aGdoc/// wrapped version of it.   E      ~Ҙ selfɘ ~   &selfamt (  ҜhIdocЌIII/// Creates a new stream of at most `amt` items of the underlying stream.Idocь///KdocҌKKK/// Once `amt` items have been yielded from this stream then it will alwaysKњ#docӌњ#њ##/// return that the stream is done.њ#docԌ/// docՌ   /// # Errors doc֌///Kdoc׌KKK/// Any errors yielded from underlying stream, before the desired amount ofKKdoc،KKK/// items is reached, are passed through and do not affect the total numberKdocٌ/// of items taken.     Ҝh  selfڜamt Ҝh  selfamt (  hJdocJJJ/// Creates a new stream which skips `amt` items of the underlying stream.Jdoc///KdocKKK/// Once `amt` items have been skipped from this stream then it will alwaysK.doc.../// return the remaining items on this stream..doc/// doc   /// # Errors doc///KdocKKK/// All errors yielded from underlying stream are passed through and do notK-doc---/// affect the total number of items skipped.-     hؠ  selfŠamtˠ h  self '  YIdocIII/// Fuse a stream such that `poll` will never again be called once it hasI doc   /// finished. doc///GdocGGG/// Currently once a stream has returned `None` from `poll` any furtherGߢHdocߢHߢHH/// calls could exhibit bad behavior such as block forever, panic, neverߢHJdocJJJ/// return, etc. If it is known that `poll` may be called after stream hasJHdocHHH/// already finished, then this method can be used to ensure that it hasHȤdocȤȤ/// defined semantics.Ȥdoc///HdocHHH/// Once a stream has been `fuse`d and it finishes, then it will foreverHIdocIII/// return `None` from `poll`. This, unlike for the traits `poll` method,Idoc/// is guaranteed.doc///KdocKKK/// Also note that as soon as this stream returns `None` it will be droppedK,doc,,,/// to reclaim resources associated with it.,   ֧  Y  self Y   self  T/doc////// Borrows a stream, rather than consuming it./doc///JdocJJJ/// This is useful to allow applying stream adaptors while still retainingJ%doc%%%/// ownership of the original stream.%doc///©doc©©/// ```©ΩdocΩΩ/// use futures::prelude::*;Ωdoc/// use futures::stream;doc/// use futures::future;docÍ///4docč444/// let mut stream = stream::iter_ok::<_, ()>(1..5);4docō///OdocƍOOO/// let sum = stream.by_ref().take(2).fold(0, |a, b| future::ok(a + b)).wait();OƫdocǍƫƫ/// assert_eq!(sum, Ok(3));ƫdocȍ///#docɍ###/// // You can use the stream again#FdocʍFFF/// let sum = stream.take(2).fold(0, |a, b| future::ok(a + b)).wait();Fdocˍ/// assert_eq!(sum, Ok(7));doc̍/// ```   í׭׭׭T   self ׭T    self .  6docݍ666/// Catches unwinding panics while polling the stream.6docލ///KdocߍKKK/// Caught panic (if any) will be the last element of the resulting stream.Kdoc///KdocKKK/// In general, panics within a stream can propagate all the way out to theKүJdocүJүJJ/// task level. This combinator makes it possible to halt unwinding withinүJJdocJJK/// the stream itself. It\'s most commonly used within task executors. ThisJ1doc111/// method should not be used for error handling.1doc///KdocKKK/// Note that this method requires the `UnwindSafe` bound from the standardKFdocFFG/// library. This isn\'t always applied automatically, and the standardFɲCdocɲCɲCC/// library provides an `AssertUnwindSafe` wrapper type to apply itɲCKdocKKK/// after-the fact. To assist using this method, the `Stream` trait is alsoKHdocHHH/// implemented for `AssertUnwindSafe` where `S` implements `Stream`.Hdoc///DdocDDD/// This method is only available when the `use_std` feature of thisD9doc999/// library is activated, and it is activated by default.9doc///ŵdocŵŵ/// # Examplesŵصdocصص///ص doc   /// ```rust doc/// use futures::prelude::*;doc/// use futures::stream;doc///LdocLLL/// let stream = stream::iter_ok::<_, bool>(vec![Some(10), None, Some(11)]);Ldoc/// // panic on second element6doc666/// let stream_panicking = stream.map(|o| o.unwrap());6:doc:::/// let mut iter = stream_panicking.catch_unwind().wait();:doc///;doc;;;/// assert_eq!(Ok(10), iter.next().unwrap().ok().unwrap());;+doc+++/// assert!(iter.next().unwrap().is_err());+#doc###/// assert!(iter.next().is_none());#ĹdocĹĹ/// ```Ĺҹcfgչֹ feature޹ use_stdй   ܺܺ ) ؍ self "selfamt (  ?doc???/// An adaptor for creating a buffered list of pending futures.?ûdocûû///û˻Kdoc˻K˻KL/// If this stream\'s item can be converted into a future, then this adaptor˻KJdocJJJ/// will buffer up to at most `amt` futures and then return results in theJKdocKKK/// same order as the underlying stream. No more than `amt` futures will beKKdocKKK/// buffered at any point in time, and less than `amt` may also be bufferedK*doc***/// depending on the state of each future.*doc///FdocFFG/// The returned stream will be a stream of each future\'s result, withF.doc.../// errors passed through whenever they occur..doc///ǿDdocǿDǿDD/// This method is only available when the `use_std` feature of thisǿD9doc999/// library is activated, and it is activated by default.9cfg feature use_std  +  ( ° selfamt   +selfamt )  KdocʎKKK/// An adaptor for creating a buffered list of pending futures (unordered).Kdocˎ///Kdoc̎KKL/// If this stream\'s item can be converted into a future, then this adaptorKHdoc͎HHH/// will buffer up to `amt` futures and then return results in the orderHJdocΎJJJ/// in which they complete. No more than `amt` futures will be buffered atJLdocώLLL/// any point in time, and less than `amt` may also be buffered depending onLdocЎ/// the state of each future.docю///FdocҎFFG/// The returned stream will be a stream of each future\'s result, withF.docӎ.../// errors passed through whenever they occur..docԎ///DdocՎDDD/// This method is only available when the `use_std` feature of thisD9doc֎999/// library is activated, and it is activated by default.9cfg׎ feature use_std  +   )  selfamt   selfother S' ؾ ! 5doc555/// An adapter for merging the output of two streams.5doc///GdocGGG/// The merged stream produces items from one or both of the underlyingGJdocJJJ/// streams as they become available. Errors, however, are not merged: youJ$doc$$$/// get at most one error at a time.$  deprecated note(&functionality provided by `select` now>allow deprecated&functionality provided by `select` now  ؾS ؾؾؾ   ؾܾ selfؾother ؾ( 9selfother ؾ( ؾ  0doc000/// An adapter for zipping two streams together.0doc///IdocIII/// The zipped stream waits for both streams to produce an item, and thenILdocLLL/// returns that pair. If an error happens, then that error will be returnedLLdocLLL/// immediately. If either stream ends then the zipped stream will also end.L  ؾS   ؾ  selfؾother ؾ $selfother ؾ' ؾ  $docӏ$$$/// Adapter for chaining two stream.$docԏ///GdocՏGGG/// The resulting stream emits elements from the first stream, and whenGLdoc֏LLL/// first stream reaches the end, emits the elements from the second stream.Ldoc׏/// doc؏   /// ```rust docُ/// use futures::prelude::*;docڏ/// use futures::stream;docۏ///@doc܏@@@/// let stream1 = stream::iter_result(vec![Ok(10), Err(false)]);@?docݏ???/// let stream2 = stream::iter_result(vec![Err(true), Ok(20)]);?2docޏ222/// let mut chain = stream1.chain(stream2).wait();2docߏ///+doc+++/// assert_eq!(Some(Ok(10)), chain.next());+/doc////// assert_eq!(Some(Err(false)), chain.next());/.doc.../// assert_eq!(Some(Err(true)), chain.next());.+doc+++/// assert_eq!(Some(Ok(20)), chain.next());+#doc###/// assert_eq!(None, chain.next());#doc/// ```  ؾS.ؾ   ؾ selfؾother ؾ   5self (  a7doc777/// Creates a new stream which exposes a `peek` method.7doc///FdocFFF/// Calling `peek` returns a reference to the next item in the stream.F     a self a selfcapacity .   zCdocCCC/// An adaptor for chunking up items of the stream inside a vector.Cdoc///JdocJJJ/// This combinator will attempt to pull items from this stream and bufferJHdocHHH/// them into a local vector. At most `capacity` items will get bufferedH4doc445/// before they\'re yielded from the returned stream.4doc///IdocIII/// Note that the vectors returned from this iterator may not always haveIJdocJJJ/// `capacity` elements. If the underlying stream ended and only a partialJKdocKKL/// vector was created, it\'ll be returned. Additionally if an error happensKHdocHHH/// from the underlying stream then the currently buffered items will beH doc   /// yielded. doc///4doc444/// Errors are passed through the stream unbuffered.4doc///DdocDDD/// This method is only available when the `use_std` feature of thisD9doc999/// library is activated, and it is activated by default.9doc/// doc   /// # Panics doc///1doc111/// This method will panic of `capacity` is zero.1cfg feature use_std    ) z  selfcapacity z  selfother ؾ( ؾ  JdocՐJJJ/// Creates a stream that selects the next element from either this streamJ2doc֐222/// or the provided one, whichever is ready first.2docא///FdocؐFFF/// This combinator will attempt to pull items from both streams. EachFLdocِLLL/// stream will be polled in a round-robin fashion, and whenever a stream isL0docڐ000/// ready to yield an item that item is yielded.0docې///LdocܐLLL/// The `select` function is similar to `merge` except that it requires bothL2docݐ222/// streams to have the same item and error types.2docސ///0docߐ000/// Error are passed through from either stream.0  ؾS.   ؾ selfؾother ؾ   ,selfsink ؾ( ؾ KdocKKK/// A future that completes after the given stream has been fully processedK&doc&&&/// into the sink, including flushing.&doc///IdocIII/// This future will drive the stream to keep producing items until it isILdocLLL/// exhausted, sending each item to the sink. It will complete once both theLHdocHHH/// stream is exhausted, and the sink has fully processed received item,H2doc222/// flushed successfully, and closed successfully.2doc///9doc999/// Doing `stream.forward(sink)` is roughly equivalent to9LdocLLL/// `sink.send_all(stream)`. The returned future will exhaust all items fromLFdocFFF/// `self`, sending them all to `sink`. Furthermore the `sink` will beFdoc/// closed and flushed.doc///9doc999/// On completion, the pair `(stream, sink)` is returned.9  ؾSؾؾؾ   ؾ selfؾsink ؾ   Kself . .  HdocđHHH/// Splits this `Stream + Sink` object into separate `Stream` and `Sink`H docő   /// objects. docƑ///IdocǑIII/// This can be useful when you want to split ownership between tasks, orI>docȑ>>>/// allow direct interaction between the two objects (e.g. via>docɑ/// `Sink::send_all`).docʑ///DdocˑDDD/// This method is only available when the `use_std` feature of thisD9doc̑999/// library is activated, and it is activated by default.9cfg͑ feature use_std     + ȇ$ self  selff '   IdocIII/// Do something with each item of this stream, afterwards passing it on.Idoc///EdocEEE/// This is similar to the `Iterator::inspect` method in the standardEEdocEEE/// library where it allows easily inspecting each value as it passesE=doc==>/// through the stream, for example to debug what\'s going on.=   F  Ȃ     self f   0selff '   IdocIII/// Do something with the error of this stream, afterwards passing it on.Idoc///CdocCCC/// This is similar to the `Stream::inspect` method where it allowsCDdocDDD/// easily inspecting the error as it passes through the stream, forD%doc%%&/// example to debug what\'s going on.%   F         self f   B 'aؾ'aSD!ؾؾself ! 8[ 'aؾ5 futures,# #ӂKdocKKK/// Converts a list of futures into a `Stream` of results from the futures.Kdoc///KdocKKK/// This function will take an list of futures (e.g. a vector, an iterator,KIdocIII/// etc), and return a stream. The stream will yield items as they becomeIFdocFFF/// available on the futures internally, in the order that they becomeFLdocLLL/// available. This function is similar to `buffer_unordered` in that it mayLAdocAAA/// return items in a different order than in the list specified.Adoc///HdocHHH/// Note that the returned set can also be used to dynamically push moreH2doc222/// futures into the set as they become available.2cfgЂ featurełǂ use_std I Ԡ܃  SendAll/  StartSend& Wait0 Send/  SinkFromErr/ With. Poll  SinkMapErr/ Fanout  IntoFuture Buffer0 Flush/ Stream  WithFlatMap. 3  doc  //! Asynchronous sinks  doc  //!  Odoc O OO//! This module contains the `Sink` trait, along with a number of adapter types O Odoc O OO//! for it. An overview is available in the documentation for the trait itself. O doc  //!  Ddoc D DD//! You can find more information/tutorials about streams [online at D doc  //! https://tokio.rs][online]  doc  //!  Fdoc F FF//! [online]: https://tokio.rs/docs/getting-started/streams-and-sinks/ F/////00  PhantomData  StartSend& Future  AsyncSink! Poll  PhantomData  IntoFuture Sink mem Stream Async!   ......9   .Fut FutT   ^%self      1     sinkf Đ . Đ  $   Đ SUFFut   ȥ ޕ Đ  Đ ¸    C     SUFFut ̸   ȥ  ޕ    C  self   V  Đ  :     SUFFut ̸   ȥ ޕ      Cself Պ  6 -docǕ - --/// Get a shared reference to the inner sink. -  Đ  U self  B .doc֕ . ../// Get a mutable reference to the inner sink. .  Đ  V self   6 <doc < <self Պ ͧ}-doc---/// Get a shared reference to the inner sink.-  ܧ~U self  Ш.docШ.Ш../// Get a mutable reference to the inner sink.Ш.  V self  Ūx2doc222/// Consume the `Flush` and return the inner sink.2  ~ZƫS ƫޕɫ? self!    , PhantomData  StartSend& Poll PhantomDataSinkg ///$ sink /      SE  ޕ۱W #SE  M#self Պ 6˲-doc˲-˲--/// Get a shared reference to the inner sink.˲-   U  self  B.doc.../// Get a mutable reference to the inner sink..   V  self  6<doc˞<<(5); + doc  ///  #doc # ##/// let tx = tx.with_flat_map(|x| { # ;doc ; ;;/// stream::iter_ok(vec![42; x].into_iter().map(|y| y)) ; doc  /// });  doc  /// tx.send(5).wait().unwrap();  Adoc A AA/// assert_eq!(rx.collect().wait(), Ok(vec![42, 42, 42, 42, 42])) A doc  /// ```   Đ UFSt       4           Đ       self Đ f  Đ  6^selff /     .docկ . ../// Transforms the error returned by the sink. .    FE                     self  f    V&Eself /     Jdoc J JL/// Map this sink\'s error to any error implementing `From` for this sink\'s J "doc " ""/// `Error`, returning a new sink. " doc  ///  Udoc U UU/// If wanting to map errors of a `Sink + Stream`, use `.sink_from_err().from_err()`. U   E               self    &selfamt 0   p 1doc 1 11/// Adds a fixed-size buffer to the current sink. 1 doc  ///  Hdoc H HH/// The resulting sink will buffer up to `amt` items when the underlying H Ldoc L LL/// sink is unwilling to accept additional items. Calling `poll_complete` on L Hdoc H HH/// the buffered sink will attempt to both empty the buffer and complete H &doc & &&/// processing on the underlying sink. & doc  ///  Hdoc H HH/// Note that this function consumes the given sink, returning a wrapped H 'doc ' ''/// version, much like `Iterator::map`. ' doc  ///  Ddoc D DD/// This method is only available when the `use_std` feature of this D 9doc 9 99/// library is activated, and it is activated by default. 9 cfg    feature  use_std          /     p  self amt    p   selfother ؾ ؾ    #docŰ # ##/// Fanout items to multiple sinks. # docư  ///  Rdocǰ R RR/// This adapter clones each incoming item and forwards it to both this as well as R $docȰ $ $$/// the other sink at the same time. $  ؾS    8ؾ ؾ        ؾ      self ؾother  ؾ   Lself /   \ Edoc E EE/// A future that completes when the sink has finished processing all E doc  /// pending requests.  doc  ///  Kdoc K KK/// The sink itself is returned after flushing is complete; this adapter is K Gdoc G GG/// intended to be used when you want to stop sending to the sink until G 'doc ' ''/// all current requests are processed. '           \  self   \ selfitem /   u Idoc I II/// A future that completes after the given item has been fully processed I &doc & &&/// into the sink, including flushing. & doc  ///  Jdoc J JJ/// Note that, **because of the flushing requirement, it is usually better J Hdoc H HH/// to batch together items to send via `send_all`, rather than flushing H doc  /// between each item.**  doc  ///  (doc ( ((/// On completion, the sink is returned. (              u  self item    u selfstream ؾ/ ؾ !   Kdoc K KK/// A future that completes after the given stream has been fully processed K &doc & &&/// into the sink, including flushing. & doc  ///  Idoc I II/// This future will drive the stream to keep producing items until it is I Ldoc L LL/// exhausted, sending each item to the sink. It will complete once both the L Kdoc K KK/// stream is exhausted, the sink has received all items, the sink has been K *doc * **/// flushed, and the sink has been closed. * doc  ///  :doc : ::/// Doing `sink.send_all(stream)` is roughly equivalent to : Kdoc K KK/// `stream.forward(sink)`. The returned future will exhaust all items from K Mdoc M MM/// `stream` and send them to `self`, closing `self` when all items have been M doc  /// received.  doc  ///  9doc 9 99/// On completion, the pair `(sink, source)` is returned. 9  ؾS  ؾ          ؾ      self ؾstream  ؾ     ?  'aؾ 'aS H! ؾ selfitem ! 8  'aؾ 6 self  a 'aؾ 5 self  Q 'aؾ 5 SeqCst* AtomicBool$DerefMutSeqCst* UnsafeCellDerefcore8 8cfg888 feature88 use_std8,doc,,.//! A \"mutex\" which only supports `try_lock`,doc//!NdocNNN//! As a futures library the eventual call to an event loop should be the onlyNFdocFFF//! thing that ever blocks, so this is assisted with a fast user-spaceFяGdocяGяGG//! implementation of a lock that can only have a `try_lock` operation.яG00Ĕ9֓Hdoc֓H֓HH/// Sentinel representing an acquired lock through which the data can be֓H doc   /// accessed. 'a 'aT Ĕ 'aǔ9 'є 'a0  )× 0  (T ×  Ɨ> (T פ8T 4t   Ә.doc.../// Creates a new lock around the given value..  {Vself   &MdocMMM/// Attempts to acquire this lock, returning whether the lock was acquired orMdoc/// not.ƚdocƚƚ///ƚΚJdocΚJΚJJ/// If `Some` is returned then the data this lock protects can be accessedΚJIdocIII/// through the sentinel. This sentinel allows both mutable and immutableI doc   /// access. doc///KdocKKK/// If `None` is returned then the lock is already locked, either elsewhereKӜ(docӜ(Ӝ((/// on this thread or on another thread.Ӝ(    Ğ'a 'aT ĞB! self     'a 6 ɠ'a Ű'aT ɠ@!self Ű    'a 6 ã'a v'aT ã?!self  J 'a 5 StartSend&  UnparkEvents0 EventSet Run init Executor BorrowedEvents0 TaskUnpark0 TaskRc0 Opaque PhantomDatawith_unpark_event local_map SinkUnpark PhantomData Futureѧfmt? BorrowedUnpark0 get_ptr UnparkEvent0 AtomicTask UnparkMutex Poll˧LocalKey0 LocalMap Stream٧IdHasher set 800_+fmt? ReleaseAcquireAcqRelAcquireAcqRelTask0 Release UnsafeCell AtomicUsize 3U6doc666/// A synchronization primitive for task notification.6ċdocċċ///ċȋKdocȋKȋKK/// `AtomicTask` will coordinate concurrent notifications with the consumerȋKKdocKKM/// potentially \"updating\" the underlying task to notify. This is useful inKJdocJJJ/// scenarios where a computation completes in another thread and wants toJPdocPPP/// notify the consumer, but the consumer is in the process of being migrated toPdoc/// a new logical task.doc///PdocPPP/// Consumers should call `register` before checking the result of a computationPLdocLLL/// and producers should call `notify` after producing the computation (thisLLdocLLL/// differs from the usual `thread::park` pattern). It is also permitted forLIdocIII/// `notify` to be called **before** `register`. This results in a no-op.I͐doc͐͐///͐ѐPdocѐPѐPP/// A single `AtomicTask` may be reused for any number of calls to `register` orѐP doc   /// `notify`. doc///MdocMMM/// `AtomicTask` does not provide any memory ordering guarantees, as such theMMdocMMM/// user should use caution and use other synchronization primitives to guardMВ-docВ-В--/// the result of the underlying computation.В-   0 (0doc/// Idle state61ع DdocDDD/// A new task value is being registered with the `AtomicTask` cell.Dع ع ع l2ʺOdocOOO/// The task currently registered with the `AtomicTask` cell is being notified.Oʺʺۺʺw+! <doc<<doc>>>/// but there is no guarantee as to which caller will succeed.>    self   2doc۷222/// Notifies the task that last called `register`.2docܷ///BdocݷBBB/// If `register` has not been called yet, then this does nothing.B    Self GZ 6  Aselffmt  ` &  " "SeqCst BorrowedTask ATOMIC_USIZE_INIT%RelaxedSeqCstRelaxed NotifyHandle mem  marker   AtomicUsize  #allow͸ dead_code00000000$8     + B    0'a'a5  V 'a' self 0 C 'a-  0'a'a5 fid 'a'a 3xinline 'aC self  inlineҹ 'aI  self   # self_other 0 " O # self  A # selfother 0 !  $ self  ' aself  @ & ,allow deprecated,, ,9,allow deprecated,, ,9getset    )doc)))/// Initialize the `futures` task system.)doc///MdocMMM/// This function is an unsafe low-level implementation detail typically onlyMKdocKKK/// used by crates using `futures` in `no_std` context. Users of this crateKIdocIII/// who also use the standard library never need to invoke this function.Idoc///JdocJJK/// The task system in the `futures` crate relies on some notion of \"localJPdocPPQ/// storage\" for the running thread and/or context. The `task::current` functionPOdocOOO/// can get invoked in any context, for example, and needs to be able to returnOHdocHHH/// a `Task`. Typically with the standard library this is supported withHIdocIII/// thread-local-storage, but this is not available in `no_std` contexts!Idoc///OdocOOO/// This function is provided to allow `no_std` contexts to continue to be ableONdocNNN/// to use the standard task system in this crate. The functions provided hereNPdocPPP/// will be used as-if they were thread-local-storage getters/setters. The `get`POdocOOO/// function provided is used to retrieve the current thread-local value of theOƀPdocƀPƀPQ/// task system\'s pointer, returning null if not initialized. The `set` functionƀP%doc%%%/// updates the value of the pointer.%doc///doc/// # Return valueԁdocԁԁ///ԁ؁Kdoc؁K؁KK/// This function will return whether initialization succeeded or not. This؁KJdocJJJ/// function can be called concurrently and only the first invocation willJNdocNNN/// succeed. If `false` is returned then the `get` and `set` pointers providedNIdocIII/// were *not* registered for use with the task system, but if `true` wasICdocCCC/// provided then they will be called when the task system is used.C̄doc̄̄///̄ЄOdocЄOЄOP/// Note that while safe to call concurrently it\'s recommended to still performЄOLdocLLL/// external synchronization when calling this function. This task system isLJdocJJJ/// not guaranteed to be ready to go until a call to this function returnsJJdocJJJ/// `true`. In other words, if you call this function and see `false`, theJMdocMMM/// task system may not be ready to go as another thread may still be callingMч docч ч  /// `init`.ч ݇doc݇݇///݇doc/// # Unsafetydoc///JdocJJJ/// This function is unsafe due to the requirements on the behavior of theJNdocNNN/// `get` and `set` functions. The pointers returned from these functions mustNHdocHHH/// reflect the semantics specified above and must also be thread-local,H׉Edoc׉E׉EG/// depending on the definition of a \"thread\" in the calling context.׉E (  inline߻ 1f BcfgӍ featureȍʍ use_std؍inline֍ ~ftaskf 'a  $   FR  ĉ  Չ d (#    ך  # ####ך#### ךrךself ך <inlineސ A Copy Extend#BoxFromOrdering AsyncSink! FnOnceErrTaskRc0Opaque PartialEqOk ONCE_INIT> SliceConcatExtSinkString+ AtomicUsizeܓ ExactSizeIterator" PhantomData גFuturefmtɒDefaultInto BorrowedTaskє DropspawnFnSomeOrdToOwnedPollLocalKey0 Arc IntoIterator#Sized  PartialOrdFnMutNoneSpawn StartSend& Send EqinitߖSync Iterator! UnsafeNotify AsMutCelldrop  PhantomDataג NotifyHandleߔ  local_map ErrVec#AsRefAsync!OkSomeCondvar<NotifyDoubleEndedIterator"Unpin ToString!Mutex=core ptr  UnparkMutexOnce>ResultNoneOptionCloneLocalMap mem StreamIdHasher L ԨcfgѨ featureƨȨ use_std00000000000000ULSeqCst#SeqCst# UnsafeCell AtomicUsizeY" AdocAAC/// A \"lock\" around data `D`, which employs a *helping* strategy.Adoc///PdocPPP/// Used to ensure that concurrent `unpark` invocations lead to (1) `poll` beingPOdocOOO/// invoked on only a single thread at a time (2) `poll` being invoked at leastOȾ?docȾ?Ⱦ??/// once after each `unpark` (unless the future has completed).Ⱦ?DD     & /D > /D80_1_2_3_D:  #self  ;doc;;=/// Attempt to \"notify\" the mutex that a poll should occur.;doc///KdocKKK/// An `Ok` result indicates that the `POLLING` state has been entered, andKHdocHHH/// the caller can proceed to poll the future. An `Err` result indicatesHFdocFFF/// that polling is not necessary (because the task is finished or theF doc   /// polling has been delegated).  self  SLdocLLL/// Alert the mutex that polling is about to begin, clearing any accumulatedLdoc/// re-poll requests.doc/// doc   /// # Safety doc///BdocBBB/// Callable only from the `POLLING`/`REPOLL` states, i.e. betweenB7doc777/// successful calls to `notify` and `wait`/`complete`.7  selfdata 9doc999/// Alert the mutex that polling completed with NotReady.9doc/// doc   /// # Safety doc///BdocBBB/// Callable only from the `POLLING`/`REPOLL` states, i.e. betweenB7doc777/// successful calls to `notify` and `wait`/`complete`.7  self  RKdocKKK/// Alert the mutex that the task has completed execution and should not beKdoc/// notified again.doc/// doc   /// # Safety doc///BdocBBB/// Callable only from the `POLLING`/`REPOLL` states, i.e. betweenB7doc777/// successful calls to `notify` and `wait`/`complete`.7  NoneCopy Extend#Send BoxFromEqBuildHasherDefault?Sync FnOnceIterator!ErrAsMutHashMapJwithdrop  PartialEqOkSliceConcatExtErrVec#AsRefString+ExactSizeIterator"OkSomeDefaultIntoDoubleEndedIterator"Unpin DropHasher>ToString!RefCellFnSomeResultOrdNoneToOwnedOptionTypeIdClone IntoIterator#Sized  PartialOrdFnMut/ϕ 00/J?;, G   Self   D  T פ8$  ] ;  > self_bytes    " ~ & selfu < & self  / &  0 T  פJselff   CdocCCC/// Access this task-local key, running the provided closure with aCdoc/// reference to the value.doc///FdocFFF/// This function will access this task-local key to retrieve the dataFLdocLLL/// associated with the current task and this key. If this is the first timeLAdocAAA/// this key has been accessed on this task, then the key will beAKdocKKK/// initialized with the initialization expression provided at the time theK#doc###/// `task_local!` macro was called.#ӀdocӀӀ///ӀۀCdocۀCۀCC/// The provided closure will be provided a shared reference to theۀCKdocKKK/// underlying data associated with this task-local-key. The data itself isK&doc&&&/// stored inside of the current task.&doc/// doc   /// # Panics doc///=doc===/// This function can possibly panic for a number of reasons:=doc///%doc%%%/// * If there is not a current task.%;doc;;;/// * If the initialization expression is run and it panics;$doc$$$/// * If the closure provided panics$   FR  ل   &String+ExactSizeIterator"Copy OkSomeDefaultExtend#Send IntoBoxFromDoubleEndedIterator"Unpin  task_implȊ DropEqToString!FnSomeSync FnOnceIterator!ErrResultAsMutOrdNoneToOwneddrop Option PartialEqCloneOkArc IntoIterator#Sized SliceConcatExtErrVec# PartialOrdFnMutAsRef UnsafeCellNone, cfg featurewith-deprecated$ĈallowɈԈʈ deprecatedڈ  deprecated since0.1.4 notemkreplaced with `BiLock` in many cases, otherwise slated \ for removal due to confusion׈000.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion   0  Ԥ*0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA     [ *0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA     [ 0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA   [a   åFdocåFåFF/// Inserts a new piece of task-local data into this task, returning aåFdoc/// reference to it.doc///LdocLLL/// Ownership of the data will be transferred to the task, and the data willLJdocJJJ/// be destroyed when the task itself is destroyed. The returned value canJϧJdocϧJϧJJ/// be passed to the `with` method to get a reference back to the originalϧJ doc   /// data. doc///KdocKKK/// Note that the returned handle is cloneable and copyable and can be sentKEdocEEE/// to other futures which will be associated with the same task. AllEΩHdocΩHΩHH/// futures will then have access to this data when passed the referenceΩH doc   /// back. doc/// doc   /// # Panics ªdocªª///ªʪ@docʪ@ʪ@@/// This function will panic if a task is not currently running.ʪ@0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion    [selff   ư4doc444/// Operate with a reference to the underlying data.4doc///@doc@@@/// This method should be passed a handle previously returned by@HdocHHH/// `Task::insert`. That handle, when passed back into this method, willH.doc.../// retrieve a reference to the original data..doc/// doc   /// # Panics ȮdocȮȮ///ȮЮJdocЮJЮJJ/// This method will panic if a task is not currently running or if `self`ЮJFdocFFF/// does not belong to the task that is currently running. That is, ifFHdocHHH/// another task generated the `data` handle passed in, this method willH doc   /// panic. 0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion   F R   ذ Ұհ      [+0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA   [self ޲0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion  [ ȗ>ܗ ܗ >ȗȗ՗ȗ` Ț     ̚̚̚Κ ҚӚȚ ̚  ̒Ț  Ӓcɚ̚Ț -A  ̒ Ӓ ›     ƛ ƛƛƛƛƛƛƛƛƛ ƛ ққӛ›ƛ  ̒›cÛƛ ƛƛƛ ƛ › A R        Ǟٞߞߞ ϛ{{՞H՞H    getsetٞ  ߞϛ5Ataskf  'a  $؛   F R     ĉ  Չ d ( ޟ,       ޟ, ޟ,ޟ,ޟ,ޟ,ޟ,ޟ,ޟ,ޟ, self  ̠xinline ԠA 0 'a'a  5 fid 'a 'a 3inline  'aD self 0 inline  'aI  0 'a'a  5  Ginline  'aB self 0 inline  'aI  self   $ selfevents 0 " մ $ allow deprecatedW9self   $ selfunparkʫ 0 " Ϲ $   F    Dselfunpark !   9 doc hidden  deprecated note1/recommended to use `poll_future_notify` insteadGallow deprecated/recommended to use `poll_future_notify` instead  1 self   EdocEEF/// Waits for the internal future to complete, blocking this thread\'sEdoc/// execution until it does.doc///KdocKKK/// This function will call `poll_future` in a loop, waiting for the futureK?doc???/// to complete. When a future cannot make progress it will use?/doc////// `thread::park` to block the current thread./   selfexec doc hidden  deprecated allow deprecated         S   Bselfunpark     deprecated note1/recommended to use `poll_stream_notify` insteadGallow deprecateddoc hidden/recommended to use `poll_stream_notify` instead  1 selfڵ KdocKKK/// Like `wait_future`, except only waits for the next element to arrive onKdoc/// the underlying stream.   S   ޕBselfvalueunpark  %doc hidden  deprecated note0.recommended to use `start_send_notify` insteadFallow deprecated.recommended to use `start_send_notify` instead  0 selfunparkޗ    deprecated note0.recommended to use `poll_flush_notify` insteadFallow deprecateddoc hidden.recommended to use `poll_flush_notify` instead  0 selfvalue  KdocKKL/// Blocks the current thread until it\'s able to send `value` on this sink.Kdoc///LdocLLL/// This function will send the `value` on the sink that this task wraps. IfLLdocLLL/// the sink is not ready to send the value yet then the current thread willL1doc112/// be blocked until it\'s able to send the value.1   self AdocAAB/// Blocks the current thread until it\'s able to flush this sink.Adoc///HdocHHI/// This function will call the underlying sink\'s `poll_complete` methodHHdocHHI/// until it returns that it\'s ready, proxying out errors upwards to theHdoc/// caller if one occurs.doc///FdocFFG/// The thread will be blocked until `poll_complete` returns that it\'sF doc   /// ready.   self AdocAAB/// Blocks the current thread until it\'s able to close this sink.Adoc///GdocGGG/// This function will close the sink that this task wraps. If the sinkGIdocIII/// is not ready to be close yet, then the current thread will be blockedIdoc/// until it\'s closed.    NdocNNN/// A trait which represents a sink of notifications that a future is ready toNdoc/// make progress.doc///IdocIII/// This trait is provided as an argument to the `Spawn::poll_future` andIIdocIIJ/// `Spawn::poll_stream` functions. It\'s transitively used as part of theIOdocOOO/// `Task::unpark` method to internally deliver notifications of readiness of aOdoc/// future to move forward.  deprecated note%#recommended to use `Notify` instead;#recommended to use `Notify` insteadSelf   % selfӚ  EdocEEE/// Indicates that an associated future and/or task are ready to makeE doc   /// progress. doc///EdocEEE/// Typically this means that the receiver of the notification shouldE=doc==>/// arrange for the future to get poll\'d in a prompt fashion.=#recommended to use `Notify` instead  %   2doc222/// A trait representing requests to poll futures.2doc///LdocLLL/// This trait is an argument to the `Spawn::execute` which is used to run aLOdocOOO/// future to completion. An executor will receive requests to run a future andOMdocMMM/// an executor is responsible for ensuring that happens in a timely fashion.Mdoc///KdocKKK/// Note that this trait is likely to be deprecated and/or renamed to avoidKLdocLLM/// clashing with the `future::Executor` trait. If you\'ve got a use case forLAdocAAA/// this or would like to comment on the name please let us know!A  deprecated allow deprecatedSelf      (selfrӚ ?doc???/// Requests that `Run` is executed soon on the given executor.?  g iDdocDDD/// Units of work submitted to an `Executor`, currently only createdDdoc/// internally.  deprecated  7  >% # Iallow deprecated  V9  allow deprecatedU9self  HdocHHH/// Actually run the task (invoking `poll` on its future) on the currentH doc   /// thread. Aallow deprecatedV9selff    ' allow deprecatedV9self_id   ' [  " = < 0_1_2_ f      F R         Ё &self   ' ׋self _unpark_id  '           %Ǜ Ǜ 0) 0     0 )0)0  )    J   ͜  ͜  ͜  ͜  ؜؜ œœ  ٜٜ ߜߜ         task new_taskǛ )   ͜  ͜  ؜eventf*ceventf  GdocGGI/// For the duration of the given callback, add an \"unpark event\" to beG>doc>>>/// triggered when the task handle is used to unpark the task.>’doc’’///’ƒPdocƒPƒPP/// Unpark events are used to pass information about what event caused a task toƒPOdocOOO/// be unparked. In some cases, tasks are waiting on a large number of possibleOMdocMMM/// events, and need precise information about the wakeup to avoid extraneousM doc   /// polling. ”doc””///”ƔNdocƔNƔNN/// Every `Task` handle comes with a set of unpark events which will fire whenƔNLdocLLL/// `unpark` is called. When fired, these events insert an identifier into aLIdocIII/// concurrent set, which the task can read from to determine what eventsI doc   /// occurred. doc///NdocNNN/// This function immediately invokes the closure, `f`, but arranges things soNJdocJJJ/// that `task::park` will produce a `Task` handle that includes the givenJؗdocؗؗ/// unpark event.ؗdoc/// doc   /// # Panics doc///LdocLLL/// This function will panic if a task is not currently being executed. ThatL̘Ldoc̘L̘LL/// is, this method can be dangerous to call outside of an implementation of̘L doc   /// `poll`.   deprecated note/-recommended to use `FuturesUnordered` insteadEallow deprecated-recommended to use `FuturesUnordered` instead   F R     ĉ ˚ Չ ך/ #Πallowˠ deprecatedW9setid CdocCCC/// Construct an unpark event that will insert `id` into `set` whenCdoc/// triggered.¡  deprecated̡͡ noteҡԡ/-recommended to use `FuturesUnordered` insteadE-recommended to use `FuturesUnordered` instead /self  < & Aޣallow deprecatedܣV9selff˙   '   wӥFdocӥFӥFF/// A concurrent set which allows for the insertion of `usize` values.ӥFdoc///NdocNNN/// `EventSet`s are used to communicate precise information about the event(s)NRdocRRR/// that triggered a task notification. See `task::with_unpark_event` for details.R§  deprecateḑͧ sinceҧӧ0.1.18ۧݧ note/-recommended to use `FuturesUnordered` insteadU0.1.18-recommended to use `FuturesUnordered` insteadSelf   w  6'selfidӚ ƨ$docƨ$ƨ$$/// Insert the given ID into the setƨ$0.1.18-recommended to use `FuturesUnordered` instead  L6  ٮ%  T    :    Σ    ٮ%  ٮ% ٮ%ٮ%Σ ٮ% ٮ%ٮ% }Σ Σ T    Mselfid Σ    ï, selfid    , selfid    , Σ Σ T    Eself    , self     , ø T   ø Crc     'ȩ  'a'a   'a 'aȩ N   0 'a $ 0 'a $ Ӫ 'a #   0allow deprecatedŮŮ00 09f      F R       α    # ̾ Self ̾  ̾GԾ      Ŵ       eee      borrowedunpark events  A JdocJJJ/// Returns a handle to the current task to call `notify` at a later date.Jdoc///OdocOOP/// The returned handle implements the `Send` and `\'static` bounds and may alsoOLdocLLL/// be cheaply cloned. This is useful for squirreling away the handle into aLJdocJJJ/// location which is then later signaled that a future can make progress.Jdoc///MdocMMM/// Implementations of the `Future` trait typically use this function if theyMLdocLLM/// would otherwise perform a blocking operation. When something isn\'t readyLMdocMMM/// yet, this `current` function is called to acquire a handle to the currentMOdocOOO/// task, and then the future arranges it such that when the blocking operationOGdocGGG/// otherwise finishes (perhaps in the background) it will `notify` theGdoc/// returned handle.doc///GdocGGH/// It\'s sometimes necessary to pass extra information to the task whenGLdocLLL/// unparking it, so that the task knows something about *why* it was woken.LFdocFFF/// See the `FutureQueue` documentation for details on how to do this.Fdoc/// doc   /// # Panics doc///LdocLLL/// This function will panic if a task is not currently being executed. ThatLLdocLLL/// is, this method can be dangerous to call outside of an implementation ofL doc   /// `poll`.  'doc hidden  deprecated noterenamed to `current`,renamed to `current` !self  XHdocHHH/// Indicate that the task should attempt to poll its future in a timelyH doc   /// fashion. doc///GdocGGH/// It\'s typically guaranteed that, after calling `notify`, `poll` willGLdocLLL/// be called at least once subsequently (unless the future has terminated).LKdocKKK/// If the task is currently polling its future when `notify` is called, itKGdocGGG/// must poll the future *again* afterwards, ensuring that all relevantG1doc111/// events are eventually observed by the future.1  self   2doc hidden  deprecated noterenamed to `notify`+renamed to `notify`  self   VCdocCCC/// Returns `true` when called from within the context of the task.Cdoc///KdocKKK/// In other words, the task is currently running on the thread calling theKEdocEEE/// function. Note that this is currently, and has historically, beenEIdocIII/// implemented by tracking an `id` on every instance of `Spawn` created.IKdocKKK/// When a `Spawn` is being polled it stores in thread-local-storage the idKLdocLLL/// of the instance, and then `task::current` will return a `Task` that alsoLdoc/// stores this id.doc///EdocEEF/// The intention of this function was to answer questions like \"if IEHdocHHI/// `notify` this task, is it equivalent to `task::current().notify()`?\"HFdocFFH/// The answer \"yes\" may be able to avoid some extra work to block theFFdocFFF/// current task, such as sending a task along a channel or updating aFIdocIIK/// stored `Task` somewhere. An answer of \"no\" typically results in doingIdoc/// the work anyway.doc///JdocJJJ/// Unfortunately this function has been somewhat buggy in the past and isJKdocKKK/// not intended to be supported in the future. By simply matching `id` theKEdocEEF/// intended question above isn\'t accurately taking into account, forEKdocKKK/// example, unpark events (now deprecated, but still a feature). Thus manyKJdocJJK/// old users of this API weren\'t fully accounting for the question it wasJdoc/// intended they were asking.doc///LdocLLL/// This API continues to be implemented but will in the future, e.g. in theLJdocJJJ/// 0.1.x series of this crate, eventually return `false` unconditionally.JJdocJJJ/// It is intended that this function will be removed in the next breakingJLdocLLM/// change of this crate. If you\'d like to continue to be able to answer theL8doc889/// example question above, it\'s recommended you use the8!doc!!!/// `will_notify_current` method.!doc///KdocKKM/// If you\'ve got questions about this though please let us know! We\'d likeKAdocAAA/// to learn about other use cases here that we did not consider.Adoc/// doc   /// # Panics doc///BdocBBB/// This function will panic if no current future is being polled.B  deprecated note.,intended to be removed, see docs for detailsD,intended to be removed, see docs for details %. self   JdocJJJ/// This function is intended as a performance optimization for structuresJ$doc$$$/// which store a `Task` internally.$doc///IdocIIJ/// The purpose of this function is to answer the question \"if I `notify`IHdocHHI/// this task is it equivalent to `task::current().notify()`\". An answerHIdocIIL/// \"yes\" may mean that you don\'t actually need to call `task::current()`ILdocLLL/// and store it, but rather you can simply leave a stored task in place. AnLJdocJJL/// answer of \"no\" typically means that you need to call `task::current()`Jdoc/// and store it somewhere.doc///KdocKKK/// As this is purely a performance optimization a valid implementation forKGdocGGG/// this function is to always return `false`. A best effort is done toGKdocKKK/// return `true` where possible, but false negatives may happen. Note thatK<doc<<` or a `Box`. The `clone_id` and `drop_id` functions are thenއKGdocGGG/// intended to be sufficient for the memory management related to thatG doc   /// pointer.  !N  !!!  selfnotifyid!!! 3 BdocBBB/// Like `poll_future_notify`, except polls the underlying stream.B  !N  !!э!ٍj selfvaluenotifyid!!!ш 4ِ͎Gdoc͎G͎GG/// Invokes the underlying `start_send` method with this task in place.͎Gdoc///JdocJJJ/// If the underlying operation returns `NotReady` then the `notify` valueJKdocKKK/// passed in will receive a notification when the operation is ready to beKdoc/// attempted again.  !N  !!! selfnotifyid!!̌  JdocJJJ/// Invokes the underlying `poll_complete` method with this task in place.Jdoc///JdocJJJ/// If the underlying operation returns `NotReady` then the `notify` valueJKdocKKK/// passed in will receive a notification when the operation is ready to beKޕdocޕޕ/// attempted again.ޕ  !N  !!!ȗ selfnotifyid!!̌  ʚØBdocØBØBB/// Invokes the underlying `close` method with this task in place.ØBdoc///JdocJJJ/// If the underlying operation returns `NotReady` then the `notify` valueJKdocKKK/// passed in will receive a notification when the operation is ready to beKdoc/// attempted again.  !N  !ޚ!! selfunparkf!0  "    F R     !ȝ !ڝ+A!ܟ!T  A  9selffِ!    ,  NdocNNN/// A trait which represents a sink of notifications that a future is ready toNdoc/// make progress.doc///LdocLLL/// This trait is provided as an argument to the `Spawn::*_notify` family ofLMdocMMN/// functions. It\'s transitively used as part of the `Task::notify` method toMNdocNNN/// internally deliver notifications of readiness of a future to move forward.Ndoc///NdocNNN/// An instance of `Notify` has one primary method, `notify`, which is given aNФPdocФPФPQ/// contextual argument as to what\'s being notified. This contextual argument isФPPdocPPP/// *also* provided to the `Spawn::*_notify` family of functions and can be usedP9doc999/// to reuse an instance of `Notify` across many futures.9doc///OdocOOO/// Instances of `Notify` must be safe to share across threads, and the methodsOLdocLLM/// be invoked concurrently. They must also live for the `\'static` lifetime,Lͧ(docͧ(ͧ((/// not containing any stack references.ͧ(Self      selfidӚ EdocEEE/// Indicates that an associated future and/or task are ready to makeE doc   /// progress. doc///EdocEEE/// Typically this means that the receiver of the notification shouldEȩ=docȩ=ȩ=>/// arrange for the future to get poll\'d in a prompt fashion.ȩ=doc///JdocJJJ/// This method takes an `id` as an argument which was transitively passedJJdocJJJ/// in from the original call to `Spawn::*_notify`. This id can be used toJ?doc???/// disambiguate which precise future became ready for polling.?doc/// doc   /// # Panics doc///DdocDDD/// Since `unpark` may be invoked from arbitrary contexts, it shouldDެKdocެKެKK/// endeavor not to panic and to do as little work as possible. However, itެKJdocJJJ/// is not guaranteed not to panic, and callers should be wary. If a panicJJdocJJJ/// occurs, that panic may or may not be propagated to the end-user of theJ̮(doc̮(̮()/// future that you\'d otherwise wake up.̮(     selfidӚ 9BdocBBB/// This function is called whenever a new copy of `id` is needed.Bdoc///,doc,,,/// This is called in one of two situations:,doc///IdocIII/// * A `Task` is being created through `task::current` while a future isIJdocJJJ/// being polled. In that case the instance of `Notify` passed in to oneJLdocLLL/// of the `poll_*` functions is called with the `id` passed into the sameLdoc/// `poll_*` function.LdocLLL/// * A `Task` is itself being cloned. Each `Task` contains its own id and aLJdocJJK/// handle to the `Notify` behind it, and the task\'s `Notify` is used toJγ8docγ8γ88/// clone the internal `id` to assign to the new task.γ8doc///LdocLLL/// The `id` returned here will be stored in the `Task`-to-be and used laterLJdocJJJ/// to pass to `notify` when the `Task::notify` function is called on thatJ doc   /// `Task`. õdocõõ///õ˵Kdoc˵K˵KK/// Note that typically this is just the identity function, passing through˵KLdocLLL/// the identifier. For more unsafe situations, however, if `id` is itself aLKdocKKM/// pointer of some kind this can be used as a hook to \"clone\" the pointer,K;doc;;;/// depending on what that means for the specified pointer.;  9  selfid9 selfidӚ 6JdocJJK/// All instances of `Task` store an `id` that they\'re going to internallyJHdocHHH/// notify with, and this function is called when the `Task` is dropped.H׹doc׹׹///׹߹Kdoc߹K߹KK/// This function provides a hook for schemes which encode pointers in this߹KKdocKKL/// `id` argument to deallocate resources associated with the pointer. It\'sKLdocLLL/// guaranteed that after this function is called the `Task` containing thisLл%docл%л%%/// `id` will no longer use the `id`.л%    !6!selfid6             !  !     ! !notify=R    !!      !!          !                    !     !!  task!mk! new_task!!!      !!notifyidf 2tnotifyidf֯   PdocPPP/// Sets the `NotifyHandle` of the current task for the duration of the providedP doc   /// closure. doc///JdocJJJ/// This function takes a type that can be converted into a notify handle,JOdocOOO/// `notify` and `id`, and a closure `f`. The closure `f` will be executed suchOOdocOOO/// that calls to `task::current()` will store a reference to the notify handleO8doc888/// provided, not the one previously in the environment.8doc///NdocNNN/// Note that calls to `task::current()` in the closure provided *will not* beNOdocOOO/// equivalent to `task::current()` before this method is called. The two tasksOKdocKKK/// returned will notify different handles, and the task handles pulled outKOdocOOP/// during the duration of this closure will not notify the previous task. It\'sOOdocOOO/// recommended that you call `task::current()` in some capacity before callingOJdocJJJ/// this function to ensure that calls to `task::current()` inside of thisJ4doc444/// closure can transitively wake up the outer task.4doc/// doc   /// # Panics doc///NdocNNO/// This function will panic if it is called outside the context of a future\'sNMdocMMN/// task. This is only valid to call once you\'ve already entered a future viaMdoc/// `Spawn::poll_*` functions.   F T R      ĉ     7! OdocOOO/// An unsafe trait for implementing custom forms of memory management behind aO doc   /// `Task`. doc///LdocLLN/// The `futures` critically relies on \"notification handles\" to extract forLGdocGGH/// futures to contain and then later inform that they\'re ready to makeGGdocGGG/// progress. These handles, however, must be cheap to create and cheapGFdocFFF/// to clone to ensure that this operation is efficient throughout theFdoc/// execution of a program.doc///LdocLLL/// Typically this sort of memory management is done in the standard libraryLGdocGGG/// with the `Arc` type. An `Arc` is relatively cheap to allocate an isG?doc??@/// quite cheap to clone and pass around. Plus, it\'s 100% safe!?doc///MdocMMN/// When working outside the standard library, however, you don\'t always haveMLdocLLL/// and `Arc` type available to you. This trait, `UnsafeNotify`, is intendedLLdocLLN/// to be the \"unsafe version\" of the `Notify` trait. This trait encodes theLLdocLLM/// memory management operations of a `Task`\'s notification handle, allowingLNdocNNN/// custom implementations for the memory management of a notification handle.Ndoc///@doc@@@/// Put another way, the core notification type in this library,@=doc===/// `NotifyHandle`, simply internally contains an instance of=LdocLLN/// `*mut UnsafeNotify`. This \"unsafe trait object\" is then used exclusivelyLNdocNNN/// to operate with, dynamically dispatching calls to clone, drop, and notify.NKdocKKL/// Critically though as a raw pointer it doesn\'t require a particular formK<doc<<)`. The coercion to `UnsafeNotify` willH,doc,,,/// happen automatically and safely for you.,doc///IdocIIJ/// When working externally from the standard library it\'s recommended toIIdocIII/// provide a similar safe constructor for your custom type as opposed toI?doc???/// recommending an invocation of `NotifyHandle::new` directly.?      $ $!inner" i-doc---/// Constructs a new `NotifyHandle` directly.-doc///GdocGGG/// Note that most code will not need to call this. Implementers of theGIdocIII/// `UnsafeNotify` trait will typically provide a wrapper that calls thisI1doc112/// but you otherwise shouldn\'t call it directly.1doc///HdocHHJ/// If you\'re working with the standard library then it\'s recommended toHKdocKKK/// use the `NotifyHandle::from` function instead which works with the safeK+doc+++/// `Arc` type and the safe `Notify` trait.+inline  selfid  SGdocGGG/// Invokes the underlying instance of `Notify` with the provided `id`.G o selfid" \ & selfid" Q & self" `inline A Aselff"  v & Ā}self  Z &  $Á-docÁ-Á-./// Marker for a `T` that is behind &\'static.Á-  T    V   "   $  $ $$"$ $$ }""T    ?selfid " łx  ς+ selfid" à  σ, selfid" ̈́z  ؄+ ׅ"˅"T   ׅ څEself" s  + self"    +   T    ;src"  |  & PhantomData õPoll PhantomDataõStreamAsync!f801 s 0   ~   S E     V #""S E     V#&ڵĻ self "!  %ٻ   1  parkEventSetspawnRun UnparkEvent0 initExecutor AtomicTask TaskRc0LocalKey0with_unpark_eventTask0SpawnUnparkcurrent8 ˾,doc˾,˾,,//! Tasks used to drive a future computation˾,doc//!MdocMMN//! It\'s intended over time a particular operation (such as servicing an HTTPMʿNdocʿNʿNN//! request) will involve many futures. This entire operation, however, can beʿNKdocKKK//! thought of as one unit, as the entire result is essentially just movingK$doc$$$//! through one large state machine.$doc//!NdocNNP//! A \"task\" is the unit of abstraction for what is driving this state machineNLdocLLL//! and tree of futures forward. A task is used to poll futures and scheduleLNdocNNN//! futures with, and has utilities for sharing data between tasks and handlesNKdocKKK//! for notifying when a future is ready. Each task also has its own set ofK/doc/////! task-local data generated by `task_local!`./doc//!PdocPPP//! Note that libraries typically should not manage tasks themselves, but ratherPPdocPPR//! leave that to event loops and other \"executors\" (see the `executor` module),PNdocNNN//! or by using the `wait` method to create and execute a task directly on theNdoc//! current thread.doc//!LdocLLL//! More information about the task model can be found [online at tokio.rs].Ldoc//!SdocSSS//! [online at tokio.rs]: https://tokio.rs/docs/going-deeper-futures/futures-model/Sdoc//!doc//! ## Functionsdoc//!FdocFFF//! There is an important bare function in this module: `current`. TheFPdocPPP//! `current` function returns a handle to the currently running task, panickingPPdocPPQ//! if one isn\'t present. This handle is then used to later notify the task thatPBdocBBC//! it\'s ready to make progress through the `Task::notify` method.B UnsafeNotify with_notify Notify NotifyHandle spawnRunSpawnExecutorUnpark 8 doc   //! Executors doc//!IdocIII//! This module contains tools for managing the raw execution of futures,IMdocMMM//! which is needed when building *executors* (places where futures can run).Mdoc//!OdocOOO//! More information about executors can be [found online at tokio.rs][online].Odoc//!?doc???//! [online]: https://tokio.rs/docs/going-deeper-futures/tasks/? BiLockAcquired2BiLock2 BiLockGuard2 BiLockAcquire2 T9 8cfg898 feature88 use_std8 doc   //! Future-aware synchronization doc//!HdocHHH//! This module, which is modeled after `std::sync`, contains user-spaceHGdocGGG//! synchronization tools that work with futures, streams and sinks. InGKdocKKK//! particular, these synchronizers do *not* block physical OS threads, butK#doc###//! instead work at the task level.#doc//!PdocPPP//! More information and examples of how to use these synchronization primitivesP&doc&&&//! can be found [online at tokio.rs].&doc//!UdocUUU//! [online at tokio.rs]: https://tokio.rs/docs/going-deeper-futures/synchronization/U SeqCst#SeqCst#ExecutorLazy! IntoFuture ErrorTask0Async!FuturefmtLock0 tasklazyZPoll AtomicBoolArc%doc%%%//! A one-shot, futures-aware channel%1111111111114M1 1  2doc222/// Creates a new futures-aware, one-shot channel.2doc///NdocNNO/// This function is similar to Rust\'s channels found in the standard library.NMdocMMM/// Two halves are returned, the first of which is a `Sender` handle, used toMOdocOOO/// signal the end of a computation and provide its value. The second half is aOOdocOOO/// `Receiver` which implements the `Future` trait, resolving to the value thatO%doc%%%/// was given to the `Sender` handle.%doc///DdocDDD/// Each half can be separately owned and sent across threads/tasks.Ddoc///doc/// # Examplesdoc///doc/// ```doc/// use std::thread;doc/// use futures::sync::oneshot;doc/// use futures::*;doc///+doc+++/// let (p, c) = oneshot::channel::();+doc///doc/// thread::spawn(|| {doc/// c.map(|i| {#doc##%/// println!(\"got: {}\", i);#doc/// }).wait();doc/// });doc///doc/// p.send(3).unwrap();doc/// ```  T   B1 T   H  #   &selft #   "  , self#   , self#  H  + self#    ȋ, self#    , self#1   Ǚ, self# #   ž, self#    , #T   8selft#  ?  deprecatedǶ noterenamed to `send` since0.1.11;жdocӶڶԶ hiddenζcfg featurewith-deprecated#0.1.11renamed to `send`  selft# # ɻKη4docη4η44/// Completes this oneshot with a successful result.η4doc///HdocHHH/// This function will consume `self` and indicate to the other end, theHܸMdocܸMܸMM/// `Receiver`, that the value provided is the result of the computation thisܸMdoc/// represents.¹doc¹¹///¹ʹHdocʹHʹHH/// If the value is successfully enqueued for the remote end to receive,ʹHJdocJJJ/// then `Ok(())` is returned. If the receiving end was deallocated beforeJLdocLLL/// this function was called, however, then `Err` is returned with the valueL doc   /// provided.   self ## VFdocFFF/// Polls this `Sender` half to detect whether the `Receiver` this hasFdoc/// paired with has gone away.doc///KdocKKK/// This function can be used to learn about when the `Receiver` (consumer)KIdocIII/// half has gone away and nothing will be able to receive a message sentIdoc/// from `send`.þdocþþ///þ˾Ldoc˾L˾LL/// If `Ready` is returned then it means that the `Receiver` has disappeared˾LIdocIII/// and the result this `Sender` would otherwise produce should no longerIdoc/// be produced.doc///KdocKKK/// If `NotReady` is returned then the `Receiver` is still alive and may beKDdocDDD/// able to receive a message if sent. The current task, however, isDLdocLLL/// scheduled to receive a notification if the corresponding `Receiver` goesL doc   /// away. doc/// doc   /// # Panics doc///IdocIIJ/// Like `Future::poll`, this function will panic if it\'s not called fromIJdocJJJ/// within the context of a task. In other words, this should only ever beJ&doc&&&/// called from inside another future.&doc///FdocFFF/// If `Ok(Ready)` is returned then the associated `Receiver` has beenFJdocJJJ/// dropped, which means any work required for sending should be canceled.Jdoc///GdocGGH/// If you\'re calling this function from a context that does not have aG9doc999/// task, then you can use the `is_canceled` API instead.9   self # JAdocAAB/// Tests to see whether this `Sender`\'s corresponding `Receiver`Adoc/// has gone away.doc///KdocKKK/// This function can be used to learn about when the `Receiver` (consumer)KIdocIII/// half has gone away and nothing will be able to receive a message sentIdoc/// from `send`.doc///LdocLLL/// Note that this function is intended to *not* be used in the context of aLIdocIIJ/// future. If you\'re implementing a future you probably want to call theICdocCCC/// `poll_cancel` function which will block the current task if theCJdocJJK/// cancellation hasn\'t happened yet. This can be useful when working on aJFdocFFF/// non-futures related thread, though, which would otherwise panic ifFdoc/// `poll_cancel` were called.      #Z#T   2self#  7  + A##selffmt #  f & #`#self#  @ & #T   4self # =KdocKKK/// Gracefully close this receiver, preventing sending any future messages.Kdoc///CdocCCC/// Any `send` operation which happens after this method returns isCKdocKKK/// guaranteed to fail. Once this method is called the normal `poll` methodKKdocKKK/// can be used to determine whether a message was actually sent or not. IfK@doc@@@/// `Canceled` is returned from `poll` then no message was sent.@   self## _CdocCCC/// Attempts to receive a message outside of the context of a task.Cdoc///HdocHHH/// Useful when a [`Context`](Context) is not available such as within aHdoc/// `Drop` impl.doc///CdocCCC/// Does not schedule a task wakeup or have any other side effects.Cdoc///IdocIII/// A return value of `None` must be considered immediately stale (out ofIDdocDDD/// date) unless [`::close`](Receiver::close) has been called first.Ddoc////doc////// Returns an error if the sender was dropped./    ##T   7 #self## I  + #\#T   2self#  7  + I.doc.../// Handle returned from the `spawn` function..doc///PdocPPP/// This handle is a future representing the completion of a different future onPKdocKKK/// a separate executor. Created through the `oneshot::spawn` function thisKKdocKKK/// handle will resolve when the future provided to `spawn` resolves on theK2doc222/// `Executor` instance provided to that function.2doc///MdocMMM/// If this handle is dropped then the future will automatically no longer beMHdocHHH/// polled and is scheduled to be dropped. This can be canceled with theHdoc/// `forget` function, however.   T E        ##  %M  T    :#  fIdocIII/// Type of future which `Execute` instances below must be able to spawn.I  F     q  0 %futureexecutor     +KdocKKK/// Spawns a `future` onto the instance of `Executor` provided, `executor`,KAdocAAA/// returning a handle representing the completion of the future.Adoc///OdocOOO/// The `SpawnHandle` returned is a future that is a proxy for `future` itself.OOdocOOO/// When `future` completes on `executor` then the `SpawnHandle` will itself beOKdocKKK/// resolved. Internally `SpawnHandle` contains a `oneshot` channel and isK%doc%%%/// thus safe to send across threads.%doc///MdocMMM/// The `future` will be canceled if the `SpawnHandle` is dropped. If this isMOdocOOO/// not desired then the `SpawnHandle::forget` function can be used to continueO%doc%%%/// running the future to completion.%doc/// doc   /// # Panics doc///MdocMMM/// This function will panic if the instance of `Spawn` provided is unable toM doc   /// spawn the `future` provided. doc///IdocIII/// If the provided instance of `Spawn` does not actually run `future` toINdocNNN/// completion, then the returned handle may panic when polled. Typically thisNNdocNNN/// is not a problem, though, as most instances of `Spawn` will run futures toNdoc/// completion.doc///MdocMMM/// Note that the returned future will likely panic if the `futures` providedMOdocOOO/// panics. If a future running on an executor panics that typically means thatOIdocIII/// the executor drops the future, which falls into the above case of notI1doc111/// running the future to completion essentially.1   F E       $ (fexecutor   ߍ  & AdocAAA/// Spawns a function `f` onto the `Spawn` instance provided `s`.Adoc///OdocOOO/// For more information see the `spawn` function in this module. This functionOOdocOOO/// is just a thin wrapper around `spawn` which will execute the closure on theOLdocLLL/// executor provided and then complete the future that the closure returns.L    F R E       ĉ  Չ     7ʂ$T E     I#selfʂ$  M=doc===/// Drop this future without canceling the underlying future.=doc///IdocIII/// When `SpawnHandle` is dropped, the spawned future will be canceled asIIdocIIJ/// well if the future hasn\'t already resolved. This function can be usedIFdocFFF/// when to drop this future but keep executing the underlying future.F    ʂ$ʂ$T E     N#  self ʂ$     1  Aʂ$ʂ$T E    ! A  `#selff ʂ$  u   0  ʂ$iʂ$T E     I#self$  ;   0  $$F    ?self $#   , ՁA$Ё$F   Ձ ؁  Cselff $    , $g$F    :self$  ԃ;  ܃+ SendAll/ݢ threadϡ oneshot SeqCst# AsyncSink!  PopResult Sinkusize<  AtomicUsizeFuturefmttaskPollArc resultstreamSeqCst# StartSend& Results0ExecutorǢAnyҠ ErrorTask0Async!Queue1Mutex=áStreamţ TdocTTT//! A multi-producer, single-consumer, futures-aware, FIFO queue with back pressure.Tdoc//!OdocOOO//! A channel can be used as a communication primitive between tasks running onOMdocMMM//! `futures-rs` executors. Channel creation provides `Receiver` and `Sender`MLdocLLL//! handles. `Receiver` implements `Stream` and allows a task to read valuesL׆Ldoc׆L׆LL//! out of the channel. If there is no message to read from the channel, the׆LOdocOOO//! current task will be notified when a new value is sent. `Sender` implementsOLdocLLL//! the `Sink` trait and allows a task to send messages into the channel. IfLOdocOOO//! the channel is at capacity, then send will be rejected and the task will beO3doc333//! notified when additional capacity is available.3ʼndocʼnʼn//!ʼnɉdocɉɉ//! # Disconnectionɉ݉doc݉݉//!݉LdocLLL//! When all `Sender` handles have been dropped, it is no longer possible toLMdocMMM//! send values into the channel. This is considered the termination event ofMFdocFFF//! the stream. As such, `Sender::poll` will return `Ok(Ready(None))`.FËdocËË//!ËNjNdocNjNNjNN//! If the receiver handle is dropped, then messages can no longer be read outNjNCdocCCC//! of the channel. In this case, a `send` will result in an error.Cڌdocڌڌ//!ڌތdocތތ//! # Clean Shutdownތdoc//!LdocLLL//! If the `Receiver` is simply dropped, then it is possible for there to beLčLdocčLčLL//! messages still in the channel that will not be processed. As such, it isčLMdocMMO//! usually desirable to perform a \"clean\" shutdown. To do this, the receiverMߎOdocߎOߎOO//! will first call `close`, which will prevent any further messages to be sentߎOOdocOOO//! into the channel. Then, the receiver consumes the channel to completion, atO,doc,,,//! which point the receiver can be dropped.,111111111111111111111222222222lCopy Extend#Send BoxFromData Empty EqOrderingSync FnOnceIterator!ErrAsMutdrop  PartialEqOkSliceConcatExtErrVec# UnsafeCellAsRefString+ Inconsistent ExactSizeIterator"OkSomeDefaultIntoDoubleEndedIterator"Unpin  Inconsistent DropToString!FnSomeptr  AtomicPtr ResultOrdNoneToOwnedOptionClone IntoIterator#Sized  PartialOrdFnMutNoneData Empty 3ϣ =doc===//! A mostly lock-free multi-producer, single consumer queue.=doc//!KdocKKK//! This module contains an implementation of a concurrent MPSC queue. ThisKLdocLLL//! queue can be used to share data between threads, and is also used as theL'doc'''//! building block of channels in rust.'doc//!PdocPPP//! Note that the current implementation of this queue has a caveat of the `pop`PIdocIII//! method, and see the method for more information about it. Due to thisI@doc@@@//! caveat, this queue may not be appropriate for all use-cases.@1111 #doc###/// A result of the `pop` function.#  T    K   $  doc/// Some data has been popped   $  Edoc/// The queue is empty$ Z> KdocKKK/// The queue is in an inconsistent state. Popping data should succeed, butKIdocIII/// some pushers have yet to make enough progress in order allow a pop toIIdocIIK/// succeed. It is recommended that a pop() occur \"in the near future\" inI7doc777/// order to see if the sender has made progress or not7$  1  *$T   פ8 $*$T   פ81 T   8v $    ' $T   6$ JdocJJJ/// Creates a new queue that is safe to share among multiple producers andJdoc/// one consumer.  selft $  'doc'''/// Pushes a new value onto this queue.'  yO self$$ #doc###/// Pops some data from this queue.#doc///HdocHHH/// Note that the current implementation means that this function cannotHAdocAAA/// return `Option`. It is possible for this queue to be in anAFdocFFF/// inconsistent state where many pushes have succeeded and completelyFGdocGGG/// finished, but pops cannot return `Some(t)`. This inconsistent stateG@doc@@@/// happens when a pusher is preempted at an inopportune moment.@doc///LdocLLL/// This inconsistent state means that this queue does indeed have data, butL9doc999/// it does not currently have access to it at this time.9doc///JdocJJJ/// This function is unsafe because only one thread can call it at a time.J    $$T   3self $   ,   )Self $ ) $g'1 ,$ȲA1  ò$T   Ȳ3selffmt $    , A$$T   3selffmt$  z  + $$T    Aself$# ٵT  + $T   2self$  3̶Adoc̶A̶AA/// Returns the message that was attempted to be sent but failed.̶A  iηA1  ɷ$T   η3selffmt $    , A$$T   3selffmt$    ǹ, $$T   $;self$#   , $T   6self$  ȽDdocȽDȽDD/// Returns true if this error is a result of the channel being fullȽD  l self$  HdocHHH/// Returns true if this error is a result of the receiver being droppedH  p self$  AdocAAA/// Returns the message that was attempted to be sent but failed.A  i6  % % % usize::MAX - (usize::MAX >> 1)8  `   ` 88%8 OPEN_MASK$  $$$e  !OPEN_MASK)  )))g MAX_CAPACITY >> 1,    ,,%,2% m  self %  ' buffer1 1   JdocJJJ/// Creates an in-memory channel implementation of the `Stream` trait withJdoc/// bounded capacity.doc///MdocMMM/// This method creates a concrete implementation of the `Stream` trait whichMJdocJJJ/// can be used to send values across threads in a streaming fashion. ThisJ LdocLLL/// channel is unique in that it implements back pressure to ensure that theL HdocHHH/// sender never outpaces the receiver. The channel capacity is equal toH NdocNNN/// `buffer + num-senders`. In other words, each sender gets a guaranteed slotN OdocOOP/// in the channel capacity, and on top of that there are `buffer` \"first come,O 0doc001/// first serve\" slots available to all senders.0 doc/// OdocOOO/// The `Receiver` returned implements the `Stream` trait and has access to anyO EdocEEE/// number of the associated combinators for transforming the result.E  T      1 1   JdocJJJ/// Creates an in-memory channel implementation of the `Stream` trait withJ doc/// unbounded capacity. doc/// MdocMMM/// This method creates a concrete implementation of the `Stream` trait whichM NdocNNN/// can be used to send values across threads in a streaming fashion. A `send`N KdocKKK/// on this channel will always succeed as long as the receive half has notK HdocHHH/// been closed. If the receiver falls behind, messages will be bufferedH doc/// internally. doc/// OdocOOO/// **Note** that the amount of available system memory is an implicit bound toO LdocLLL/// the channel. Using an `unbounded` channel has the ability of causing theL LdocLLL/// process to run out of memory. In this case, the process will be aborted.L  T     buffer͑%   T   6Dϑ%T   D  selfmsg ϑ% $ $ DdocDDD/// Attempts to send a message on this `Sender` without blocking.D doc/// JdocJJK/// This function, unlike `start_send`, is safe to call whether it\'s beingJ IdocIII/// called on a task or not. Note that this function, however, will *not*I DdocDDD/// attempt to block the current task if the message cannot be sent.D doc/// HdocHHH/// It is not recommended to call this function from inside of a future,H FdocFFG/// only from an external thread where you\'ve otherwise arranged to beF 0doc000/// notified when the channel is no longer full.0    selfmsgdo_park%$ &  , selfmsg ϑ% ԯ%   , selfmsg%   , selfclose%    , self%    , selfcan_park%    , self%1  ]doc]]]/// Polls the channel to determine if there is guaranteed to be capacity to send at least one] doc/// item without waiting. doc/// MdocMMM/// Returns `Ok(Async::Ready(_))` if there is sufficient capacity, or returnsM TdocTTT/// `Ok(Async::NotReady)` if the channel is not guaranteed to have capacity. ReturnsT ڟ9docڟ9ڟ99/// `Err(SendError(_))` if the receiver has been dropped.ڟ9 doc///  doc   /// # Panics doc/// RdocRRR/// This method will panic if called from outside the context of a task or future.R    self%  ӣd EdocEEE/// Returns whether this channel is closed without needing a context.E  m selfdo_park%    Τ, ϑ%ϑ%T   ; ʬ$selfmsg%  $   , self%$   , self%Ŀ% R  + ͜%T   6self ͜% ԵB EdocEEE/// Returns whether this channel is closed without needing a context.E  m selfmsg% ԯ% _ 2doc222/// Sends the provided message along this channel.2 ӶdocӶӶ///Ӷ ۶Kdoc۶K۶KK/// This is an unbounded sender, so this function differs from `Sink::send`۶K LdocLLL/// by ensuring the return type reflects that the channel is always ready toL doc/// receive messages.   deprecatedǸ noterenamed to `unbounded_send`3 иdocӸڸԸ hiddenθrenamed to `unbounded_send`   selfmsg% ԯ% g ƹ2docƹ2ƹ22/// Sends the provided message along this channel.ƹ2 doc/// KdocKKK/// This is an unbounded sender, so this function differs from `Sink::send`K պLdocպLպLL/// by ensuring the return type reflects that the channel is always ready toպL doc/// receive messages.  ֻ ͜%͜%T   ;ռ $selfmsg ͜% % e  + self%Ŀ% \  + self%Ŀ% ݾR  +  'a1 %'a T    H! 1 selfmsg % ! % +  'a 6 self%% Z  'a 5 self%% R  'a 5 ͜%͜%T   3self%͜% U  + ϑ% ϑ%T   3self%ϑ%   , ϑ%ϑ%T   3self%    , "ؑ%T   :self ؑ%  doc/// Closes the receiving half doc/// KdocKKK/// This prevents any further messages from being sent on the channel whileK DdocDDD/// still enabling the receiver to drain messages that are buffered.D   self%   , self%    , self ؑ%%   , self%    , ؑ% ؑ%T   7 self%   , ؑ%ؑ%T   3self%    , ۅօ֜%T   ۅ2self ֜% 7 doc/// Closes the receiving half doc/// KdocKKK/// This prevents any further messages from being sent on the channel whileK DdocDDD/// still enabling the receiver to drain messages that are buffered.D  ɇ ֜%֜%T   7 self%% ΈG  ֈ+ s .doc.../// Handle returned from the `spawn` function.. ȉdocȉȉ///ȉ ̉Kdoc̉K̉KK/// This handle is a stream that proxies a stream on a separate `Executor`.̉K HdocHHH/// Created through the `mpsc::spawn` function, this handle will produceH PdocPPP/// the same values as the proxied stream, as they are produced in the executor,P JdocJJJ/// and uses a limited buffer to exert back-pressure on the remote stream.J doc/// NdocNNN/// If this handle is dropped, then the stream will no longer be polled and isN ЌdocЌЌ/// scheduled to be dropped.Ќ ItemErrorItem Error    % %  *!1%% *1 Ȏ RdocRRR/// Type of future which `Executor` instances must be able to execute for `spawn`.R  S   Ȏˎ zَc/1ڵ0 1ڵ 9" 1 streamexecutorbuffer $ - KdocKKK/// Spawns a `stream` onto the instance of `Executor` provided, `executor`,K 6doc666/// returning a handle representing the remote stream.6 doc/// BdocBBB/// The `stream` will be canceled if the `SpawnHandle` is dropped.B doc/// OdocOOO/// The `SpawnHandle` returned is a stream that is a proxy for `stream` itself.O HdocHHH/// When `stream` has additional items available, then the `SpawnHandle`H Β)docΒ)Β))/// will have those same items available.Β) doc/// KdocKKK/// At most `buffer + 1` elements will be buffered at a time. If the bufferK ȓOdocȓOȓOO/// is full, then `stream` will stop progressing until more space is available.ȓO HdocHHH/// This allows the `SpawnHandle` to exert backpressure on the `stream`.H doc///  doc   /// # Panics doc/// PdocPPP/// This function will panic if `executor` is unable spawn a `Future` containingP Ǖ!docǕ!Ǖ!!/// the entirety of the `stream`.Ǖ!   S E    Ӗ %   (streamexecutor $%  KdocKKK/// Spawns a `stream` onto the instance of `Executor` provided, `executor`,K PdocPPP/// returning a handle representing the remote stream, with unbounded buffering.P ܚdocܚܚ///ܚ BdocBBB/// The `stream` will be canceled if the `SpawnHandle` is dropped.B doc/// OdocOOO/// The `SpawnHandle` returned is a stream that is a proxy for `stream` itself.O HdocHHH/// When `stream` has additional items available, then the `SpawnHandle`H )doc)))/// will have those same items available.) doc/// LdocLLL/// An unbounded buffer is used, which means that values will be buffered asL NdocNNN/// fast as `stream` can produce them, without any backpressure. Therefore, ifN QdocQQQ/// `stream` is an infinite stream, it can use an unbounded amount of memory, andQ ܞ"docܞ"ܞ""/// potentially hog CPU resources.ܞ" doc///  doc   /// # Panics doc/// PdocPPP/// This function will panic if `executor` is unable spawn a `Future` containingP !doc!!!/// the entirety of the `stream`.!   S E     &   (ܣߣ ף&I E   ܣ ߣN# self &!  ,  1  اۧA&ӧ&I E   ا ۧJ#selff &  u  0  %%S   ?self %# ԩ  ܩ, A%%S   ;selff %  q  Ȭ+ ޭ1 T   8self &   ,  &)&T   פ8ܰ &а)&T   ܰפ߰8f2self & S & num&   stateȚ&   SeqCst#BoxSeqCst#Any ErrorTask0 UnsafeCell AtomicUsizeAsync!FuturefmtDerefMuttaskPollArcmem Deref 2222222222i/ 2  )&T   פ8 &)&T   פ8&2 T   @t Ρ&Ρ& !8doc888/// Creates a new `BiLock` protecting the provided data.8!doc///!LdocLLL/// Two handles to the lock are returned, and these are the only two handlesL!OdocOOO/// that will ever be available to the lock. These can then be sent to separateO!doc/// tasks to be managed there.  self Ρ&!2  %!EdocEEF/// Attempt to acquire this lock, returning `NotReady` if it can\'t beE! doc   /// acquired. !doc///!KdocKKK/// This function will acquire the lock in a nonblocking fashion, returningK!HdocHHH/// immediately if the lock is already held. If the lock is successfullyH!IdocIII/// acquired then `Async::Ready` is returned with a value that representsI!HdocHHH/// the locked value (and can be used to access the protected data). TheH!@doc@@@/// lock is unlocked when the returned `BiLockGuard` is dropped.@!doc///!>doc>>>/// If the lock is already held then this function will return>!KdocKKK/// `Async::NotReady`. In this case the current task will also be scheduledK!BdocBBB/// to receive a notification when the lock would otherwise becomeB!doc/// available.!doc///! doc   /// # Panics !doc///!HdocHHI/// This function will panic if called outside the context of a future\'sH! doc   /// task.     selfΡ&2  n!JdocJJL/// Perform a \"blocking lock\" of this lock, consuming this lock handle andJ!Ɇ,docɆ,Ɇ,,/// returning a future to the acquired lock.Ɇ,!doc///!IdocIII/// This function consumes the `BiLock` and returns a sentinel future,I!Ї;docЇ;Ї;;/// `BiLockAcquire`. The returned future will resolve toЇ;!CdocCCC/// `BiLockAcquired` which represents a locked lock similarly toC!؈doc؈؈/// `BiLockGuard`.؈!doc///!AdocAAA/// Note that the returned future will never resolve to an error.A   selfotherΡ&Ρ&   ' !GdocGGI/// Attempts to put the two \"halves\" of a `BiLock` back together andG!EdocEEE/// recover the original value. Succeeds only if the two `BiLock`sE!ʋ3docʋ3ʋ33/// originated from the same call to `BiLock::new`.ʋ3  self&    , ܓ&T   2self& m  &&l&T   2self & J  + ֖ 9!ҕIdocݑҕIҕII/// Error indicating two `BiLock`s were not two halves of a whole, andҕI!!docޑ!!!/// thus could not be `reunite`d.! й&T   ֖ ٖ Ρ&  Ρ& Ρ&Ρ&й&   9  9Ρ&9Ρ&99й&9Ρ&9Ρ&99 Aй&й&T   3selffmt й&    , ƘAй&й&T   Ƙ3selffmt&    , й&й&T   $;self&# c  + ϝ2 'a Ɲ&'a T    ϝB! self &֯ a  'a 5 2 'a &'a T   @!self & q  'a 5 2 'a g&'a T    ?!self & Ġ7  'a ̠5 &&T   7Ѣ2 self &!& $  , &T   2self&Ρ& ٩!;doc;;;/// Recovers the original `BiLock`, unlocking this lock.;  c&&T   5 self & s  + &&T   3self & ʬ  ׬, ֭&ѭ&T   ֭3self&  r  + 9!9cfg999 feature99 use_std9!0doc000//! Future-aware single-threaded synchronization0!doc//!!KdocKKK//! This module contains similar abstractions to `sync`, for communicationsK!*doc***//! between tasks on the same thread only.* SendAll/  StartSend& Results0oneshot ɴ AsyncSink! ExecutorWeakٳAnyͲ ErrorTask0SinkRcճAsync!ߴFuturefmtRefCelltaskPollVecDequemem Stream resultstream !JdocJJJ//! A multi-producer, single-consumer, futures-aware, FIFO queue with backJ!EdocEEE//! pressure, for use communicating between tasks on the same thread.E!αdocαα//!α!ұMdocұMұMN//! These queues are the same as those in `futures::sync`, except they\'re notұM!'doc'''//! intended to be sent across threads.'222222222222 Cbuffer2 2   [!>doc>>>/// Creates a bounded in-memory channel with buffered storage.>!ٵdocٵٵ///ٵ!ݵKdocݵKݵKK/// This method creates concrete implementations of the `Stream` and `Sink`ݵK!LdocLLL/// traits which can be used to communicate a stream of values between tasksL!LdocLLL/// with backpressure. The channel capacity is exactly `buffer`. On average,L!÷Jdoc÷J÷JJ/// sending a message through this channel performs no dynamic allocation.÷J  T   buffer%&   T   6̾Ǿ&T   ̾2selfmsg &     +߾  , &r&T   2self&& N  + &&T   ; &selfmsg & & `  + self&& Z  + self&& R  + &&T   3self&    , &T   2self & !doc/// Closes the receiving half!doc///!KdocKKK/// This prevents any further messages from being sent on the channel whileK!DdocDDD/// still enabling the receiver to drain messages that are buffered.D   &&T   7 self&!&& 2  , &U&T   2self&  0  + 2  t&T   2self && G  + &&T   ; &selfmsg & & e  + self&& Z  + self&& R  +  'a2 &'a T    H!   selfmsg & %& %b  'a 5 self&& Z  'a 5 self&' R  'a 5 &T   4selfmsg& & _!2doc222/// Sends the provided message along this channel.2!doc///!KdocKKK/// This is an unbounded sender, so this function differs from `Sink::send`K!LdocLLL/// by ensuring the return type reflects that the channel is always ready toL!doc/// receive messages.!  deprecated noterenamed to `unbounded_send`3!doc hiddenrenamed to `unbounded_send`   selfmsg& ' !2doc222/// Sends the provided message along this channel.2!doc///!KdocKKK/// This is an unbounded sender, so this function differs from `Sink::send`K!LdocLLL/// by ensuring the return type reflects that the channel is always ready toL!doc/// receive messages.    2 T   8self ' 7!doc/// Closes the receiving half!doc///!KdocKKK/// This prevents any further messages from being sent on the channel whileK!DdocDDD/// still enabling the receiver to drain messages that are buffered.D     ' 'T   7     self'!'' 2Y    + &'  !AdocAAA/// Creates an unbounded in-memory channel with buffered storage.A!doc///!JdocJJJ/// Identical semantics to `channel`, except with no limit to buffer size.J  T    !Gdoc˞GGG/// Error type for sending, used when the receiving end of a channel isG! doc̞   /// dropped & T        &        &  }A& &T   3selffmt &      , A& &T   3selffmt'  z    + & &T   $;self'# T    +  &T   2self&  3!AdocAAA/// Returns the message that was attempted to be sent but failed.A    ił˂v!.doc.../// Handle returned from the `spawn` function..!doc///!KdocKKK/// This handle is a stream that proxies a stream on a separate `Executor`.K!HdocHHH/// Created through the `mpsc::spawn` function, this handle will produceH"PdocPPP/// the same values as the proxied stream, as they are produced in the executor,P"JdocJJJ/// and uses a limited buffer to exert back-pressure on the remote stream.J"docŸ///"Ndoc߁NNN/// If this handle is dropped, then the stream will no longer be polled and isN"docğ/// scheduled to be dropped.  %%Item Error   %ł%˂   *؂$2%  2  "Rdoc؟RRR/// Type of future which `Executor` instances must be able to execute for `spawn`.R   S    zc/2ڵ0  ڵ  9" 2  streamexecutorbuffer $  -"KdocKKK/// Spawns a `stream` onto the instance of `Executor` provided, `executor`,K"6doc666/// returning a handle representing the remote stream.6"doc///"BdocBBB/// The `stream` will be canceled if the `SpawnHandle` is dropped.B"doc///"OdocOOO/// The `SpawnHandle` returned is a stream that is a proxy for `stream` itself.O"ɇHdocɇHɇHH/// When `stream` has additional items available, then the `SpawnHandle`ɇH")doc)))/// will have those same items available.)"doc///"KdocKKK/// At most `buffer + 1` elements will be buffered at a time. If the bufferK"OdocOOO/// is full, then `stream` will stop progressing until more space is available.O"܉Hdoc܉H܉HH/// This allows the `SpawnHandle` to exert backpressure on the `stream`.܉H"doc///" doc   /// # Panics "doc///"PdocPPP/// This function will panic if `executor` is unable spawn a `Future` containingP"!doc!!!/// the entirety of the `stream`.!   S E   Ջ   ϩ'   (streamexecutor $ݫ' "KdocKKK/// Spawns a `stream` onto the instance of `Executor` provided, `executor`,K"ҏPdocҏPҏPP/// returning a handle representing the remote stream, with unbounded buffering.ҏP"doc///"BdocBBB/// The `stream` will be canceled if the `SpawnHandle` is dropped.B"doc///"OdocOOO/// The `SpawnHandle` returned is a stream that is a proxy for `stream` itself.O"HdocHHH/// When `stream` has additional items available, then the `SpawnHandle`H")doc)))/// will have those same items available.)"doc///"LdocLLL/// An unbounded buffer is used, which means that values will be buffered asL"NdocNNN/// fast as `stream` can produce them, without any backpressure. Therefore, ifN"ѓQdocѓQѓQQ/// `stream` is an infinite stream, it can use an unbounded amount of memory, andѓQ"IdocIII/// potentially hog CPU resources. In particular, if `stream` is infiniteI"KdocKKL/// and doesn\'t ever yield (by returning `Async::NotReady` from `poll`), itK"$doc$$$/// will result in an infinite loop.$"ޕdocޕޕ///ޕ" doc   /// # Panics "doc///"PdocPPP/// This function will panic if `executor` is unable spawn a `Future` containingP"Ė!docĖ!Ė!!/// the entirety of the `stream`.Ė!   S E    ʗ'ߗ  (   'I E    N#     self '&     1  A' 'I E    J#selff '  x    0  ϩ' ϩ'S   ?    self ϩ'#    à , Aϩ' ϩ'S   ;selff ϩ'  q    + Future fmtʥ CanceledRefCell taskĦ Executor Canceled1Weak lazyZ Poll Cell Lazy! IntoFuture  Task0ʦ Rc Async! "%docģ%%%//! A one-shot, futures-aware channel%"ädocţää//!ä"ǤPdocƣǤPǤPP//! This channel is similar to that in `sync::oneshot` but cannot be sent acrossǤP" docǣ   //! threads. 222222 22 !!!!!!!!!!,2 2  "Ҧ2docҦ2Ҧ22/// Creates a new futures-aware, one-shot channel.Ҧ2"doc///"IdocIII/// This function is the same as `sync::oneshot::channel` except that theI"ӧ2docӧ2ӧ22/// returned values cannot be sent across threads.ӧ2  T     'T   6selfval' # ö"Ȳ4docؤȲ4Ȳ44/// Completes this oneshot with a successful result.Ȳ4"doc٤///"HdocڤHHH/// This function will consume `self` and indicate to the other end, theH"ֳMdocֳۤMֳMM/// `Receiver`, that the error provided is the result of the computation thisֳM"docܤ/// represents."docݤ///"ĴHdocޤĴHĴHH/// If the value is successfully enqueued for the remote end to receive,ĴH"JdocߤJJJ/// then `Ok(())` is returned. If the receiving end was deallocated beforeJ"LdocLLL/// this function was called, however, then `Err` is returned with the valueL" doc   /// provided.     self '# ݿ"FdocFFF/// Polls this `Sender` half to detect whether the `Receiver` this hasF"doc/// paired with has gone away."doc///"KdocKKK/// This function can be used to learn about when the `Receiver` (consumer)K"IdocIII/// half has gone away and nothing will be able to receive a message sentI"doc/// from `complete`."ѺdocѺѺ///Ѻ"ٺIdocٺIٺIJ/// Like `Future::poll`, this function will panic if it\'s not called fromٺI"JdocJJJ/// within the context of a task. In other words, this should only ever beJ"&doc&&&/// called from inside another future.&"doc///"LdocLLL/// If `Ready` is returned then it means that the `Receiver` has disappearedL"IdocIII/// and the result this `Sender` would otherwise produce should no longerI"ȽdocȽȽ/// be produced.Ƚ"ݽdocݽݽ///ݽ"KdocKKK/// If `NotReady` is returned then the `Receiver` is still alive and may beK"DdocDDD/// able to receive a message if sent. The current task, however, isD"LdocLLL/// scheduled to receive a notification if the corresponding `Receiver` goesL"Ͽ docϿ Ͽ  /// away.Ͽ       self ' Q"AdocԥAAB/// Tests to see whether this `Sender`\'s corresponding `Receiver`A"docե/// has gone away."doc֥///"KdocץKKK/// This function can be used to learn about when the `Receiver` (consumer)K"IdocإIII/// half has gone away and nothing will be able to receive a message sentI"doc٥/// from `send`."docڥ///"LdocۥLLL/// Note that this function is intended to *not* be used in the context of aL"IdocܥIIJ/// future. If you\'re implementing a future you probably want to call theI"CdocݥCCC/// `poll_cancel` function which will block the current task if theC"JdocޥJJK/// cancellation hasn\'t happened yet. This can be useful when working on aJ"FdocߥFFF/// non-futures related thread, though, which would otherwise panic ifF"doc/// `poll_cancel` were called.        '  'T   3self'       ,   'T   2self ' "KdocKKK/// Gracefully close this receiver, preventing sending any future messages.K"doc///"CdocCCC/// Any `send` operation which happens after this method returns isC"KdocKKK/// guaranteed to fail. Once this method is called the normal `poll` methodK"KdocKKK/// can be used to determine whether a message was actually sent or not. IfK"@doc@@@/// `Canceled` is returned from `poll` then no message was sent.@     '  !!'T   7     #  self'!'' +  !   , ' U!'T   2self'   0 ! !!+ b".doc.../// Handle returned from the `spawn` function.."doc///"PdocPPP/// This handle is a future representing the completion of a different future onP"KdocKKK/// a separate executor. Created through the `oneshot::spawn` function thisK"KdocKKK/// handle will resolve when the future provided to `spawn` resolves on theK"2doc222/// `Executor` instance provided to that function.2"doc///"MdocMMM/// If this handle is dropped then the future will automatically no longer beM"HdocHHH/// polled and is scheduled to be dropped. This can be canceled with theH"doc/// `forget` function, however. !  !T E        # 2 !!  !! # #GdocGGG/// Type of future which `Spawn` instances below must be able to spawn.G ! F     o  !!  -2!! & ƌ(!! futureexecutor $!   %#KdocبKKK/// Spawns a `future` onto the instance of `Executor` provided, `executor`,K#Adoc٨AAA/// returning a handle representing the completion of the future.A#docڨ///#OdocۨOOO/// The `SpawnHandle` returned is a future that is a proxy for `future` itself.O#OdocܨOOO/// When `future` completes on `executor` then the `SpawnHandle` will itself beO#KdocݨKKK/// resolved. Internally `SpawnHandle` contains a `oneshot` channel and isK#)docި)))/// thus not safe to send across threads.)#docߨ///#MdocMMM/// The `future` will be canceled if the `SpawnHandle` is dropped. If this isM#OdocOOO/// not desired then the `SpawnHandle::forget` function can be used to continueO#%doc%%%/// running the future to completion.%#doc///# doc   /// # Panics #doc///#MdocMMM/// This function will panic if the instance of `Spawn` provided is unable toM# doc   /// spawn the `future` provided. #doc///#IdocIII/// If the provided instance of `Spawn` does not actually run `future` toI#NdocNNN/// completion, then the returned handle may panic when polled. Typically thisN#NdocNNN/// is not a problem, though, as most instances of `Spawn` will run futures toN#doc/// completion. !  F E      ( (fexecutor $! ߍ   #AdocAAA/// Spawns a function `f` onto the `Spawn` instance provided `s`.A#doc///#OdocOOO/// For more information see the `spawn` function in this module. This functionO#OdocOOO/// is just a thin wrapper around `spawn` which will execute the closure on theO#LdocLLL/// executor provided and then complete the future that the closure returns.L !   F R E       ĉ  Չ    ! 7 !(T E    I#self(  @#=doc===/// Drop this future without canceling the underlying future.=#doc///#IdocIII/// When `SpawnHandle` is dropped, the spawned future will be canceled asI#IdocIIJ/// well if the future hasn\'t already resolved. This function can be usedI#FdocFFF/// when to drop this future but keep executing the underlying future.F !  !! ( !!!(T E     N#  !!  !!self (    !  !!1  A( !(T E    ! $ Z#selff (   u !  !!0  ( !!!(F    ? !! !!self (#   ! !!, A( !(F      Cselff (    ! !!, StartSend&G FutureGPollG IntoFutureH SinkGStreamG AsyncSink!G Async!G{G#B5docB5B57/// A \"prelude\" for crates using the `futures` crate.B5#CdocCC///C#CLdocCLCLN/// This prelude is similar to the standard library\'s prelude in that you\'llCL#CMdocCMCMM/// almost always want to import its entire contents, but unlike the standardCM#DQdocDQDQS/// library\'s prelude you\'ll have to do so manually. An example of using this is:DQ#EdocEE///E#EdocEE/// ```E#EdocEE/// use futures::prelude::*;E#EdocEE/// ```E#EdocEE///E#EMdocEMEMM/// We may add items to this over time as they become ubiquitous as well, butEM#FNdocFNFNO/// otherwise this should help cut down on futures-related imports when you\'reFN#F%docF%F%%/// working with the `futures` crate!F%!!!!!!!!!  OONFdocNFNFF/// Return type of future, indicating whether a value is ready or not.NF#Orustc_copy_clone_markerO T   O  P !!    OO1docO1O11/// Represents that a value is immediately ready.O1  !!O! OOO O OO UPPBdocPBPBB/// Represents that a value is not ready yet, but may be so later.PB !! fO     O #O automatically_derivedO #O allowO O O unused_qualificationsO !! T   O   O fselfother     O #O inlineO ! !O!A selfother (   O #O inlineۭO ! !O!A OA  O#Oautomatically_derivedO#OallowOOO unused_qualificationsO! T   O!Ofselff   O ! !O!( O  O#Oautomatically_derivedO#OallowOOO unused_qualificationsO! T   OOfself   O#OinlineO ! !O!A O   O#Oautomatically_derivedϯO#OallowЯOOO unused_qualificationsO T   O  OfWWVDdocVDVDD/// The result of an asynchronous attempt to send a value to a sink.VD#Wrustc_copy_clone_markerW T   W  Z !! XWBdocWBWBB/// The `start_send` attempt succeeded, so the sending process hasWBXCdocXCXCC/// *started*; you must use `Sink::poll_complete` to drive the sendXCXdocXX/// to completion.X !!    Z XIdocXIXII/// The `start_send` attempt failed due to the sink being full. The valueXIYHdocYHYHH/// being sent is returned, and the current `Task` will be automaticallyYHZ*docZ*Z**/// notified again once the sink has room.Z*  !!Z ! Z Z Z  Z  Z Z W     W #W automatically_derivedW #W allowW W W unused_qualificationsW !! T   W (W fselfother     W #W inlineW ! !W!A selfother (   W #W inline߰W ! !W!A WA  W#Wautomatically_derivedW#WallowWWW unused_qualificationsW! T   W!Wfselff   W ! !W!( W  W#Wautomatically_derivedW#WallowWWW unused_qualificationsW! T   WWfself   W#WinlineW ! !W!A W   W#Wautomatically_derivedӲW#WallowԲWWW unused_qualificationsW T   W(Wf͸иB%doc%%%/// A future which is never resolved.%doc///9doc999/// This future can be created with the `empty` function.9must_use" futures do nothing unless polled0 T E    ͸ и #8ٸ"  !! # A 8#automatically_derived#allow unused_qualifications! T E   ! $m#selff    8 !  !!/  EKdocKKK/// A future which defers creation of the actual future until a callback isKdoc/// scheduled.doc³///+docó+++/// This is created by the `lazy` function.+žmust_useijξо" futures do nothing unless polledþ0 \F R       #N!  !! " A N#automatically_derivedԳ#allowճ unused_qualifications! F R       A A m#selff    N !  !!/  ׿ڿN̿< !  F R    ׿ ڿ R #N !! N !!  (  N   !!! (    (  N   !! !    (     N(!! ĿĿA(NĿ#Ŀautomatically_derivedĿ#ĿallowĿĿĿ unused_qualificationsĿ!(F R    Ŀ Ŀ Ŀ(Ŀm#selff (  NĿ !  !Ŀ!/  &6docߵ666/// A future which adapts a function returning `Poll`.6doc///&doc&&&/// Created by the `poll_fn` function.&must_use" futures do nothing unless polled0 ! F    h !! A(h$automatically_derived$allow unused_qualifications!(F    mselff (  h ! !!* J<doc<<doc>>>/// (whether it is success of error) and emits EOF after that.> F    "" A $automatically_derived$allow unused_qualifications" F   mselff     " ""+ ļ$@docν@@= Future for the `join` combinator, waiting for two futures to$ docϽ   complete.$docн$1docѽ11. This is created by the `Future::join` method.$must_useҽ" futures do nothing unless polled0"  "AB ļ   Э   # "" # "" A۶)"۶)AB Э   þ ̾ A   Įǿ A  #selffmt ۶)   "  ""1  aB ۶)  "  AB    Э g #"۶)ABЭ     a#self ۶) | "  ""0  ۶)"""۶)ABЭ     f#% "" ""self)!۶)۶) + "  ""1  """"AB   )  w#0"Ӑ)""# % "")""self  "  "", ļ$CdocCC@ Future for the `join3` combinator, waiting for three futures to$ doc   complete.$doc$2doc22/ This is created by the `Future::join3` method.$must_use" futures do nothing unless polled0"   "ABC ļ    Э     2 "" )"" # "" A)")ABCЭ )  þ ̾ )  Įǿ ) ) A ǿ A  2selffmt )   "   ""6 aBC )  "   ABC     Э ))2")ABCЭ )    ) 2self ) | "   ""5 )""")ABCЭ )    ) 2% )""!  ""self)!)) + "   ""6  """")ABC) ) )   20"Ӑ)""'%  ""')""self))  "   ""1ļ$BdocBB? Future for the `join4` combinator, waiting for four futures to$ doc   complete.$doc$2doc22/ This is created by the `Future::join4` method.$must_use" futures do nothing unless polled0"   "ABCD ļ    Э ))  A "" )"" )"" #"" A)")ABCDЭ )) þ ̾ )  Įǿ ) ) )ǿ ) ) Aǿ A Aselffmt )   "   ""; aBCD )  "   ABCD     Э ))))A")ABCD Э ))   ) ) Aself ) | "   "": )""")ABCD Э ))   ) ) A% ))""$  ""self)!)) + "   "";  ""##)ABCD ))))    A0"Ӑ)""+% )""*)""self))  #   ""6ļ$BdocBB? Future for the `join5` combinator, waiting for five futures to$ doc   complete.$doc$2doc22/ This is created by the `Future::join5` method.$must_use" futures do nothing unless polled0#   #ABCDE ļ    Э ))))  P ## )## )## )## ### A)#)ABCDEЭ ))) þ ̾ )  Įǿ ) ) )ǿ ) ) )ǿ ) )Aǿ A Pselffmt )   #   ##@ aBCDE )  #   ABCDE     Э ))))))P#)ABCDEЭ )))   ) ) )Pself ) | #   ##? )###)ABCDEЭ )))   ) ) )P% )))##' ##self*!)) + #   ##@  ####*ABCDE)))))    P0#Ӑ)##/% ))##-)##self**  #   ##;I A   ; ##  ##       ## #               ## #          ## A $automatically_derived$allow unused_qualifications# A   )mselff     # ##+ ICdocCCC/// Future for the `map` combinator, changing the type of a future.Cdoc///0doc000/// This is created by the `Future::map` method.0must_use" futures do nothing unless polled0 AF    # ##   ##  A $automatically_derived$allow unused_qualifications# AF   ) m#selff     #  ##0  LMdocMMM/// Future for the `map_err` combinator, changing the error type of a future.Mdoc///4doc444/// This is created by the `Future::map_err` method.4must_use" futures do nothing unless polled0 AF    # ##  ՘*## A $automatically_derived$allow unused_qualifications# AF   ) m#selff     #  ##0  QNdocNNN/// Future for the `from_err` combinator, changing the error type of a future.Ndoc///5doc555/// This is created by the `Future::from_err` method.5must_use" futures do nothing unless polled0 AE    # ##   ## A $automatically_derived$allow unused_qualifications# AE   $ m#selff     #  ##0  `OdocOOO/// Future for the `or_else` combinator, chaining a computation onto the end ofO'doc'''/// a future which fails with an error.'doc///4doc444/// This is created by the `Future::or_else` method.4must_use" futures do nothing unless polled0 ABF      2)## A $automatically_derived$allow unused_qualifications# ABF   Į )   )m2selff     #  Đ ##5 oIdocIII/// Future for the `select` combinator, waiting for one of two futures toI doc   /// complete. doc///3doc333/// This is created by the `Future::select` method.3must_use" futures do nothing unless polled0ɬ AB    $  Э  ###  Aɬ $automatically_derived$allow unused_qualifications#ɬ AB  Э  Į  $  m#selff ɬ    #  ##0  p=doc===/// Future yielded as the second result in a `Select` future.=doc///LdocLLL/// This sentinel future represents the completion of the second future to aL#doc###/// `select` which finished second.#must_useŀǀ" futures do nothing unless polled0 AB    $  Э  #Ɓ#  ## # A $automatically_derived$allow unused_qualifications# AB  Э  Į  $  m#selff     #  ##0  Cۿ*AB     W# ##  ##  ۿ*     ### ۿ*    ۿ*     ### ۿ*   Aۿ*$automatically_derived$allow unused_qualifications#ۿ*AB   Į  m#selff ۿ*   #  ##0  ђ7QdocQQQ/// Future for the `select2` combinator, waiting for one of two differently-typedQdoc/// futures to complete.doc///6doc666/// This is created by the [`Future::select2`] method.6ёdocёё///ёՑ9docՑ9Ց99/// [`Future::select2`]: trait.Future.html#method.select2Ց9must_use" futures do nothing unless polled0 AB   #ѷ*## ɒɒA ɒ$ɒautomatically_derivedɒ$ɒallowɒɒɒ unused_qualificationsɒ# AB ɒ ɒ ɒĮɒm#selff    ɒ #  #ɒ#0  ʜ͜М^ʚIdocʚIʚII/// Future for the `then` combinator, chaining computations on the end ofʚI-doc---/// another future regardless of its outcome.-›doc››///›ƛ1docƛ1ƛ11/// This is created by the `Future::then` method.ƛ1must_use" futures do nothing unless polled0 ABF ʜ ͜ М ܜ  2)## A $automatically_derived$allow unused_qualifications# ABF   Į ) ܜ  )m2selff     #  Đ ##5 pCdocCCC/// Combines two different futures yielding the same item and errorCdoc/// types into a single type. AB   #Ӣ ##  ##    Ѣdoc/// First branch of the type   ##Ѣ# ѢѢѢ Ѣ ѢѢ D    ۢdocۢۢ/// Second branch of the typeۢ   ###    E A $automatically_derived$allow unused_qualifications# AB   Įm#selff     #  ##0  ݪʪM:doc:::/// Do something with the item of a future, passing it on.:ϩdocϩϩ///ϩө4docө4ө44/// This is created by the `Future::inspect` method.ө4must_use" futures do nothing unless polled0 AF ݪ   # ##  ՘*## A $automatically_derived$allow unused_qualifications# AF   ) m#selff     #  ##0  U ABC     h2 ##  ##  ##         ## #  #                   ## #          ## A $automatically_derived$allow unused_qualifications# ABC   Į ) m2selff     #   ##5 Copy ̒#Extend#̒#Send ̒#Box̒#From̒#Eq̒#Sync ̒#FnOnce̒#Iterator!̒#Err̒# UnwindSafe-͒ #AsMut̒# catch_unwind.͒ #drop ̒#Any͒ # PartialEq̒#Ok̒#SliceConcatExt̒#Err̒#AssertUnwindSafe-͒#Vec#̒#AsRef̒#String+̒#Async!͒#ExactSizeIterator"̒#Ok̒#Future͒#Some̒#Default̒#Into̒#AssertUnwindSafe͒#DoubleEndedIterator"̒#Unpin ̒#Drop̒#ToString!̒#Fn̒#Some̒#Result̒#Ord̒#None̒#ToOwned̒#Poll͒#Option̒#Clone̒# IntoIterator#̒#Sized ̒# PartialOrd̒#FnMut̒#None̒#12q%2cfg222 feature22 use_std1#######$$$&&$$$oEВfuture &  ϒ $ F В В- В Mђ*#В$$$*F ђ ђ+ђ K#ђ&$$#ђ $$)self *!** 1#Ғ $ $Ғ$.Ւ-  #Ւ$$$ȃ+F Ւ ՒB#֒ $$#֒ $$self ȃ+ #֒K $ $֒$-Copy ؒ$Extend#ؒ$Send ؒ$Boxؒ$Fromؒ$Eqؒ$Sync ؒ$FnOnceؒ$Iterator!ؒ$Errؒ$AsMutؒ$drop ؒ$ PartialEqؒ$ IntoFutureؒ $Okؒ$SliceConcatExtؒ$Errؒ$Vec#ؒ$AsRefؒ$String+ؒ$Async!ؒ$ExactSizeIterator"ؒ$Okؒ$Futureؒ$Someؒ$fmtؒ$Defaultؒ$Intoؒ$DoubleEndedIterator"ؒ$Unpin ؒ$Dropؒ$ToString!ؒ$Fnؒ$Someؒ$Resultؒ$Ordؒ$Noneؒ$ToOwnedؒ$Pollؒ$Optionؒ$Cloneؒ$ IntoIterator#ؒ$Sized ؒ$mem ؒ$ PartialOrdؒ$FnMutؒ$Noneؒ$/2q %2cfg222 feature22 use_std1$גPdocגPגPP//! Definition of the `JoinAll` combinator, waiting for all of a list of futuresגP$גdocגג//! to finish.ג$$$$$$$$&&$$$$ےے$ْLdocْLْLL/// A future which takes a list of futures and resolves with a vector of theْL$ڒdocڒڒ/// completed values.ڒ$ڒdocڒڒ///ڒ$ڒ6docڒ6ڒ66/// This future is created with the `join_all` method.ڒ6$ڒmust_useڒڒ" futures do nothing unless polledڒ0$Iےے ے $ے6#&Ѡ$$ &ܒA+$ܒ$+Iܒܒ ܒ AѠݒ AԠޒ kselffmt +  $ޒ $$ޒ$.Ԡ+ 7$ Ԡ+#&Ѡ#7+  ̖++7ԠfѠԠ71Ai+  $ߒPdocߒPߒPP/// Creates a future which represents a collection of the results of the futuresߒP$ doc   /// given. $doc///$OdocOOO/// The returned future will drive execution for all of its underlying futures,O$PdocPPP/// collecting the results into a destination `Vec` in the same order as theyP$PdocPPP/// were provided. If any future returns an error then all other futures will beP$OdocOOO/// canceled and an error will be returned immediately. If all futures completeO$PdocPPP/// successfully, however, then the returned future will succeed with a `Vec` ofP$doc/// all the successful results.$doc///$doc/// # Examples$doc///$doc/// ```$doc/// use futures::future::*;$doc///$doc/// let f = join_all(vec![$doc/// ok::(1),$doc/// ok::(2),$doc/// ok::(3),$doc/// ]);$doc/// let f = f.map(|x| {$!doc!!!/// assert_eq!(x, [1, 2, 3]);!$doc/// });$doc///$doc/// let f = join_all(vec![$$doc$$$/// Box::new(ok::(1)),$$%doc%%%/// Box::new(err::(2)),%$$doc$$$/// Box::new(ok::(3)),$$doc/// ]);$doc/// let f = f.then(|x| {$doc/// assert_eq!(x, Err(2));$ doc   /// x $doc/// });$doc/// ``` $I  "+$ $$$+I  K$/#+$$ $,Ԡ$$ self +!++ 1$ $$$.Copy $Extend#$Send $Box$From$Eq$Sync $FnOnce$Iterator!$Err$AsMut$drop $ PartialEq$Ok$ IntoFuture $SliceConcatExt$Err$Vec#$AsRef$String+$Async!$ExactSizeIterator"$Ok$Future$Some$Default$Into$DoubleEndedIterator"$Unpin $Drop$ToString!$Fn$Some$Ord$None$Result$ToOwned$Poll$Option$Clone$ IntoIterator#$Sized $mem $ PartialOrd$FnMut$None$.2r%2cfg222 feature22 use_std1$JdocJJJ//! Definition of the `SelectAll`, finding the first future in a list thatJ$ doc   //! finishes. $$$$$$$&&$$$ $doc hidden A b8̖+Ѡ ++$ ++Ѡ  ̖+ѠԠaԠAiter&Ѡ $BdocBBB/// Creates a new future which will select over a list of futures.B$doc///$PdocPPP/// The returned future will wait for any future within `iter` to be ready. UponP%LdocLLL/// completion or failure the item resolved will be returned, along with theL%HdocHHH/// index of the future that was ready and the list of all the remainingH% doc   /// futures. %doc///% doc   /// # Panics %doc///%IdocIII/// This function will panic if the iterator specified contains no items.I $I   &  $$$$+A  B$% # $$'$' +$$! self +!++ 1$ $ $$.Copy $Extend#$Send $Box$From$Eq$Sync $FnOnce$Iterator!$Err$AsMut$drop $ PartialEq$Ok$ IntoFuture $SliceConcatExt$Err$Vec#$AsRef$String+$Async!$ExactSizeIterator"$Ok$Future$Some$Default$Into$DoubleEndedIterator"$Unpin $Drop$ToString!$Fn$Some$Result$Ord$None$ToOwned$Poll$Option$Clone$ IntoIterator#$Sized $mem $ PartialOrd$FnMut$None$.2r%2cfg222 feature22 use_std1%PdocPPP//! Definition of the `SelectOk` combinator, finding the first successful futureP%܆doc܆܆//! in a list.܆$$$$$$$&&$$ ̖+Ѡ ++$ ++Ѡ +ԠaԠAiter&Ѡ %^doc^^^/// Creates a new future which will select the first successful future over a list of futures.^%doc///%YdocYYY/// The returned future will wait for any future within `iter` to be ready and Ok. UnlikeY%TdocTTT/// `select_all`, this will only return the first successful completion, or the lastT%ЌQdocЌQЌQQ/// failure. This is useful in contexts where any success is desired and failuresЌQ%-doc---/// are ignored, unless all the futures fail.-%ЍdocЍЍ///Ѝ%ԍ docԍ ԍ  /// # Panicsԍ %ፓdocፓፓ///ፓ%卓Idoc卓I卓II/// This function will panic if the iterator specified contains no items.卓I $I   &  $ $$$+A  B$ +$$$Ƒ $$self +!++ 1$⑓ $ $ꑓ$.SeqCst#$SeqCst#$error$ops $HashMapJ$executor韓$Task0ӟ$ UnsafeCell$ AtomicUsizeݠ$Async!$Future$fmt$Notify$task͟$Mutex=Ѡ$Poll$Arc̠$mem $Spawn$2r %2cfg222 feature22 use_std1%DdocDDD//! Definition of the Shared combinator, a future that is cloneable,D%*doc***//! and can be polled in multiple threads.*%doc//!%doc//! # Examples%doc//!%doc//! ```%doc//! use futures::future::*;%םdocםם//!ם%۝"doc۝"۝""//! let future = ok::<_, bool>(6);۝"%"doc"""//! let shared1 = future.shared();"%"doc"""//! let shared2 = shared1.clone();"%Ğ,docĞ,Ğ,,//! assert_eq!(6, *shared1.wait().unwrap());Ğ,%,doc,,,//! assert_eq!(6, *shared2.wait().unwrap());,%doc//! ```$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&%&&&%%% 4M%ơEdocơEơEE/// A future that is cloneable and can be polled in multiple threads.ơE%OdocOOO/// Use `Future::shared()` method to convert any future into a `Shared` future.O%ޢmust_use碓颓" futures do nothing unless polledܢ0% %F   $% %% &$ʣ %% ᣓA+$ܣ%+F ᣓ    A Ҥ _selffmt +  $䤓 % %뤓%.$+F  æ D$Ѧ%% $$%% '$N& & %% >&$陸%%% " $U+ $%% $$=JJ%% /0$⨓⨓⨓⨓f1$f2$f3$ĩĩf4$ǩߩߩǩǩשǩffuture + 㩓 % F  >$ %%%%%+F  Efuture + 9%  deprecated since0.1.12 noteuse `Future::shared` instead쭓F%cfgخ featureŮǮwith-deprecated#%ᮓdoc䮓뮓宓 hidden߮0.1.12use `Future::shared` instead % %%%self++ %YdocYYY/// If any clone of this `Shared` has completed execution, returns its result immediatelyY%XdocXXX/// without blocking. Otherwise, returns None without triggering the work represented byX%찓doc찓찓/// this `Shared`.찓 % %%self + $۳ % %鳓%.self++ $ % %%.self+  $η % %ڷ%.+$%%%+F  B$ +%%$޹#+%%self,!++ +$ % %%.$"%'a'a 6 $ 'a%% $ ,È,  $" 'a%%" ""%",""  %'a$%,'a*self , $ %'a%%3 Γ+$Γ%+F Γ Γ>self++ $Γ % %Γ%.Г+$Г%+F Г Г>self,  $Г % %Г%.+$ѓ%+self_id + $ғ %%ғ%)Փ +$Փ+F Փ ַ֓֓  ֓  ֓  ֓  ֓֓ +$֓+F ֓ דַד,ד,ד,ד,דiדA+$ד%+F ד ؓ ؓ ؓ +ؓ Yselffmt +  $ؓv % %ؓ%-ۓ&  $ۓ|%%,T ۓ6$ۓ %%self , $ۓ9 % %ۓ%-ݓ&E$ݓ~%%ߖ,E ,ݓ<$ݓ,%%self ߖ, , $ޓ: %,%ޓ%-ޓAߖ,$ޓ%ߖ,E,ޓA,ޓ Dselff,  $ߓV %,%ߓ%-ߓߖ,$ߓ%%ߖ,E,ߓ, Fself,# $F %,%%-self,  #$K%allow deprecated %,%%l>zzyQ%2cfg222 feature22 use_std1%w)docw)w)& A type alias for `Box`w)%wdocwww hiddenw%w  deprecatedwyw notexxremoved without replacement, recommended to use a \ local extension trait or function if needed, more \ details in https://github.com/rust-lang-nursery/futures-rs/issues/228wremoved without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228   TE z z!#z  2z%2cfg222 feature22 use_std1&&&,F zzE2{ &&2{ &&self ,!,, 12{[ & &{&( ϒϒD$Β-docΒ-Β--/// Future for the `catch_unwind` combinator.Β-$ΒdocΒΒ///Β$Β9docΒ9Β99/// This is created by the `Future::catch_unwind` method.Β9$ϒmust_useϒϒ" futures do nothing unless polledΒ0*F ϒ ϒ #ϒ && ΒA*#Β%Βautomatically_derivedΒ%ΒallowΒΒΒ unused_qualificationsΒ&*F Β Β ϒtselff *  #Β & &Β&-ْ$ؒH& T ْ!ْ @$ْ && $ْߘ!&&  ڬ,  $ْ   &&ْ & ْ ْ ْ ڬ,ْ  ْ ْ ߘ!ڬ,  $ْ   &&ْ &ߘ!ْ ْ ْ ڬ,ْ ߘ!ْ ْ ؒAڬ,$ؒ%ؒautomatically_derivedؒ%ؒallowؒؒؒ unused_qualificationsؒ&ڬ,T ؒ!ؒ!ْAߘ!ؒtselff ڬ,  $ؒ & &ؒ&->$OdocOOO/// Future for the `select_all` combinator, waiting for one of any of a list ofO$doc/// futures to complete.$doc///$1doc111/// This is created by the `select_all` function.1$must_use" futures do nothing unless polled0+A   $ +&& A+$&automatically_derived&allow unused_qualifications&+A   tselff +  $ & &&-=%NdocNNN/// Future for the `select_ok` combinator, waiting for one of any of a list ofN%RdocRRR/// futures to successfully complete. Unlike `select_all`, this future ignores allR%ވ)docވ)ވ))/// but the last error, if there are any.ވ)%doc///%0doc000/// This is created by the `select_ok` function.0%Љmust_useىۉ" futures do nothing unless polledΉ0+A   $ +&& ƉA+$Ɖ&Ɖautomatically_derivedƉ&ƉallowƉƉƉ unused_qualificationsƉ&+A Ɖ Ɖ tselff +  $Ɖ & &Ɖ&-ړړ.%ٓPdocٓPٓPP/// A wrapped item of the original future that is cloneable and implements DerefٓP%ړdocړړ/// for ease of use.ړ,T ړ $ۓ && ړA,$ړ&ړautomatically_derivedړ&ړallowړړړ unused_qualificationsړ&,T ړ!ړtselff,  $ړ & &ړ&-ړ,$ړ&ړautomatically_derivedړ&ړallowړړړ unused_qualificationsړ&,T ړړtself,, $ړ&ړinlineړ & &ړ&Jݓݓ0%ܓQdocܓQܓQQ/// A wrapped error of the original future that is cloneable and implements DerefܓQ%ܓdocܓܓ/// for ease of use.ܓߖ,E,ݓ $ݓ ,&& ݓAߖ,$ݓ&ݓautomatically_derivedݓ&ݓallowݓݓݓ unused_qualificationsݓ&ߖ,E,ݓA,ݓtselff,  $ݓ &,&ݓ&-ݓߖ,$ݓ&ݓautomatically_derivedݓ&ݓallowݓݓݓ unused_qualificationsݓ&ߖ,E,ݓ,ݓtself,ߖ, $ݓ&ݓinlineݓ &,&ݓ&J LdocLLL/// Kinds of errors that can be returned from the `Execute::spawn` function.L «doc««///« ƫOdocƫOƫOO/// Executors which may not always be able to accept a future may return one ofƫO AdocAAA/// these errors, indicating why it was unable to spawn a future.A&rustc_copy_clone_marker  HdocHHH/// This executor has shut down and will no longer accept new futures toH  doc   /// spawn. &&  IdocIII/// This executor has no more capacity to run more futures. Other futuresI ڮ;docڮ;ڮ;;/// need to finish before this executor can accept another.ڮ;&&  doc hidden&& O3 2 & automatically_derived & allow   unused_qualifications &mselfother    2 & inline &&&@ 2&automatically_derived&allow unused_qualifications&mself, 2&inline &&&@  2&automatically_derived&allow unused_qualificationsmA2&automatically_derived&allow unused_qualifications&mselff,  2 &&&% ه" LdocLLL/// A stream which is just a shim over an underlying instance of `Iterator`.L ݆doc݆݆///݆ 5doc555/// This stream will never block and is always ready.5 must_use" streams do nothing unless polled03implementation moved to `iter_ok` and `iter_result`I 5 3implementation moved to `iter_ok` and `iter_result`&& O5  ه"3implementation moved to `iter_ok` and `iter_result` &&ه"ه"ه"ه"ه"ه" 5A&automatically_derived&allow unused_qualifications&3implementation moved to `iter_ok` and `iter_result`IAm5selff   3implementation moved to `iter_ok` and `iter_result` &&&a5 U ϏLdocϏLϏLL/// A stream which is just a shim over an underlying instance of `Iterator`.ϏL doc/// 5doc555/// This stream will never block and is always ready.5 must_use" streams do nothing unless polled0IE  #&& Ñ'    && $ ߐߐAߐ&ߐautomatically_derivedߐ&ߐallowߐߐߐ unused_qualificationsߐ&IEߐ,ߐ ߐ$ߐm#selff   ߐ & &ߐ&0  ܚ) LdocLLL/// A stream which is just a shim over an underlying instance of `Iterator`.L doc/// 5doc555/// This stream will never block and is always ready.5 must_use" streams do nothing unless polled0I && A&automatically_derived&allow unused_qualifications&I,mselff    &&&+ ԥ^ 5doc555/// Stream that produces the same element repeatedly.5 ΤdocΤΤ///Τ Ҥ?docҤ?Ҥ??/// This structure is created by the `stream::repeat` function.Ҥ? must_use" streams do nothing unless polled0TE   # && *&& A&automatically_derived&allow unused_qualifications&TE ! $m#selff    &  &&0  p LdocLLL/// A stream combinator which chains a computation onto values produced by aL Ѯ docѮ Ѯ  /// stream.Ѯ ݮdocݮݮ///ݮ @doc@@@/// This structure is produced by the `Stream::and_then` method.@ must_use" streams do nothing unless polled0SFU   ш 2 &&  && &Ͱ && A&automatically_derived&allow unused_qualifications'SFU Ω ) A ш A-m2selff̊   '   &&5  doc/// State of chain stream.'S1S2Ϟݞ B %'' '' '' -   %doc%%%/// Emitting elements of first stream% '' ' '   -    M -   &doc&&&/// Emitting elements of second stream& '' '   -   N  0doc000/// Temporary value to replace first with second0-'' wXA-&automatically_derived&allow unused_qualifications'-S1S2ϞAݞAm%selff -   '''0  5 6doc666/// An adapter for chaining the output of two streams.6 doc/// BdocBBB/// The resulting stream produces items from first stream and thenB doc/// from second stream. must_use" streams do nothing unless polled0S1S2Ϟݞ %-'' A&automatically_derived&allow unused_qualifications'S1S2Ϟ-ݞē-m%selff    '''0  X֨S  < '' ''' A֨&automatically_derived&allow unused_qualifications'֨S Ωmselff ֨   ' ''+ 8',E, 7,'' -'' ,-    ,'' ',   - ,  -'' A-&automatically_derived&allow unused_qualifications'-E,,mselff -   ',''+ B (doc(((/// A stream which contains no elements.( doc/// AdocAAA/// This stream can be created with the `stream::empty` function.A must_use" streams do nothing unless polled0TE   #"('' A&automatically_derived&allow unused_qualifications'TE ! $m#selff    '  ''0  4 MdocMMM/// A stream combinator used to filter the results of a stream and only yieldM doc/// some values. doc/// >doc>>>/// This structure is produced by the `Stream::filter` method.> must_use" streams do nothing unless polled0SF   # ''  '' A&automatically_derived&allow unused_qualifications'SF Ω )m#selff   '  ''0    7 Ndoc N NN/// A combinator used to filter the results of a stream and simultaneously map N ، doc، ، /// them to a different type.،  doc  ///  Bdoc B BB/// This structure is returned by the `Stream::filter_map` method. B Ѝ must_useٍ ۍ " streams do nothing unless polled΍ 0SF   # ''   '' ƍ ƍ Aƍ &ƍ automatically_derivedƍ &ƍ allowƍ ƍ ƍ  unused_qualificationsƍ 'SF ƍ Ωƍ  ƍ )ƍ m#selff  ƍ  '  'ƍ '0  Ҡ  X ޞ Ldocޞ Lޞ LL/// A combinator used to flatten a stream-of-streams into one long stream ofޞ L doc  /// elements. doc  ///  ?doc ? ??/// This combinator is created by the `Stream::flatten` method. ? must_use  " streams do nothing unless polled 0 S Ҡ    ''  ʽ''  A & automatically_derived & allow    unused_qualifications 'S Ω   mselff    ' ' '+ ĵ ǵ ʵ ϵ  r Odoc‰ O OO/// A future used to collect all the results of a stream into one generic type. O docÉ  ///  9docĉ 9 99/// This future is returned by the `Stream::fold` method. 9 must_useʼn  " streams do nothing unless polled 0SFFutT ĵ  ǵ ʵ ϵ ݵ C ''   ''  ''' )    A & automatically_derived߉ & allow    unused_qualifications 'SFFutT Ω  )  A  A ݵ A- mCselff     '  ' ': Ķ Ƕ  '  TF Ķ  Ƕ Ӷ  \ #  ''   ''   %doc݊ % %%/// Placeholder state when doing work %-'' lM -    Idocߊ I II/// Ready to process the next stream item; current accumulator is the `T` I   '' '    -    q  -   <doc < <doc>>>/// Consumes this combinator, returning the underlying stream.>'doc///'HdocHHH/// Note that this may discard intermediate state of this combinator, soH'GdocGGG/// care should be taken to avoid losing resources when this is called.G ( ((/((((((/S ޕ ׬/ X((((((selfitemĴ/ ( ( ((.selfĴ/ޗ (a ( ((-selfĴ/ޗ (Q ( ((-/( )))/S/؁׬/́& T(*/))("))selfĴ/!// 2(҂ ) )ڂ).fmt)Poll) IntoFuture )Fuse'Њ)StreamȊ)FuturesUnordered,֊)Async!))2cfg222 feature22 use_std1)))))))))))))))oE協'ꊔNdocꊔNꊔNN/// An adaptor for a stream of futures to execute the futures concurrently, ifꊔN':doc:::/// possible, delivering results as they become available.:'doc///'PdocPPP/// This adaptor will buffer up a list of pending futures, and then return theirP'ɌCdocɌCɌCC/// results in the order that they complete. This is created by theɌC'&doc&&&/// `Stream::buffer_unordered` method.&'must_use" streams do nothing unless polled0) )S ׬/ ))) )Ҏ8,/)) ) )) A/))/S ֏Ωߏ ׬/ / Yselffmt /  )Ӑ ) )ڐ).ےsamt / В ) S ے׬/&/P۔)֔)))/S/׬/& ۔Sself/Պ A'ǕIdocǕIǕII/// Acquires a reference to the underlying stream that this combinator isǕI'doc/// pulling from. ) ))self / I'CdocCCC/// Acquires a mutable reference to the underlying stream that thisC'doc/// combinator is pulling from.'ޗdocޗޗ///ޗ'旔Idoc旔I旔II/// Note that care must be taken to avoid tampering with the state of the旔I'7doc777/// stream which may otherwise confuse this combinator.7 ) ))self/  E'>doc>>>/// Consumes this combinator, returning the underlying stream.>'doc///'HdocHHH/// Note that this may discard intermediate state of this combinator, soH'ךGdocךGךGG/// care should be taken to avoid losing resources when this is called.ךG ) ))/)월 )))/S/Ŝ׬/& T)蜔*/)))"))self/!// 2) ) )ǝ)./))))))/S ޕ饔 ׬/ X))))Ʀ))selfitem/ )ꦔ ) )).self/ޗ )a ) ))-self/ޗ )٨Q ) )⨔)-Copy )Extend#)Send )Box)From)Eq)Sync )FnOnce)Iterator!)Err) UnwindSafe- )AsMut) catch_unwind.메 )Any˩ )drop ) PartialEq)Ok)SliceConcatExt)Err)AssertUnwindSafe-)Vec#)AsRef)String+)Async!)ExactSizeIterator")Ok)Some)Default)Into)AssertUnwindSafe)DoubleEndedIterator")Unpin )Drop)ToString!)Fn)Some)Result)Ord)None)ToOwned)Poll)Option)Clone) IntoIterator#)Sized )mem )Stream̪ ) PartialOrd)FnMut)None)2)2cfg222 feature22 use_std1)))))))))))..)..))wE䬔stream .  ٬ ) S 䬔-  Mʮ/)Ů )))/S ʮ/ K)&ڵ)))+))self /!// 8)ݯ ) )寔).귔-  )巔)))/S 귔B))))))self / )ϸS ) )׸)-Copy )Extend#)Send )Box)From)Eq)Sync )FnOnce)Iterator!)Err)AsMut)drop ) PartialEq)Ok)SliceConcatExt)Fuse')Err)Vec#)AsRef)String+)Async!ӹ)ExactSizeIterator")Ok)Some)Default)Into)DoubleEndedIterator")Unpin )Drop)ToString!)Fn)Some)Result)Ord)None)ToOwned)Pollڹ)Option)Clone) IntoIterator#)Sized )mem )Stream) PartialOrd)FnMut)None). )2cfg̳222 feature22 use_std1))))))))..))**mEscapacity .    ) S ɾ>/)*****/S ޕ O))))))selfitem / ) * )).self/ޗ )”a * )”)-self/ޗ )ÔQ * )Ô)-Ĕ)Ĕ****/S ĔĔCself/# )Ĕ * *Ĕ*.self /Պ ƔA'ŔIdocŔIŔII/// Acquires a reference to the underlying stream that this combinator isŔI'ƔdocƔƔ/// pulling from.Ɣ * *Ɣ*self/ ȔI'ƔCdocƔCƔCC/// Acquires a mutable reference to the underlying stream that thisƔC'ǔdocǔǔ/// combinator is pulling from.ǔ'ǔdocǔǔ///ǔ'ǔIdocǔIǔII/// Note that care must be taken to avoid tampering with the state of theǔI'Ȕ7docȔ7Ȕ77/// stream which may otherwise confuse this combinator.Ȕ7 * *Ȕ*self/  ˔E'ɔ>docɔ>ɔ>>/// Consumes this combinator, returning the underlying stream.ɔ>'ɔdocɔɔ///ɔ'ʔHdocʔHʔHH/// Note that this may discard intermediate state of this combinator, soʔH'ʔGdocʔGʔGG/// care should be taken to avoid losing resources when this is called.ʔG * **˔/)˔ ***/S ˔̔B)̔%/**)̔"**self/!// 2)̔ * *̔*.Copy ٔ*Extend#ٔ*Send ٔ*Boxٔ*Fromٔ*Eqٔ*Sync ٔ*FnOnceٔ*Iterator!ٔ*Errٔ*AsMutٔ*drop ٔ* PartialEqٔ*Okٔ*SliceConcatExtٔ*Errٔ*Vec#ٔ*AsRefٔ*String+ٔ*Async!ڔ*ExactSizeIterator"ٔ*Okٔ*Futureڔ*Someٔ*Defaultٔ*Intoٔ*DoubleEndedIterator"ٔ*Unpin ٔ*Dropٔ*ToString!ٔ*Fnٔ*Someٔ*Resultٔ*Ordٔ*Noneٔ*ToOwnedٔ*Pollڔ*Optionٔ*Cloneٔ* IntoIterator#ٔ*Sized ٔ*mem ٔ*Streamڔ* PartialOrdٔ*FnMutٔ*Noneٔ*. )2cfg222 feature22 use_std1*******..***i Eܔs .  ܔ| * S ܔܔ=ݔ*ݔ*ߓ0S ݔݔ=self ߓ0/ *ݔ^ * *ݔ*-ޔߓ0*ޔ***ߓ0S ޔޔB*ߔ/***ߔ**self0!/ *ߔ * *ߔ*.executor*Stream** )2cfg222 feature22 use_std1**..***^E****. S >self 0Պ A'IdocIII/// Acquires a reference to the underlying stream that this combinator isI(doc/// pulling from. * **self 0 I(CdocCCC/// Acquires a mutable reference to the underlying stream that thisC(doc/// combinator is pulling from.(doc///(IdocIII/// Note that care must be taken to avoid tampering with the state of theI(7doc777/// stream which may otherwise confuse this combinator.7 * **self0  E(>doc>>>/// Consumes this combinator, returning the underlying stream.>(doc///(HdocHHH/// Note that this may discard intermediate state of this combinator, soH(GdocGGG/// care should be taken to avoid losing resources when this is called.G * **s 0  _ * S =!0***0S @*&ڵ**self00! *R * **-Async!*Future*fmt*Send/ *mpsc *Poll*Any *Error*Sink*Stream*  )2cfg222 feature22 use_std1(cfg featurewith-deprecated$(  deprecated since0.1.4 note!use sync::mpsc::channel insteadI(allow deprecated************....*..****++0.1.4use sync::mpsc::channel instead.  .   (FdocFFF/// Creates an in-memory channel implementation of the `Stream` trait.F(doc///(MdocMMM/// This method creates a concrete implementation of the `Stream` trait whichM(JdocJJJ/// can be used to send values across threads in a streaming fashion. ThisJ(LdocLLL/// channel is unique in that it implements back pressure to ensure that theL(KdocKKK/// sender never outpaces the receiver. The `Sender::send` method will onlyK(LdocLLL/// allow sending one message and the next message can only be sent once theL(doc/// first was consumed.(doc///(OdocOOO/// The `Receiver` returned implements the `Stream` trait and has access to anyO(EdocEEE/// number of the associated combinators for transforming the result.E0.1.4use sync::mpsc::channel instead *  TE    ' #)(QdocֺQQQ/// Error type for sending, used when the receiving end of the channel is droppedQ0.1.4use sync::mpsc::channel instead*  TE   }' #* 0.1.4use sync::mpsc::channel instead ** B' 0  *)0.1.4use sync::mpsc::channel instead   **) ))0) )) ' A0**0.1.4use sync::mpsc::channel instead0TE  u'#selffmt 0  *0.1.4use sync::mpsc::channel instead *  **[' A0**0.1.4use sync::mpsc::channel instead0TE  u'#selffmt0  *рz0.1.4use sync::mpsc::channel instead *  *؀*Z' ԁׁ0*ρ*0.1.4use sync::mpsc::channel instead0TE ԁ ׁ$ '#self0# *T0.1.4use sync::mpsc::channel instead *  **Z' 0*삕***0.1.4use sync::mpsc::channel instead0TE  y'#*0.1.4use sync::mpsc::channel instead **B'*0.1.4use sync::mpsc::channel instead **B'self 0 *0.1.4use sync::mpsc::channel instead *  *ǃ*[' *+0.1.4use sync::mpsc::channel instead0TE  t'#selft0 .   s(9doc999/// Sends a new value along this channel to the receiver.9(doc///(KdocKKK/// This method consumes the sender and returns a future which will resolveK(͇>doc͇>͇>>/// to the sender again when the value sent has been consumed.͇>0.1.4use sync::mpsc::channel instead +  ++' 0*+++0.1.4use sync::mpsc::channel instead0TE  y'#*0.1.4use sync::mpsc::channel instead0++B'*ԉ0.1.4use sync::mpsc::channel instead0++B'self 0!00 1*0.1.4use sync::mpsc::channel instead +  ++[' Async!+ StartSend& +fmt+ AsyncSink! +Poll+BiLock2Ō +AnyՋ +Error苕+Sink+Stream+  )2cfg222 feature22 use_std1+++++++++++..++..+++++++E++. S :selfother0.  +  - k(ύDdoc޽ύDύDF/// Attempts to put the two \"halves\" of a split `Stream + Sink` backύD(Jdoc߽JJJ/// together. Succeeds only if the `SplitStream` and `SplitSink` areJ(玕Fdoc玕F玕FF/// a matching pair originating from the same call to `Stream::split`.玕F + ++0++++0S B+ѐ+++ꐕ++self 0 + + ++.++0S 4selfother000  (ғDdocғDғDF/// Attempts to put the two \"halves\" of a split `Stream + Sink` backғD(JdocJJJ/// together. Succeeds only if the `SplitStream` and `SplitSink` areJ(ꔕFdocꔕFꔕFF/// a matching pair originating from the same call to `Stream::split`.ꔕF + ++0++++++0S ޕF++++ϗ++selfitem 0 + + ++.self0ޗ + + ++.self0ޗ +웕 + ++.ɝs 00  + S ɝ̝ޕ՝GA(NdocNNN/// Error indicating a `SplitSink` and `SplitStream` were not two halvesN(ǟ<docǟ<ǟ<self0# +s + ++-SeqCstۦ+Release즕+Acquire㦕+ task_implȨ+SeqCstۦ+ FromIterator#ݥ+ UnsafeNotify +Weakç+Acquire㦕+ PhantomData+ NotifyHandle +usize<Χ + UnsafeCell+Async!+DebugAѥ+ PhantomData +Future+fmt˥+Notify+RelaxedҦ+AcqRel+task৕+ptr + AtomicTaskΨ + AtomicPtr +RelaxedҦ+Poll+AcqRel+ AtomicBool +Arc+mem +Stream槕+Release즕+!)2cfg222 feature22 use_std1( doc   //! An unbounded set of futures. +++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,.3,,,,,,,,,,,,------Iﵕӵj(ܨ docܨ ܨ  /// An unbounded set of futures.ܨ (doc///(OdocOOQ/// This \"combinator\" also serves a special function in this library, providingO(ѩMdocѩMѩMM/// the ability to maintain a set of futures that and manage driving them allѩM(doc/// to completion.(doc///(MdocMMM/// Futures are pushed into this set and their realized values are yielded asM(KdocKKK/// they are ready. This structure is optimized to manage a large number ofK(ЫPdocЫPЫPP/// futures. Futures managed by `FuturesUnordered` will only be polled when theyЫP(NdocNNN/// generate notifications. This reduces the required amount of work needed toN((doc(((/// coordinate large numbers of futures.((doc///(PdocPPP/// When a `FuturesUnordered` is first created, it does not contain any futures.P(NdocNNN/// Calling `poll` in this state will result in `Ok(Async::Ready(None))` to beN(IdocIII/// returned. Futures are submitted to the set using `push`; however, theI(MdocMMM/// future will **not** be polled at this point. `FuturesUnordered` will onlyM(կMdocկMկMM/// poll managed futures when `FuturesUnordered::poll` is called. As such, itկM(:doc:::/// is important to call `poll` after pushing new futures.:(ްdocްް///ް(ⰕPdocⰕPⰕPP/// If `FuturesUnordered::poll` returns `Ok(Async::Ready(None))` this means thatⰕP(LdocLLL/// the set is currently not managing any futures. A future may be submittedL(8doc888/// to the set at a later time. At that point, a call to8(KdocKKL/// `FuturesUnordered::poll` will either return the future\'s resolved valueK(EdocEEE/// **or** `Ok(Async::NotReady)` if the future has not yet completed.E(˳doc˳˳///˳(ϳDdocϳDϳDD/// Note that you can create a ready-made `FuturesUnordered` via theϳD(QdocQQQ/// `futures_unordered` function in the `stream` module, or you can start with anQ(洕;doc洕;洕;;/// empty set with the `FuturesUnordered::new` constructor.洕;(must_use" streams do nothing unless polled0, ,,F ﵕ +, ,, &+ ,, + , ,, " ˶ ,  +41T ˶פζ; 1+41T   A•+•(allow• missing_debug_implementations', ,T • Q+•,, +Õ", ,, &+Õ* 1,, " +Õ1,, ĕ+Õ1-T ĕ A+ĕ,, +ŕ$1,, +ŕ$1,, +ƕ"1,, +Ǖ1,, +Ǖ$,, ȕ+ȕJ, T ȕ 9+ȕ1,, 11  +ȕ  ,,ȕ,1ȕȕȕ1ȕ1ȕȕ +ȕ1,, +ȕ 1,, ȕ1+ȕ|,1T ȕ!ɕ=1 +ɕ< , ,,&ɕ+ɕ,1T ɕ!ʕ=1 ˕(ʕ.docʕ.ʕ../// Constructs a new, empty `FuturesUnordered`ʕ.(ʕdocʕʕ///ʕ(ʕMdocʕMʕMM/// The returned `FuturesUnordered` does not contain any futures and, in thisʕM(˕Idoc˕I˕II/// state, `FuturesUnordered::poll` will return `Ok(Async::Ready(None))`.˕I , ,,ҕ+ѕ!,,,,,,,1T ҕ@self 1 ӕ3(ҕ7docҕ7ҕ77/// Returns the number of futures contained in the set.ҕ7(ҕdocҕҕ///ҕ(ҕ:docҕ:ҕ::/// This represents the total number of in-flight futures.ҕ: , ,ӕ,self1  ԕ<(ӕ1docӕ1ӕ11/// Returns `true` if the set contains no futuresӕ1 , ,ԕ,]selffuture 1   ו(ԕdocԕԕ/// Push a future into the set.ԕ(ԕdocԕԕ///ԕ(ԕHdocԕHԕHH/// This function submits the given future to the set for managing. ThisԕH(ՕJdocՕJՕJJ/// function will not call `poll` on the submitted future. The caller mustՕJ(֕Kdoc֕K֕KK/// ensure that `FuturesUnordered::poll` is called in order to receive task֕K(֕doc֕֕/// notifications.֕ , ,ו,self1.  ߕ(ޕEdocޕEޕEE/// Returns an iterator that allows modifying each future in the set.ޕE , ,ߕ,qselfnode11 + , ,,.selfnode111 +(4doc444/// Insert a new node into the internal linked list.4 , ,,`selfnode111 +(EdocEEE/// Remove the node from the linked list tracking all nodes currentlyE("doc"""/// managed by `FuturesUnordered`." , ,,1+(,,,1T !B+ߘ!,,+!,,self1!ߘ!! &+' , ,,.⋖+ҋ,'a 'aT ⋖ 'a勖ֱ1ҋ v'+" 'a, ,, *+, ,, -,'a +,1'aT B!self 1 + ,'a ,,8ΛA1+ɛ,1T Λ!ћ>selffmt1  +p , ,,-1+ ,1T 5self1  + , ,,.#1  +,1F  >iter 1 +稖 ,  ,T, #  # f !.'a +,,,1'aF F!+ʬ 'a ,,$ self 11 +欖 ,'a ,,8self 1% +үX ,'a ,߯,7".'a +31'aF ?!谖+㰖,,,1T 谖8selfnode 11 +ʱ(KdocKKK/// The enqueue function from the 1024cores intrusive MPSC queue algorithm.K , ,ձ,wselfҾ11 +(JdocJJJ/// The dequeue function from the 1024cores intrusive MPSC queue algorithmJ(doc///(JdocJJJ/// Note that this unsafe as it required mutual exclusion (only one threadJ(߶.doc߶.߶../// can call this) to be guaranteed elsewhere.߶. , ,,selfҾ11 +ؾ< , ,ྖ,-1+,1T 5self 1 + , ,,.Ɩ+Ŗ1(ŖallowŖŖŖ missing_debug_implementationsŖ','a 'aT Ɩ 'aƖ1Ŗ1 Q'+Ɩ 'aײ1,, $ 11  +Ŗ1 'a ,,Ŗ1 ײ1Ŗ1Ŗ1, Ŗ11Ŗ1Ŗ1 Ɩ,'a +Ɩn,1'aT ƖA!self 11 +Ɩ< ,'a ,Ɩ,7ǖ,'a +ǖ,'aT ǖB!handle1 +ǖ ,'a ,,2ɖ+ɖ", T ɖ <+ɖ ,,  1  +ɖ"  ,,ɖ" ɖ"ɖ"1ɖ" ɖ"ɖ" ˖ 1+ʖ%1T ˖2˖ 1+˖%1T ˖2˖1+˖,1T ˖5self_id 1 +˖ , ,˖,.͖1+͖--1T ͖7self1 +Ζ - ,Ζ,.self1  +ϖ - ,Ж,.іp 1"  +іl - T і7Җ+Җ-1T Җ4me 1 +Җ - -Җ-.ۖ1+ۖ-1T ۖ5self 1 +ۖ - -ۖ-.ptr  +r - T 7ptr1  + - T 8s#  + -! +- +1-- !1+-1self 1 +Z ---(Async!-DebugA-Future-fmt-Eq-Ordering- FromIterator#-Ord-Poll- BinaryHeap- PartialEq - IntoFuture -Stream- PartialOrd -FuturesUnordered,-)2cfg222 feature22 use_std1------------------.3------------ E. 1-z-1T 4selfother 1 1  -L - ---1-!1T 211 --1T 5selfother11  -] - ---1--1T 5selfother111  - - --.1----1T !B-".ߘ!-- -!--self 1!11 1- - --.("doc"""/// An unbounded queue of futures."(doc///(OdocOOQ/// This \"combinator\" is similar to `FuturesUnordered`, but it imposes an orderO(GdocGGG/// on top of the set of futures. While futures in the set will race toG(LdocLLL/// completion in parallel, results will only be returned in the order theirL(0doc000/// originating futures were added to the queue.0(doc///(OdocOOO/// Futures are pushed into this queue and their realized values are yielded inO(KdocKKK/// order. This structure is optimized to manage a large number of futures.K(NdocNNN/// Futures managed by `FuturesOrdered` will only be polled when they generateN)PdocPPP/// notifications. This reduces the required amount of work needed to coordinateP)doc/// large numbers of futures.)doc///)NdocNNN/// When a `FuturesOrdered` is first created, it does not contain any futures.N)NdocNNN/// Calling `poll` in this state will result in `Ok(Async::Ready(None))` to beN)KdocKKK/// returned. Futures are submitted to the queue using `push`; however, theK)KdocKKK/// future will **not** be polled at this point. `FuturesOrdered` will onlyK)KdocKKK/// poll managed futures when `FuturesOrdered::poll` is called. As such, itK):doc:::/// is important to call `poll` after pushing new futures.:)doc///)NdocNNN/// If `FuturesOrdered::poll` returns `Ok(Async::Ready(None))` this means thatN)NdocNNN/// the queue is currently not managing any futures. A future may be submittedN):doc:::/// to the queue at a later time. At that point, a call to:)IdocIIJ/// `FuturesOrdered::poll` will either return the future\'s resolved valueI)JdocJJJ/// **or** `Ok(Async::NotReady)` if the future has not yet completed. WhenJ)LdocLLL/// multiple futures are submitted to the queue, `FuturesOrdered::poll` willL)JdocJJJ/// return `Ok(Async::NotReady)` until the first future completes, even ifJ)5doc555/// some of the later futures have already completed.5)doc///)BdocBBB/// Note that you can create a ready-made `FuturesOrdered` via theB)OdocOOO/// `futures_ordered` function in the `stream` module, or you can start with anO);doc;;;/// empty queue with the `FuturesOrdered::new` constructor.;)must_use" streams do nothing unless polled0- -T ! !-.,1-- -11-- --- --- futures-Ѡ )KdocKKK/// Converts a list of futures into a `Stream` of results from the futures.K)doc///)KdocKKK/// This function will take an list of futures (e.g. a vector, an iterator,K)ɀIdocɀIɀII/// etc), and return a stream. The stream will yield items as they becomeɀI)LdocLLL/// available on the futures internally, in the order that their originatingL)NdocNNN/// futures were submitted to the queue. If the futures complete out of order,N)OdocOOO/// items will be stored internally within `FuturesOrdered` until all precedingO)doc/// items have been yielded.)doc///)JdocJJJ/// Note that the returned queue can also be used to dynamically push moreJ)냗4doc냗4냗44/// futures into the queue as they become available.냗4 -I    Ɔ2-x-2T Ɔ!=2 -: - --&- ----2T !⇗C2 ĉ),doc,,,/// Constructs a new, empty `FuturesOrdered`,)doc///)KdocKKK/// The returned `FuturesOrdered` does not contain any futures and, in thisK)GdocGGG/// state, `FuturesOrdered::poll` will return `Ok(Async::Ready(None))`.G - --self 2 ɍ])9doc999/// Returns the number of futures contained in the queue.9)doc///)?doc???/// This represents the total number of in-flight futures, both?)Ɍ@docɌ@Ɍ@@/// those currently processing and those that have completed butɌ@)6doc666/// which are waiting for earlier futures to complete.6 - -ԍ-self2  䎗l)3doc333/// Returns `true` if the queue contains no futures3 - --_selffuture 2   )֏!doc֏!֏!!/// Push a future into the queue.֏!)doc///)LdocLLL/// This function submits the given future to the internal set for managing.L)ՐJdocՐJՐJJ/// This function will not call `poll` on the submitted future. The callerՐJ)IdocIII/// must ensure that `FuturesOrdered::poll` is called in order to receiveI)doc/// task notifications. - --2----2T !B-ߘ!---ٔ!--self2!22 2- - --.A2--2T !!Gselffmt2  -œn - -ɜ--#-  --2F  >iter 2 - -  -T- 11W Q)2cfg222 feature22 use_std1))doc))& A type alias for `Box`))doc hidden)  deprecated noteremoved without replacement, recommended to use a \ local extension trait or function if needed, more \ details in https://github.com/rust-lang-nursery/futures-rs/issues/228removed without replacement, recommended to use a local extension trait or function if needed, more details in https://github.com/rust-lang-nursery/futures-rs/issues/228   TE  !#  )2cfg222 feature22 use_std1...2S}E....self 2!22 8c . ..+ M'ܪ-docܪ-ܪ--/// Stream for the `catch_unwind` combinator.ܪ-'doc///'9doc999/// This is created by the `Stream::catch_unwind` method.9'۫must_use䫔櫔" streams do nothing unless polled٫0/S  ). .. ѫA/)ѫ)ѫautomatically_derivedѫ)ѫallowѫѫѫ unused_qualificationsѫ./S ѫΩѫtselff /  )ѫ . .ѫ.-)>ٲ2S  3) ..  ٲ2  )   .. .    ٲ2    )ٲ2.. )ٲ2.. Aٲ2))automatically_derived)allow unused_qualifications.ٲ2S Ωtselff ٲ2  ) . ..-ּļ'3doc333/// An adaptor that chunks up elements in a vector.3'doc///'MdocMMM/// This adaptor will buffer up a list of items in the stream and pass on theM'NdocNNN/// vector used for buffering when a specified capacity has been reached. ThisN'ӻ.docӻ.ӻ../// is created by the `Stream::chunks` method.ӻ.'must_use" streams do nothing unless polled0/*S ּ演 )/.. ).. ! ).. ) .. A/))automatically_derived)allow unused_qualifications./S Ω演Atselff/  ) . ..-ܔ۔Q'ڔHdocڔHڔHH/// A future which collects all of the values of a stream into a vector.ڔH'ڔdocڔڔ///ڔ'ڔ;docڔ;ڔ;;/// This future is created by the `Stream::collect` method.ڔ;'۔must_use۔۔" streams do nothing unless polled۔0ߓ0*S ܔܔ *ܔ .. *ܔ/.. ۔Aߓ0*۔)۔automatically_derived۔)۔allow۔۔۔ unused_qualifications۔.ߓ0S ۔Ω۔ܔ۔tselff ߓ0  *۔ . .۔.-6'MdocMMM/// A stream combinator which converts an asynchronous stream to a **blockingM'doc/// iterator**.'doc///'MdocMMM/// Created by the `Stream::wait` method, this function transforms any streamM'PdocPPP/// into a standard iterator. This is implemented by blocking the current threadP':doc::;/// while items on the underlying stream aren\'t ready yet.:'must_use&$iterators do nothing unless advanced40*S  *.. A0*)automatically_derived)allow unused_qualifications.0S Ωtselff0  * . ..-B(CdocCCC/// The transmission end of a channel which is used to send values.C(doc///(CdocCCC/// This is created by the `channel` method in the `stream` module.C0.1.4use sync::mpsc::channel instead0+TE   '#*!0.1.4use sync::mpsc::channel instead1 .. H'A0*)automatically_derived)allow unused_qualifications.0.1.4use sync::mpsc::channel instead0TE ! $t'#selff 0  *0.1.4use sync::mpsc::channel instead .  ..Z' F(GdocGGG/// The receiving end of a channel which implements the `Stream` trait.G(doc///(PdocPPP/// This is a concrete implementation of a stream which can be used to representP(GdocGGG/// a stream of values being computed elsewhere. This is created by theG(,doc,,,/// `channel` method in the `stream` module.,(must_use" streams do nothing unless polled00.1.4use sync::mpsc::channel instead0TE   '#*#0.1.4use sync::mpsc::channel instead1 .. H'A0*)automatically_derived)allow unused_qualifications.0.1.4use sync::mpsc::channel instead0TE ! $t'#selff 0  *0.1.4use sync::mpsc::channel instead .  ..Z' N(&doc&&&/// Future returned by `Sender::send`.&0.1.4use sync::mpsc::channel instead0TE   R'#*'0.1.4use sync::mpsc::channel instead/2.. H'A0*)automatically_derived)allow unused_qualifications.0.1.4use sync::mpsc::channel instead0TE ! $t'#selff 0  *0.1.4use sync::mpsc::channel instead .  ..Z' %(Ԍ%docԌ%Ԍ%%/// A `Stream` part of the split pairԌ%0+S  Q+ 2 .. 20  +%  ..%2%%0%2%% A0+*automatically_derived*allow unused_qualifications.0S Ωtselff 0  + . ..-#(ݒ#docݒ#ݒ##/// A `Sink` part of the split pairݒ#0+S  O+ 2.. 20  +#  ..#2##0#2## A0+*automatically_derived*allow unused_qualifications.0S Ωtselff 0  + . ..-(ݪ;docݪ;ݪ;;/// Mutable iterator over all futures in the unordered set.ݪ;.'a 'aF  'a2 g'+ , .. " +׫ .. +竖1  'a, .. 0-91T  6- .. - ..       Odoc O OO/// Sink for the `Sink::with` combinator, chaining a computation to run *prior* O 0doc 0 00/// to pushing a value into the underlying sink. 0 must_use  sinks do nothing unless polled .SUFFut   ȥ ޕ  ̸  C  ..  Đ ..  &... )    .. &    A * automatically_derived * allow    unused_qualifications .SUFFut̸ Ω  ͣ/  ) ȥ A ޕ    A3 A mCselff    . Đ . .:     * automatically_derived * allow    unused_qualifications .SUFFut̸     Đ ȥ  ޕ    3  mCself  * inline  . Đ . .U   DFutT   M% ..   ..  ..      .. .             .. .          A * automatically_derived * allow    unused_qualifications .FutT A  A m%selff޵    . . .0    * automatically_derived * allow    unused_qualifications .FutT   " m%self޵  * inline  . . .K  bdocbbb/// Sink for the `Sink::with_flat_map` combinator, chaining a computation that returns an iteratorb<doc<<1doc111/// Sink for the `Sink::sink_map_err` combinator.1must_use sinks do nothing unless polled.SF   # //  ՘*// A*automatically_derived*allow unused_qualifications/SF Ω )m#selff    /  //0  *automatically_derived*allow unused_qualifications/SF ։3  m#self3 *inline /  //K  ؄MS ޕ > // // ЄAЄ*Єautomatically_derivedЄ*ЄallowЄЄЄ unused_qualificationsЄ/S ЄޕΩЄ3ЄmselffƷ  Є / /Є/+ StartSend& / AsyncSink! /Pollܠ/VecDeque/Sink /Stream/Async!⠗/ *2cfg222 feature22 use_std1/////////00////oEsinkamt 0   / S ޕ>Υ/ɥ////3S ΥޕѥCself 3Պ 6*祗-doc祗-祗--/// Get a shared reference to the inner sink.祗- / //Yself 3 B*զ.docզ.զ../// Get a mutable reference to the inner sink.զ. / //Zself3  6*Ч<docЧ<Ч<` '   TE  !# 2 *2cfg222 feature22 use_std1000002Sޕ E 00 00selfitem22!32 2  0 0 0, self23  i 0 0 0+ self23  Y 0 0 0+ *JdocJJJ/// Sink for the `Sink::buffer` combinator, which buffers up to some fixedJ*GdocGGG/// number of values when the underlying sink is unable to accept them.G*Ѣmust_useڢܢ sinks do nothing unless polledϢ.3/S ޕ / 00 /00 / 00 ǢA3/Ǣ*Ǣautomatically_derivedǢ*ǢallowǢǢǢ unused_qualificationsǢ03S ǢޕΩǢ3Ǣtselff3  /Ǣ 0 0Ǣ0-4*IdocIII/// A sink combinator which converts an asynchronous sink to a **blockingI*Է docԷ Է  /// sink**.Է *෗doc෗෗///෗*䷗Pdoc䷗P䷗PP/// Created by the `Sink::wait` method, this function transforms any sink into a䷗P*OdocOOO/// blocking version. This is implemented by blocking the current thread when aO*.doc.../// sink is otherwise unable to make progress..*must_usesinks do nothing unless used,3/S  /00 깗A3/깗*깗automatically_derived깗*깗allow깗깗깗 unused_qualifications깗03S 깗Ω깗tselff 3  /깗 0 0깗0-Gӑ?docӑ?ӑ?A/// A \"mutex\" around a value, similar to `std::sync::Mutex`.ӑ?doc///KdocKKK/// This lock only supports the `try_lock` operation, however, and does notKdoc/// implement poisoning.T  $00  00 A*automatically_derived*allow unused_qualifications0T !mselffܧ   0 00+ ;+;rustc_copy_clone_marker;0'a'a `+   'a00 (44  ; 'a00;  ;;0;4;;  0'a+automatically_derived+allow unused_qualifications04'amself 44 +inline 0'a00K   0'a+automatically_derived+allow unused_qualificationsؚ4'amQ+Qrustc_copy_clone_markerQ0'a'a'a'aQ v+  'a'a00 =& 00 0'a+automatically_derived+allow unused_qualifications04'amself 44 +inline 0'a00K   0'a+automatically_derived+allow unused_qualificationsԠ4'am 00 +automatically_derived+allow unused_qualifications0mself +inline 000A 8doc889/// A key for task-local data stored in a future\'s task.8doc///GdocGGG/// This type is generated by the `task_local!` macro and performs veryGMdocMMM/// similarly to the `thread_local!` macro and `std::thread::LocalKey` types.MMdocMMN/// Data associated with a `LocalKey` is stored inside of a future\'s task,MJdocJJJ/// and the data is destroyed when the future is completed and the task isJdoc/// destroyed.doc///KdocKKK/// Task-local data can migrate between threads and hence requires a `Send`KMdocMMN/// bound. Additionally, task-local data also requires the `\'static` bound toMNdocNNN/// ensure it lives long enough. When a key is accessed for the first time theNMdocMMN/// task\'s data is initialized with the provided initialization expression toMdoc/// the macro.T    doc hidden  00 O3doc hidden   00 O3A+automatically_derived+allow unused_qualifications0T !mselff    0 00+ ݣˣPKdocKKL/// A reference to a piece of data that\'s accessible only within a specificK͡ doc͡ ͡  /// `Task`.͡ ١doc١١///١ݡLdocݡLݡLL/// This data is `Send` even when `A` is not `Sync`, because the data storedݡLLdocLLL/// within is accessed in a single-threaded way. The thread accessing it mayLBdocBBB/// change over time, if the task migrates, so `A` must be `Send`.B0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA ݣ [0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion00 u[0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion 00 [ãAã+ãautomatically_derivedã+ãallowããã unused_qualificationsã00.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusionA ã ãm[selff  ã0.1.4Sreplaced with `BiLock` in many cases, otherwise slated for removal due to confusion 0 0ã0[ { #[inline] fn __init() -> Cell<*mut u8> { ::new(ptr::null_mut()) } unsafe fn __getit() -> $crate::option::Option<&'static $crate::cell::UnsafeCell<$crate::option::Option>>> { #[thread_local] #[cfg(all(target_thread_local, not(all(target_arch = "wasm32", not(target_feature = "atomics")))))] static __KEY: $crate::thread::__FastLocalKeyInner> = <$crate::thread::__FastLocalKeyInner>::new(); __KEY.get() } unsafe { <$crate::thread::LocalKey>::new(__getit, __init) } }՗Ӓԗԗԗ 04  Ӓ ԗԗԗ 04 Ӓ ԗ9ԗ$ Ӓ4՗՗ԗD4՗%4ԗ4ԗ  ԗ$4՗Ӓ ͗ +͗inline͗ 44 4 ͗4їx+З  thread_localЗ+ЗcfgЗїЗ allЗїЗ target_thread_localЗЗ notЗїЗ allЗїЗ target_archЗЗwasm32ЗЗ notЗїЗ target_featureїї atomicsїЗyӒї4ї/ Ӓ4їxїx4ї0  ї/4їx\ӣallowأ٣ deprecatedѣ+\rustc_copy_clone_marker\0'a'a'a'a\ d  'a00 # 0'a00 $ 44   'a000 4  44   'a00004  0'aɣ+ɣautomatically_derivedƄɣ+ɣallowDŽɣɣɣ unused_qualificationsɣӣallowȄأ٣ deprecatedѣ04'aself 44 ɣ+ɣinlineԄɣ 0'a0ɣ0K   0'aã+ãautomatically_derivedã+ãallowããã unused_qualificationsãӣallowأ٣ deprecatedѣ4'a[ݤallow deprecatedۤ+[rustc_copy_clone_marker[0'a'a'a'a[ d  'a00 #  'a400 # 400 444  , 'a00,0,0,,,,,,,  0'aӤ+Ӥautomatically_derivedӤ+ӤallowӤӤӤ unused_qualificationsӤݤallow deprecatedۤ04'aself 44 Ӥ+ӤinlineӤ 0'a0Ӥ0K   0'aͤ+ͤautomatically_derivedʅͤ+ͤallow˅ͤͤͤ unused_qualificationsͤݤallow̅ deprecatedۤ4'aޥa  00 00   allow؅ deprecated 00044 9   000 ֥+֥automatically_derived֥+֥allow֥֥֥ unused_qualifications֥0mselfʫ ֥+֥inline֥ 00֥0A WԦallow٦ڦ deprecatedҦ R9 00  00  00    000 4   00044 ʦ+ʦautomatically_derivedʦ+ʦallowʦʦʦ unused_qualificationsʦԦallow٦ڦ deprecatedҦ0self ʦ+ʦinline†ʦ 00ʦ0A { #[inline] fn __init() -> Arc { ::new(ThreadNotify{state: ::new(IDLE), mutex: ::new(()), condvar: ::new(),}) } unsafe fn __getit() -> $crate::option::Option<&'static $crate::cell::UnsafeCell<$crate::option::Option>>> { #[thread_local] #[cfg(all(target_thread_local, not(all(target_arch = "wasm32", not(target_feature = "atomics")))))] static __KEY: $crate::thread::__FastLocalKeyInner> = <$crate::thread::__FastLocalKeyInner>::new(); __KEY.get() } unsafe { <$crate::thread::LocalKey>::new(__getit, __init) } }՗ԗԗԗ 05   ԗԗԗ 05  ԗ9ԗ$ ҏ5՗՗ԗD5՗%5ԗ5ԗ 4ԗ$ҏ5՗ ͗ +͗inline͗ 54 5 ͗5їx+З  thread_localЗ+ЗcfgЗїЗ allЗїЗ target_thread_localЗЗ notЗїЗ allЗїЗ target_archЗЗwasm32ЗЗ notЗїЗ target_featureїї atomicsїЗyї4ї/ 5їxїx5ї0 4ї/5їxC-doc---/// A set insertion to trigger upon `unpark`.-doc///KdocKKK/// Unpark events are used to communicate information about *why* an unparkKNdocNNN/// occurred, in particular populating sets with event identifiers so that theNKdocKKK/// unparked task can avoid extraneous polling. See `with_unpark_event` forK doc   /// more.   deprecatedܟ note/-recommended to use `FuturesUnordered` insteadEallow deprecatedߟ-recommended to use `FuturesUnordered` instead /-recommended to use `FuturesUnordered` instead 00 I/ -recommended to use `FuturesUnordered` instead00 H/+automatically_derived+allow unused_qualificationsallow deprecatedߟ0self˙  +inline 000A TKdocKKO/// A handle to a \"task\", which represents a single lightweight \"thread\" ofKȲ-docȲ-Ȳ--/// execution driving a future to completion.Ȳ-doc///MdocMMM/// In general, futures are composed into large units of work, which are thenMȳPdocȳPȳPP/// spawned as tasks onto an *executor*. The executor is responsible for pollingȳPDdocDDD/// the future as notifications arrive, until the future terminates.D޴doc޴޴///޴5doc555/// This is obtained by the `task::current` function.5doc/// doc   /// # FAQ doc///6doc666/// ### Why does `Task` not implement `Eq` and `Hash`?6doc///JdocJJJ/// A valid use case for `Task` to implement these two traits has not beenJdoc/// encountered.doc///ŶJdocŶJŶJJ/// Usually, this question is asked by someone who wants to store a `Task`ŶJJdocJJJ/// instance in a `HashSet`. This seems like an obvious way to implement aJ۷Hdoc۷H۷HH/// future aware, multi-handle structure; e.g. a multi-producer channel.۷Hdoc///NdocNNN/// In this case, the idea is that whenever a `start_send` is called on one ofNOdocOOP/// the channel\'s send handles, if the channel is at capacity, the current taskOǹPdocǹPǹPP/// is stored in a set. Then, when capacity is available, a task is removed fromǹPdoc/// the set and notified.doc///PdocPPP/// The problem with this strategy is that multiple `Sender` handles can be usedPOdocOOO/// on the same task. In this case, when the second handle is used and the taskO׻Gdoc׻G׻GG/// is stored in a set, there already is an entry. Then, when the first׻GGdocGGG/// handle is dropped, this entry is cleared, resulting in a dead lock.Gdoc///NdocNNN/// See [here](https://github.com/rust-lang-nursery/futures-rs/issues/670) forNdoc/// more discussion.ϽdocϽϽ///Ͻ ! 00 00 00 ܽ+ܽautomatically_derivedܽ+ܽallowܽܽܽ unused_qualificationsܽ0mself  ܽ+ܽinlineܽ 00ܽ0A NBdocBBB/// A stream combinator used to convert a `Stream`B˶$doc˶$˶$$/// to a `Stream>`.˶$doc///AdocAAA/// A poll on this stream will never return an `Err`. As such theAFdocFFF/// actual error type is parameterized, so it can match whatever errorFdoc/// type is needed.doc///?doc???/// This structure is produced by the `Stream::results` method.?must_use" streams do nothing unless polled0"SE    # 00 ̹*00 ޸޸A"޸+޸automatically_derived޸+޸allow޸޸޸ unused_qualifications޸1"SE ޸Ω޸ ޸$޸m#selff "  ޸ 1  1޸10  4PdocۊPPP/// A future representing the completion of a computation happening elsewhere inP doc܊   /// memory. doc݊///7docފ777/// This is created by the `oneshot::channel` function.7must_useߊ" futures do nothing unless polled0#T  #11 A#+automatically_derived+allow unused_qualifications1#T !mselff #   1 11+ 2MdocMMM/// Represents the completion half of a oneshot through which the result of aMdoc/// computation is signaled.doc///7doc777/// This is created by the `oneshot::channel` function.7#T  511 A#+automatically_derived+allow unused_qualifications1#T !mselff#   1 11+  MdocMMM/// Internal state of the `Receiver`/`Sender` pair above. This is all used asMJdocJJJ/// the internal synchronization between the two for send/recv operations.J#T  JdocJJJ/// Indicates whether this oneshot is complete yet. This is filled in bothJJdocJJJ/// by `Sender::drop` and by `Receiver::drop`, and both sides interpret itJdoc/// appropriately.doc///JdocJJK/// For `Receiver`, if this is `true`, then it\'s guaranteed that `data` isJ'doc'''/// unlocked and ready to be inspected.'doc///HdocHHH/// For `Sender` if this is `true` then the oneshot has gone away and itH(doc(((/// can return ready from `poll_cancel`.($11  IdocIII/// The actual data being transferred as part of this `Receiver`. This isIAdocAAA/// filled in by `Sender::complete` and read by `Receiver::poll`.Adoc///FdocFFF/// Note that this is protected by `Lock`, but it is in theory safe toFIdocIIJ/// replace with an `UnsafeCell` as it\'s actually protected by `complete`IFdocFFG/// above. I wouldn\'t recommend doing this, however, unless someone isFGdocGGG/// supremely confident in the various atomic orderings here and there.G011 AdocAAA/// Field to store the task which is blocked in `Receiver::poll`.Adoc///KdocKKK/// This is filled in when a oneshot is polled but not ready yet. Note thatKKdocKKK/// the `Lock` here, unlike in `data` above, is important to resolve races.KGdocGGG/// Both the `Receiver` and the `Sender` halves understand that if theyGIdocIIJ/// can\'t acquire the lock then some important interference is happening.I011 8doc888/// Like `rx_task` above, except for the task blocked in8GdocGGG/// `Sender::poll_cancel`. Additionally, `Lock` cannot be `UnsafeCell`.G511 A#+automatically_derived+allow unused_qualifications1#T !mselff#   1 11+ NdocNNN/// Error returned from a `Receiver` whenever the corresponding `Sender`Ndoc/// is dropped.+structural_match+rustc_copy_clone_marker# #11 A#+automatically_derived+allow unused_qualifications1#mselff#   111& #+automatically_derived+allow unused_qualifications1#mself#  +inline+doc hidden 111uM ##  + automatically_derived + allow   unused_qualifications 1#mselfother# #   + inline 111A  #+automatically_derived+allow unused_qualifications#m#+automatically_derived+allow unused_qualifications1#mself## +inline 111A F$T  6$11 11 A$+automatically_derived,allow unused_qualifications1$T !mselff $   1 11+ YOdocȏOOO/// The multi-producer single-consumer structure. This is not cloneable, but itOKdocɏKKK/// may be safely shared so long as it is guaranteed that there is only oneK0docʏ000/// popper at a time (many pushers are allowed).0$T  511 $11 A$,automatically_derivedޏ,allowߏ unused_qualifications1$T !mselff$   1 11+ ۣCdocڐۣCۣCC/// The transmission end of a channel which is used to send values.ۣCdocې///,docܐ,,,/// This is created by the `channel` method.,ϑ%T  &11 #=%11 %11 ٤Aϑ%٤,٤automatically_derived٤,٤allow٤٤٤ unused_qualifications٤1ϑ%T ٤!٤mselff%  ٤ 1 1٤1+ ȩ)CdocϑCCC/// The transmission end of a channel which is used to send values.CdocБ///.docё.../// This is created by the `unbounded` method..͜%T   ϑ%11 ϑ%͜%  ȩ)  11ȩ)ϑ%ȩ)ȩ)͜%ȩ)ϑ%ȩ)ȩ) }A͜%,automatically_derivedۑ,allowܑ unused_qualifications1͜%T !mselff%   1 11+ ج4̪Gdoc̪G̪GG/// The receiving end of a channel which implements the `Stream` trait.̪Gdoc///PdocPPP/// This is a concrete implementation of a stream which can be used to representPGdocGGG/// a stream of values being computed elsewhere. This is created by theGdoc/// `channel` method.ؑ%T  ȃ611 ЬAؑ%Ь,Ьautomatically_derivedЬ,ЬallowЬЬЬ unused_qualificationsЬ1ؑ%T Ь!Ьmselff%  Ь 1 1Ь1+ -GdocGGG/// The receiving end of a channel which implements the `Stream` trait.G֭doc֭֭///֭ڭPdocڭPڭPP/// This is a concrete implementation of a stream which can be used to representڭPGdocGGG/// a stream of values being computed elsewhere. This is created by theGdoc/// `unbounded` method.֜%T   ؑ%11 ؑ%֜%  -  11-ؑ%--֜%-ؑ%-- }A֜%,automatically_derived,allow unused_qualifications1֜%T !mselff ֜%   1 11+ ԰˯Gdoc˯G˯GG/// Error type for sending, used when the receiving end of a channel is˯G doc   /// dropped ,structural_match“$T ԰ װ 11  $    11 $  }$,automatically_derivedʓ,allow˓ unused_qualifications1$T  mself$  ,inlineܓ,docݓ hidden 1 11zM  $$  , automatically_derived , allow   unused_qualifications 11$T  ( mselfother$ $   , inline 1 11F selfother$֥6   , inline 1 11F $,automatically_derived̔,allow͔ unused_qualifications1$T mself$$ ,inlineޔ 1 11F =ܰ'docܰ'ܰ''/// Error type returned from `try_send`ܰ',=structural_match=$T  sű1 11 $,automatically_derived,allow unused_qualifications1$T 6mself$  ,inline,doc hidden 1 11zM  $$  , automatically_derived , allow   unused_qualifications 11$T  ( mselfother$ $   , inline 1 11F selfother$6   , inline 1 11F $,automatically_derived,allow unused_qualifications1$T mself$$ ,inline 1 11F >,>structural_match>ӫ6T  T$ 11  11  ӫ6    111 ӫ6   ӫ6    111 ӫ6  ӫ6,automatically_derivedȖ,allowɖ unused_qualifications1ӫ6T 6mself ӫ6 ,inlineږ,docۖ hidden 1 11zM  ӫ6ӫ6  , automatically_derived , allow   unused_qualifications 11ӫ6T  ( mselfother6 ӫ6   , inline 1 11F selfother66   , inline 1 11F ӫ6,automatically_derived,allow unused_qualifications1ӫ6T mself6ӫ6 ,inline 1 11F &T  ?%11 11 111 +1611 11 =211 ! A&,automatically_derived,allow unused_qualifications2&T !mselff&   2 22+ ,rustc_copy_clone_marker& M- 22 22  &,automatically_derived,allow unused_qualifications&m&,automatically_derived,allow unused_qualifications2&mselfȚ&& ,inline 222A A&,automatically_derived֛,allowכ unused_qualifications2&mselffȚ&   222& C6 22 22 A6,automatically_derived,allow unused_qualifications26mselff 6   222& B% 22 22 A%,automatically_derived,allow unused_qualifications2%mselff %   222& 2 PdocܞPPP/// A type of futures-powered synchronization primitive which is a mutex betweenP docݞ/// two possible owners. docޞ/// PdocߞPPP/// This primitive is not as generic as a full-blown mutex but is sufficient forP NdocNNN/// many use cases where there are only two possible owners of a resource. TheN NdocNNN/// implementation of `BiLock` can be more optimized for just the two possibleN  doc   /// owners. doc/// PdocPPQ/// Note that it\'s possible to use this lock through a poll-style interface withP NdocNNN/// the `poll_lock` method but you can also use it as a future with the `lock`N OdocOOO/// method that consumes a `BiLock` and returns a future that will resolve whenO doc/// it\'s locked. doc/// OdocOOQ/// A `BiLock` is typically used for \"split\" operations where data which servesO MdocMMM/// two purposes wants to be split into two to be worked with separately. ForM OdocOOO/// example a TCP stream could be both a reader and a writer or a framing layerO PdocPPP/// could be both a stream and a sink for messages. A `BiLock` enables splittingP MdocMMM/// these two and then using each independently in a futures-powered fashion.MΡ&T   &22 AΡ&,automatically_derived,allow unused_qualifications2Ρ&T !mselff&   2 22+ M&T  622 422  A&,automatically_derivedʟ,allow˟ unused_qualifications2&T !mselff &   2 22+ ?!4docš444/// Returned RAII guard from the `poll_lock` method.4!ƛdocơƛƛ///ƛ!ʛLdocǡʛLʛLL/// This structure acts as a sentinel to the data in the `BiLock` itself,ʛL!NdocȡNNN/// implementing `Deref` and `DerefMut` to `T`. When dropped, the lock will beN! docɡ   /// unlocked. 2'a 'aT  'a6? ' 'a2 22 )A2'a ,automatically_derivedס,allowء unused_qualifications26'aT  'a3m!selff 6   2'a 225 =!IdocIII/// Future returned by `BiLock::lock` which will resolve when the lock isI!ɡ docɡ ɡ  /// acquired.ɡ &T  Ρ&22  A&,automatically_derived,allow unused_qualifications2&T !mselff &   2 22+ Ө>!4doc444/// Resolved value of the `BiLockAcquire` future.4!doc///!MdocMMM/// This value, like `BiLockGuard`, is a sentinel to the value `T` throughM!KdocKKK/// implementations of `Deref` and `DerefMut`. When dropped will unlock theK!ƧLdocƧLƧLL/// lock, and the original unlocked `BiLock` can be recovered through theƧL!doc/// `unlock` method.&T Ө ܨ622 A&,automatically_derived,allow unused_qualifications2&T !mselff&   2 22+ 2 T  ? 22 %22 ؼ22 22 A6,automatically_derived٣,allowڣ unused_qualifications26T !mselff 6   2 22+ >!&docä&&&/// The transmission end of a channel.&!ýdocĤýý///ý!ǽ.docŤǽ.ǽ../// This is created by the `channel` function.ǽ.&T   622 %A&,automatically_derivedӤ,allowԤ unused_qualifications2&T !mselff&   2 22+ /!GdocGGG/// The receiving end of a channel which implements the `Stream` trait.G!doc///!.doc.../// This is created by the `channel` function..&T  2 22 A&,automatically_derived,allow unused_qualifications2&T !mselff &   2 22+ L!PdocPPQ/// Possible states of a receiver. We\'re either Open (can receive more messages)P!DdocDDE/// or we\'re closed with a list of messages we have left to receive.D7T  722  622 77    222777 67    222676 A7,automatically_derived,allow unused_qualifications27T !mselff 7   2 22+ )!1docߦ111/// The transmission end of an unbounded channel.1!doc///!0doc000/// This is created by the `unbounded` function.0&T   &22 &&  )  22)&))&)&)) }A&,automatically_derived,allow unused_qualifications2&T !mselff&   2 22+ -!.doc.../// The receiving end of an unbounded channel..!doc///!0doc000/// This is created by the `unbounded` function.0' T   &22 &'  -  22-&--'-&-- }A',automatically_derived,allow unused_qualifications2'T !mselff '   2 22+ <"ƪMdocƪMƪMM/// Represents the completion half of a oneshot through which the result of aƪM"doc/// computation is signaled."doc///"PdocPPP/// This is created by the `unsync::oneshot::channel` function and is equivalentP"MdocMMM/// in functionality to `sync::oneshot::Sender` except that it cannot be sentM"ԬdocԬԬ/// across threads.Ԭ' T   2 22 +A' ,automatically_derivedϨ,allowШ unused_qualifications2'T !mselff'    2 22+ /"PdocPPP/// A future representing the completion of a computation happening elsewhere inP" doc   /// memory. "doc///"PdocPPP/// This is created by the `unsync::oneshot::channel` function and is equivalentP"OdocOOO/// in functionality to `sync::oneshot::Receiver` except that it cannot be sentO"doc/// across threads."must_use" futures do nothing unless polledޯ0' T   2 22 ֯A' ֯,֯automatically_derived֯,֯allow֯֯֯ unused_qualifications֯2'T ֯!֯mselff '   ֯ 2 2֯2+ ܰ ѰI7T ܰ / 722   22 ҳ77     222ҳ77ҳ7 7     2227 ɰA7 ɰ,ɰautomatically_derivedɰ,ɰallowɰɰɰ unused_qualificationsɰ27T ɰ!ɰmselff 7   ɰ 2 2ɰ2+ ܱ ϱ_7T ܱ 6 22  22  22 DZA7 DZ,DZautomatically_derivedDZ,DZallowDZDZDZ unused_qualificationsDZ27T DZ!DZmselff 7   DZ 2 2DZ2+ A1-,automatically_derived,allow unused_qualifications31T !tselff1  - 3 33-ժA.'a +ժ,ժautomatically_derivedժ,ժallowժժժ unused_qualificationsժ37'aF ժ 'a)ժt!selff 7  +ժ 3'a 3ժ37ݿěي܊           QQ[[! s   !!sss      777 s    7 7x7>  ;  Đ !!„„„„Đ „ĄĄ„ „„ Đ  7ńńń„DŽ ӄԄ;7  Đ   7Đ ; e„ „Đ „ „ Ąf;Rѽ Đ 7 k  Đ !!;;Đ G -  777k7  Đ  77kѽ resultĐ fѽ 7;kAѽ    #Z ++ ѽ 7Z    ُ          7    77    ُ        7     ؏؏  Ï  ǏǏÏ   Ï  ͏7 Ώ ؏؏؏ ZDD7  77Zѽ a future ѽ ѽ  err   val7Ï  ǏZ A  Ԋ   ++  7 Ԋ     Ԋ  7f7 A ! ٹ ++  ݹ!7ݹٹ7ݹ  77ٹ rڹ7 ٹA7    Đ !!     7 w             Đ  7             7  w          7  Đ  77ѽ aĐ f item7  e7 Đ    A77 Ǡ:  Đ !! ߠ  ѽ   Đ Ͻ 7  ߠߠܠ7ܠǠ: 7Π  Đ  77Ǡ:ѽ aȠĐ fˠ7ߠ Đ Ͻ ѽ Ǡ:A! ++  8!ʽ!  !ʽ  !      !ʽ   !ʽ !ʽ   7  77aeA77  ++   ʒ?ʒ?ʒ? ʒ?ʒhʒ H8ۉ8)88' !ʽ! !ʽ     !ʽ     !ʽ !ʽ  ʒ=8188^ʒ=1eʒ=1'ʒ?ʒ?8ʒ?8ʒ=ʒ? 7 8a 8ʒ?8ʒ?e A Ǭ =   ٬ ٬    ٬     ٬  ٬ ٬   88Ǭ =       Ǭ =ˬ    ʒ8Ǭ =eȬ ٬   ٬ 8٬ 8 8 selfǬ =R /          8         /ؗ8 8x 8  A /          8        /8 ۚ8x ۚ8  A       8       e A     88    8 e A  ߺ   88ߺ    8ߺ eߺ A  ?   !!8 88 88   ՘*  + ؤ8?""""88 "8 + ѥ8;   ; ;8  ٦8   ?      8?e 8՘* ՘*8"8";self?R  ?   !!8 88 88 8՘* ؤ8ؤ8?""""88 "8ѥ8ѥ8;   ; ;8٦8٦8   ?    88?e 8՘* 88"8";self?R  ?   !!8 88 88 8՘* ؤ8ؤ8?""""88 "8ѥ8ѥ8;   ; ;8٦8٦8   ?    88?e 8՘* 88"8";self?RD  !!ццچچ چ   ϰ4چцц  ǹ8ццD   8Dц ц چϰ4چ   цǹ8selfDR   !!!!      ۅ 8     8         8   D D D 8D 8  d  ʺ88    8%1 ‡‡     ؗ8  ؗ88   ׅׅЇ7  !ݿ88  task1 raw_pointer 8dataۅ entry  8 8ʺ8D8D88888 8 8ؗ8 ؗ8  8keyselff$tҰհ     ++     8    8   f8 A   ++     ######"  "  8## 8# #   # ###  # # #  ##   8   ## 8    # ### #      8     !     #     ####    88 notify##"88# err# # #val# 88 e selfR     ++     8    8   s8 A8   ++8     """""  """""  8      88     !ʽ  ڵ     !ʽ            ڵ    !ʽ!ʽ!ʽ    888notify"88888eڵeڵselfR8   ++8      8   88s8valueR8ޗ   ++     8ޗ   8ޗ8s8A8   ++8     ))(8  (  8  )) 8) )   ) ))) ) ) )  )) 9   )) ހ9    )))))   !    )  88 ))))   888notify))(88)err)))val)v 888valueselfc8   ++8     ---"""!8  !  9  "" ޗ9" "   " """ " " "  ""99   ""ހ9ހ9    """" - 9  f  88 " """"  988notify- ""ޗ"ޗ!88"err"""val" 888self R8   ++8     (((8    9  99          99   ހ9ހ9     (99  a  88    988notify(9ޗޗ88errval 888self R8            8   89     8  8notify 9 8fR            9 current selfR 9    (  9( ddd(  9    (  d  dd  99 current(    (  selfR  !Đ !!      ! !˺9 !9   !Đ !!9!9notifyAR  Ҙ!   !     9 Ҙ!  ! ڼ9Ҙ! 8f8 Aڼ9ծ!    !     9 ծ!  ! ڼ9ծ! 8s8 Aڼ9! ē  !    ȓȓՓՓȓʓ  9ړړۓē!ȓ  ! ڼ9!ē8sœ8ȓՓvalueēRڼ9̌   !     9̌  ! ڼ9̌8s8Aޚڼ9̌    !      9 ̌  !9 8s8 Aȟ    !!!     ˟˟ ˟͟͟ 8˟8˟˟  89ПППџȟ ˟     9ȟ ˟9˟8͟fobjȟ  c$$   ++     !!1 !]ӫ6}$   9$$  vӫ6! A%Ŀ%   ++      9  Ŀ%   9Ŀ%% A  Ӓ ++8$Ӓ ӒӒ Ӓ Ӓ88ӒӒӒӒ ӒӒ ӒӒӒӒӒ9Ӓ  9 ӒӒ 8Ӓ ӒfutureӒR++ ++$ &+ ʒ?ʒ?ʒ?8ʒ?ʒhʒۉ8ۉ8*88(ʒ=888`ʒ=ʒ=ʒ?ʒ?8ʒ?8ʒ=ʒ?+  9++e+t8ʒ?8ʒ?A @ ѽ  ++$ 777ā؁ ؁  ۊ !                   ѽ    9  ہ ۊ ہ‚‚‚‚ ͂ ΂΂тՂՂт тւ͂ ͂ ѽ ׂׂȂ9Ȃ؂炓炓    ۊ   ۊ ! ۊ  Ȃ9   799i7fԊ 7؁ہ e9 ѽ   e‚9͂ ΂ѽ т ՂA99 ˓ ++$ ͓͓͓͓͓͓ГГ7쓓쓓쓓쓓쓓쓓쓓쓓77 擓̔ ̔̔̔ ۊ ! ؔ  ٔ ٔ ܔ ߔ ߔ  ܔ   ܔ  ؔ   ؔ  ѽ  ᔓ ᔓ Ӕ9 Ӕ┓ 擓 ۊ      ѽ 9擓    ۊ   ۊ ! ۊ  ˓ԓӔ9ԓ  9˓9̓i͓7fГԊ 쓓7쓓 e̔9ؔ ٔѽ ܔ ߔ e9 ѽ  ˓A   ++8)   88óƳƳ  ̳̳ͳ̳9  9  8 ƳstreamR20 튕  +2튕0   :0튕2a2튕A 0P +++ʖԖԖ2ʖ2ٖܖ薕薕2ܖ2햕2020P0  :0P:err0ʖ2Ԗ0ܖ2薕PAҘ!@ ++8,8 99Ɨ@Ҙ!  Ҙ!8@8future@R( $ e : expr ) => ( match $ e { Ok ( $ crate :: Async :: Ready ( t ) ) => t , Ok ( $ crate :: Async :: NotReady ) => return Ok ( $ crate :: Async :: NotReady ) , Err ( e ) => return Err ( From :: from ( e ) ) , } )IHAdocHAHAA/// A macro for extracting the successful type of a `Poll`.HAHdocHH///HHIdocHIHII/// This macro bakes propagation of both errors and `NotReady` signals byHIIdocII/// returning early.II  macro_exportI( static $ NAME : ident : $ t : ty = $ e : expr ) => ( static $ NAME : $ crate :: task :: LocalKey < $ t > = { fn __init ( ) -> $ t { $ e } fn __key ( ) -> :: std :: any :: TypeId { struct __A ; :: std :: any :: TypeId :: of :: < __A > ( ) } $ crate :: task :: LocalKey { __init : __init , __key : __key , } } ; )3doc333/// A macro to create a `static` of type `LocalKey`3doc///MdocMMM/// This macro is intentionally similar to the `thread_local!`, and creates aMDdocDDD/// `static` which has a `with` method to access the data on a task.Ddoc///LdocLLL/// The data associated with each task local is per-task, so different tasksL"doc"""/// will contain different values."  macro_export'attempted concatenation of empty stream'^/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/stream/concat.rs^ cannot use MapErr after an error  cannot use MapErr after an error  cannot use MapErr after an error (internal error: entered unreachable code(`/Users/fox/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.26/src/future/join_all.rs`::::::Ș: pj߭zp  B]/cwsEtti/Y~.lB3!SUGGR3%W'^5ZwHW m      b  v n7})Vda`aPx6}9\s """&###$l%%%&&g''( ==>1]ffp%}MpU:\O){#.;M<<<)=!>`@@bAA{BBCCCnCCHDtDDDEjGGSHHLSoT*UUkVWWWcd~jklilmmirsCsossEtyzzz={{N{#χlъBG45CđrΔq%Q–za-.b{ġl֢88>ʩQΫ^ȬǭQQWj>  ļBo? ?kݿ2`U((.R%Q'zZ]/?1_55gm97d>;h<pFr sJv3l :fg<iX\   KxRz5|S h3I.\q  b!!!"e"""#O#{##O$&&&q,A-n---s.D//%0Q00,112246,7Y777)8w889?99':i;.<3=>?AA B7BBBGC4DbDDDPEE%F G!IJXKKKLULLM?MkMMSNZOP$Q/STUU(VVV8W%XSXXXoYZ\[[[\s\\]]^e^_mnnneoopVqqq1rrstuwExyyyg.ZA&Ϳw+Nx0J?msXXZ C t--|wZ &b0f25:=@gDJdKKKFLLMO.QQLRRBSVW5WWX}XXXY\,]Ed_eCf2gkg hpq]i:otpKqqq rArurs+ttt&uu vevv:www*xxxxYyyyz^z {{O6EvݙOĚ9P۞3NՊ"yMVi:CL0\xk0}CCnQ_HnaH+*a$  /   A ;w#v>X!$$4%u(c)\73>m>>BYGGyH5IIKVW'Z|\^__N`tflytGx3: yd&t[e^ [кkݻ%e,X¾t%f#o go Yjr)9   C Y      X  Z  9    S     R& - . q2 2 73 3 3 4 r5 9 b: : Q; ; ; N< < = w= = > > :? ? ? O@ @ A gA B B C C E F F ^G G G H M R S pS %W W W BX X X CY \ ] ^ o^ ^ ^ (_ _ _ .` ` c e f Cf of f g eg g h Lh h %i }i i .j j j Ck k k m m 7n n n Ao no o o Tp p p r s 6s as s w x  ʆ i ‡ 3  9 ]  6 w =  v ˜   h  f } X  | ʣ K x դ T 0 ' R  " O  Z 1 Z  @ l ƶ  m з  x  ޺ P g & S  ٽ ' u * \ ˿ .  E p P R H  V ` 4 G  ? &  J b , S   ` h + E p  W g      f  b   ( |  I   {! ! Z" (# z# G$ $ % h& q* * P+ , p, =- - o. 0 e1 1 3 -5 5 6 9 p9 : ; Y< > S? ? @ -A B E >F G ;I I L M N N Q Q U 3V V W X %Y :[ q\ \ ] $^ |^ &_ X_ _ _ ` ` a Ca a d e f g g Kh 0i fi i j j ;k uk k k n p :q xr s s u Hu tu u $w dw w w +x { } (~  b %  \ ȅ + _ _ 9 _  - 7 o Ϥ t  n ] H  , 7 ¿ > l  D V i E  Q w G { Q - ~ I h S K C + h   b   0   '   B   :  B  e / ] & T $ y @      & G    . 2 S  B c ! " G# +$ $ % & /' ( ( e* S- - p. . x/ 0 m0 H2 4 25 7 z8 8 ~: ; ; = $? ? A C D D RI I K L \M M O eO O Q 7R S .U U W Y jY [ \ X] H_ ` ` "c Qe e Sf j j $m n ao &q r r Hu ~v v |x y y { } u} C   ݄ Z v n 1 w \  ڞ ? ע 2 å  ߨ t Ԫ  a ӵ ( } 4 q : 7  x i 8 +  L y ! q $ Q  u | } g  J G u J Z a 6 _ % ^ j   " P }  3  e  3 2    n     (   ^  6! ! M" " '# # % & & G' ' H) ) n+ + , ?, , , . / H/ u/ / $0 u0 0 >2 3 54 4 4 b5 5 9 E F +G G $I J XL L L N %O rP Q S jT T ~U V W >W kW W rX tY Y CZ Z [ P[ [ L\ \ ] q] ] T^ ^ _ Va a b eb Tc d /e e f qf g h th h 8i i i Gj j j ^k k $l l l m vm m o &p p p Uq q r xr r s Ls s u  ɇ 5  E   Y ґ L > l  ۙ 8 œ  ء R I b { " D ϲ ӳ x  z ׸ E .  \ L ` $ '  k w h   c  d { g  _ P w \ > F u  r n  B  u    $ I |  E  x        U  ) f) ) + k, G/ / 0 v1 3 b4 Y5 5 8 p8 8 ; ; G KH H J M NO O Z \ ~\ _ Xa a c d e f g h Ti s Jt uu Uv v Jw w x y y Kz z { J| | E~   # 5 7 S ` Ջ ݍ  R 2  ` / A ߖ 7 j ~ g A  ^ c ɥ o B s r ȩ  [ P ׷ < ; N ' 4 % z 4 s f M L k m 2 " :  u ֩ - )ɯ@ S [nuK_J^K_s  4H  ' ]> +N ! o          z{{ {$ *">"# $$$&&&5   / C W k   3 G [ o ;B=V=j=BCC/EISTTT8Wdddjjjmmrr[tottyyy{{̀ӂ$8‰։/CJ^Ocڑ;ۖޙ›Fȝ2ȣܣ,$ެ1E)=Q'·1EYm k2HJRfRf4Hf I]q8Lnv  5I%9*>"6Jbv !"$&& ',,,..]/q/B1168=:Q:e:;;;A1AEA`CtCCfEEJLiN}NNtOOOU"U6UQWeWyWYYYZZZ\\ ](_<_P_d_mmmmo ppp sst$t  Uziz  # 7 K _ s  ' ; O c w   + Męؙʚޚ&:Nb0΢9MauѧUi},@Thbٱ4NbaW׾.(<%fzS2F7Ks&:? S g {  J PsQQQdRVWX}dd_ttZuu@[Ҙ !ɛD6J$pк%'%H\&f&/19{e;<GNT.@pU'UV_H.f3ixX[>C1C\CsCuG[[[]]_(_d`}`b)bec~cdddf_dxxxx bzF}Qtּ~(ERS j   )  T k  _ s u  - A q  s  R l 9 - / . 0 2 2 2 2 3 : ; g< = = > ? h@ "A C %D VD 5H M R S jh^ i_ e ~g i Gj j k n p p r s s w x "x @y py y y  " L ` 8 R  ʋ 1 S ' ' ʞ  נ q * ˥ ϧ ֨ s ۳ J  7 8 i  Լ ! l ? o { o   / c w E  y ^ r     % P g { s     ; O   {     s" # $ % ' ) & ) i+ , - . . \0 s0 0 1 1 4 4 34 5 5 !7 J6 7 t6 8 8 38 9 ); @; r< < D> [> o> ? ? FA ZA pC 7B D bB D D WF kF G H ,H @H I I I GL ^L rL L &N O N 4P N iP P P R TU kU V W X >Y RY p[ [ [ [ \ ] ] ] ^ ^ ` !` a a a 7d bd d d d d 4f Hf \f .g Bg Vg dh xh h j 4j Hj l 'l ;l Ol n o 1o bo yo o o o Sq gq {q q r r r r t t 0t Dt v v /v Cv Dx Xx lx x x N{ y{ { { | | +| ?| S| g| A~ U~ i~ }~ ~      { ˁ у D B w Ӊ   x n ď $ 8  M d x ؔ R i } % 9 i v  - ġ P l ԧ , @ T Ϋ v Ʈ ذ a u D o  " ˶ !  & O ܿ k5 p n n v 8 n ~  |  9 _ |  $  \  \   '  \ t   ?  k  H h   x  " &" a# $ % & I' >+ E, , 3 0 2 3 L5 `5 :7 p7 7 7 8 : : ; < = > )> => ? ? ? B ;B fB }B B B 7D KD F &E QE G |E 8H QH eH I I K L L uM M #N :N ~O %P P O Q Q PR dR $T ;T OT U U W X X 1X Y Y [ [ \ \ q] ~_ _ _ ` a &a :a Wc c c c c c d e e -g Oh f hi f i i j k !k Ym m m m m m zo o \q q q q s ~u u u v x x y z { | | 4| } } y    ) = N y % P g { ͈ ۋ 6 Č v X  W   J Ֆ i } ՚ 7 b ̝ X š  K  7 K  ? h  ' ; O ° ( ? S g  Ҵ  A U i ޸ 2 I ] q   / i ֽ   * A ^ h g  @ W k   C Z n  U E 2 d  r P ?   K  J     T    u      Q! f! B# W# % & Ma) + , F. 0 k3 1 w2 2 3 O4 5 9 E F JF bF F DG H VH H H H ^I I I I J @J XJ K J K K L L N V W X X Y Y Z j[ f\ ] m^ a Hd b c hd Ie Dg &f f dg g (h h i aj k k >l :m o p q q r s  : R 4 b s Ʉe y )  R w ƚ ߛ 9 ' S ~ գ   l ө  ȭ ݭ   1 7 P e  [ {  R j $ 8 L ` d   - A U 3 G [ o v s "  C  e y  & Z  + ? S g @    2   2  7 i   L w  } ( ?  # '  / # N f        _       1   9 - , L. , 2 2 1 1 6 5 b7 5 g9 : 9 : :9 N oN [ I[ t[ \ \ ` F` ]` q` a c c e f f !h l o r s 5s u z H{ s{ { | {~ ~ ~  _ ց   k " P Ή Œ Џ 7 l 5 z j ˜  p  ǚ : Ơ G r ԡ 2 I   H Ψ / F t  5 i Ӷ U w º ] t ( S ƿ N e   M / K o   = i  ;   T futuresx86_64-apple-darwin-1e2999450b2419ebߔB6|] C}N ;q 0)