
Jaakko Jarvi wrote:
On May 4, 2004, at 7:56 PM, Fredrik Blomqvist wrote:
I think it would be convenient if one could treat std::pair as a boost two-tuple. Both tuples::tie and tuple assignment already work with std::pair but I've noticed that the get<> accessor doesn't.
So, I propose a simple extension to tuples::get<> with the obvious semantics: boost::get<0>(p) == p.first boost::get<1>(p) == p.second
The trouble with get is that pairs live in namespace std, so if pair get's are not in std, they won't get found by ADL. Ah, that's true..
But if we are willing to live with not having ADL, adding gets for pairs would be fine. As this was mostly a convenience addition I think it's still ok. I didn't strive for complete tuple<->pair transparency just slightly better interoperability.
Please send a patch or code.
Attached patches for: tuple/detail/tuple_basic.hpp tuple/detail/tuple_basic_no_partial_spec.hpp libs/tuple/test/tuple_test_bench.cpp The code is tested with VC7.1 both using the default tuple_basic.hpp path (that uses PTS) and forced tuple_basic_no_partial_spec.hpp. I tried to follow the existing code and thus hope that most/all previous regressions will pass... The PTS branch in tuple_basic.hpp also supports the length<> and element<> metafunctions since I found that to be the least intrusive way of adding get<>(pair) support. Is this a good thing? (I think so). Or should the changes be limited to _only_ the get<> accessor? Making the non PTS path support element<> would require more changes to the legacy code than I think is reasonable right now(?). I think it should simply be left disabled. Only a smaller additional test-suite is added. Don't really know if it's necessary to expand it and mirror/interleave it with the existing ones? I haven't made any documentation changes (yet). Hope this can be added! // Fredrik Blomqvist begin 666 tuple_basic_no_partial_spec.patch M26YD97@Z(&)O;W-T+W1U<&QE+V1E=&%I;"]T=7!L95]B87-I8U]N;U]P87)T M:6%L7W-P96,N:'!P#0H]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]#0I20U,@9FEL M93H@+V-V<W)O;W0O8F]O<W0O8F]O<W0O8F]O<W0O='5P;&4O9&5T86EL+W1U M<&QE7V)A<VEC7VYO7W!A<G1I86Q?<W!E8RYH<' L=@T*<F5T<FEE=FEN9R!R M979I<VEO;B Q+C$W#0ID:69F("UU("UR,2XQ-R!T=7!L95]B87-I8U]N;U]P M87)T:6%L7W-P96,N:'!P#0HM+2T@8F]O<W0O='5P;&4O9&5T86EL+W1U<&QE M7V)A<VEC7VYO7W!A<G1I86Q?<W!E8RYH<' ),3D@3F]V(#(P,#,@,C(Z,#$Z M-3(@+3 P,# ),2XQ-PT**RLK(&)O;W-T+W1U<&QE+V1E=&%I;"]T=7!L95]B M87-I8U]N;U]P87)T:6%L7W-P96,N:'!P"3<@36%Y(#(P,#0@,3DZ-34Z,34@ M+3 P,# -"D! ("TT-3<L-B K-#4W+#DQ($! #0H@(" @(" @?0T*(" @("!] M.PT*( T**R @(" O+R!F;W(@<W1D.CIP86ER#0HK(" @('1E;7!L871E(#QI M;G0@3CX-"BL@(" @<W1R=6-T(&=E=%]P86ER#0HK(" @(" @(" [("\O(&YO M(&1E9F%U;'0@:6UP;&5M96YT871I;VX-"BL-"BL@(" @=&5M<&QA=&4\/@T* M*R @("!S=')U8W0@9V5T7W!A:7(\,#X-"BL@(" @>PT**R @(" @(" @=&5M M<&QA=&4@/&-L87-S(%!A:7(^#0HK(" @(" @("!S=')U8W0@96QE;65N=%]R M968-"BL@(" @(" @('L-"BL@(" @(" @('!R:79A=&4Z#0HK(" @(" @(" @ M(" @='EP961E9B!T>7!E;F%M92!086ER.CIF:7)S=%]T>7!E(&5L=%]T>7!E M.PT**R @(" @(" @<'5B;&EC.@T**R @(" @(" @(" @('1Y<&5D968@='EP M96YA;64@861D7W)E9F5R96YC93QE;'1?='EP93XZ.G1Y<&4@4D54.PT**R @ M(" @(" @(" @('1Y<&5D968@4D54('1Y<&4[#0HK(" @(" @("!].PT**PT* M*R @(" @(" @=&5M<&QA=&4@/&-L87-S(%!A:7(^#0HK(" @(" @("!S=')U M8W0@96QE;65N=%]C;VYS=%]R968-"BL@(" @(" @('L-"BL@(" @(" @('!R M:79A=&4Z#0HK(" @(" @(" @(" @='EP961E9B!T>7!E;F%M92!086ER.CIF M:7)S=%]T>7!E(&5L=%]T>7!E.PT**R @(" @(" @<'5B;&EC.@T**R @(" @ M(" @(" @('1Y<&5D968@='EP96YA;64@861D7W)E9F5R96YC93QC;VYS="!E M;'1?='EP93XZ.G1Y<&4@4D54.PT**R @(" @(" @(" @('1Y<&5D968@4D54 M('1Y<&4[#0HK(" @(" @("!].PT**PT**R @(" @(" @=&5M<&QA=&4@/'1Y M<&5N86UE(%0P+"!T>7!E;F%M92!4,3X-"BL@(" @(" @('-T871I8R!I;FQI M;F4-"BL@(" @(" @('1Y<&5N86UE(&%D9%]R969E<F5N8V4\5# ^.CIT>7!E M#0HK(" @(" @("!G970H<W1D.CIP86ER/%0P+%0Q/B8@="D-"BL@(" @(" @ M('L-"BL@(" @(" @(" @("!R971U<FX@="YF:7)S=#L-"BL@(" @(" @('T- M"BL-"BL@(" @(" @('1E;7!L871E(#QT>7!E;F%M92!4,"P@='EP96YA;64@ M5#$^#0HK(" @(" @("!S=&%T:6,@:6YL:6YE#0HK(" @(" @("!T>7!E;F%M M92!A9&1?<F5F97)E;F-E/&-O;G-T(%0P/CHZ='EP90T**R @(" @(" @9V5T M*&-O;G-T('-T9#HZ<&%I<CQ4,"Q4,3XF('0I#0HK(" @(" @("![#0HK(" @ M(" @(" @(" @<F5T=7)N('0N9FER<W0[#0HK(" @(" @("!]#0HK(" @('T[ M#0HK#0HK(" @('1E;7!L871E/#X-"BL@(" @<W1R=6-T(&=E=%]P86ER/#$^ M#0HK(" @('L-"BL@(" @(" @('1E;7!L871E(#QC;&%S<R!086ER/@T**R @ M(" @(" @<W1R=6-T(&5L96UE;G1?<F5F#0HK(" @(" @("![#0HK(" @(" @ M("!P<FEV871E.@T**R @(" @(" @(" @('1Y<&5D968@='EP96YA;64@4&%I M<CHZ<V5C;VYD7W1Y<&4@96QT7W1Y<&4[#0HK(" @(" @("!P=6)L:6,Z#0HK M(" @(" @(" @(" @='EP961E9B!T>7!E;F%M92!A9&1?<F5F97)E;F-E/&5L M=%]T>7!E/CHZ='EP92!2150[#0HK(" @(" @(" @(" @='EP961E9B!2150@ M='EP93L-"BL@(" @(" @('T[#0HK#0HK(" @(" @("!T96UP;&%T92 \8VQA M<W,@4&%I<CX-"BL@(" @(" @('-T<G5C="!E;&5M96YT7V-O;G-T7W)E9@T* M*R @(" @(" @>PT**R @(" @(" @<')I=F%T93H-"BL@(" @(" @(" @("!T M>7!E9&5F('1Y<&5N86UE(%!A:7(Z.G-E8V]N9%]T>7!E(&5L=%]T>7!E.PT* M*R @(" @(" @<'5B;&EC.@T**R @(" @(" @(" @('1Y<&5D968@='EP96YA M;64@861D7W)E9F5R96YC93QC;VYS="!E;'1?='EP93XZ.G1Y<&4@4D54.PT* M*R @(" @(" @(" @('1Y<&5D968@4D54('1Y<&4[#0HK(" @(" @("!].PT* M*PT**R @(" @(" @=&5M<&QA=&4@/'1Y<&5N86UE(%0P+"!T>7!E;F%M92!4 M,3X-"BL@(" @(" @('-T871I8R!I;FQI;F4-"BL@(" @(" @('1Y<&5N86UE M(&%D9%]R969E<F5N8V4\5#$^.CIT>7!E#0HK(" @(" @("!G970H<W1D.CIP M86ER/%0P+%0Q/B8@="D-"BL@(" @(" @('L-"BL@(" @(" @(" @("!R971U M<FX@="YS96-O;F0[#0HK(" @(" @("!]#0HK#0HK(" @(" @("!T96UP;&%T M92 \='EP96YA;64@5# L('1Y<&5N86UE(%0Q/@T**R @(" @(" @<W1A=&EC M(&EN;&EN90T**R @(" @(" @='EP96YA;64@861D7W)E9F5R96YC93QC;VYS M="!4,3XZ.G1Y<&4-"BL@(" @(" @(&=E="AC;VYS="!S=&0Z.G!A:7(\5# L M5#$^)B!T*0T**R @(" @(" @>PT**R @(" @(" @(" @(')E='5R;B!T+G-E M8V]N9#L-"BL@(" @(" @('T-"BL@(" @?3L-"BL-"B @(" @?2 O+R!N86UE M<W!A8V4@9&5T86EL#0H@#0H@(" @("\O('1U<&QE(&-L87-S#0I 0" M-38X M+#8@*S8U,RPR,B! 0 T*(" @("![#0H@(" @(" @<F5T=7)N(&1E=&%I;#HZ M9V5T7V-L87-S/$X^.CIG970H="D[#0H@(" @('T-"BL-"BL@(" @+R\@;W9E M<FQO860@9F]R('-T9#HZ<&%I<@T**R @("!T96UP;&%T92 \:6YT($XL('1Y M<&5N86UE(%0P+"!T>7!E;F%M92!4,3X-"BL@(" @='EP96YA;64@9&5T86EL M.CIG971?<&%I<CQ./CHZ0D]/4U1?3D535$5$7U1%35!,051%(&5L96UE;G1? M<F5F/'-T9#HZ<&%I<CQ4,"Q4,3X@/CHZ4D54#0HK(" @(&=E="AS=&0Z.G!A M:7(\5# L5#$^)B!T+"!D971A:6PZ.G=O<FMA<F]U;F1?:&]L9&5R/$X^*B ] M(# I#0HK(" @('L-"BL@(" @(" @(')E='5R;B!D971A:6PZ.F=E=%]P86ER M/$X^.CIG970H="D[#0HK(" @('T-"BL-"BL@(" @=&5M<&QA=&4@/&EN="!. M+"!T>7!E;F%M92!4,"P@='EP96YA;64@5#$^#0HK(" @('1Y<&5N86UE(&1E M=&%I;#HZ9V5T7W!A:7(\3CXZ.D)/3U-47TY%4U1%1%]414U03$%412!E;&5M M96YT7V-O;G-T7W)E9CQS=&0Z.G!A:7(\5# L5#$^(#XZ.E)%5 T**R @("!G M970H8V]N<W0@<W1D.CIP86ER/%0P+%0Q/B8@="P@9&5T86EL.CIW;W)K87)O M=6YD7VAO;&1E<CQ./BH@/2 P*0T**R @("![#0HK(" @(" @("!R971U<FX@ M9&5T86EL.CIG971?<&%I<CQ./CHZ9V5T*'0I.PT**R @("!]#0HK#0H@#0H@ M(" @("\O($UA:V4@82!T=7!L90T*(" @("!T96UP;&%T93QT>7!E;F%M92!4 $,3X-"@`` ` end begin 666 tuple_test_bench.patch M26YD97@Z(&QI8G,O='5P;&4O=&5S="]T=7!L95]T97-T7V)E;F-H+F-P< T* M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0T*4D-3(&9I;&4Z("]C=G-R;V]T+V)O M;W-T+V)O;W-T+VQI8G,O='5P;&4O=&5S="]T=7!L95]T97-T7V)E;F-H+F-P M<"QV#0IR971R:65V:6YG(')E=FES:6]N(#$N,C -"F1I9F8@+74@+7(Q+C(P M('1U<&QE7W1E<W1?8F5N8V@N8W!P#0HM+2T@;&EB<R]T=7!L92]T97-T+W1U M<&QE7W1E<W1?8F5N8V@N8W!P"34@4V5P(#(P,#,@,38Z-3(Z-34@+3 P,# ) M,2XR, T**RLK(&QI8G,O='5P;&4O=&5S="]T=7!L95]T97-T7V)E;F-H+F-P M< DW($UA>2 R,# T(#(Q.C$R.C Q("TP,# P#0I 0" M-#4R+#8@*S0U,BPT M,"! 0 T*('T-"B -"B -"BMV;VED('1U<&QE7W!A:7)?:6YT97)O<&5R86)I M;&ET>5]T97-T*"D-"BM[#0HK(" @('1Y<&5D968@<W1D.CIP86ER/&EN="P@ M9FQO870^(% Q.PT**PT**R-I9FYD968@0D]/4U1?3D]?5$5-4$Q!5$5?4$%2 M5$E!3%]34$5#24%,25I!5$E/3@T**R @("!"3T]35%]35$%424-?05-315)4 M*'1U<&QE<SHZ;&5N9W1H/% Q/CHZ=F%L=64@/3T@,BD[#0HK(V5N9&EF#0HK M#0HK(" @(% Q(' Q.PT**R @("!G970\,#XH<#$I(#T@,3(S.PT**PT**R @ M("!"3T]35%]415-4*&=E=#PP/BAP,2D@/3T@,3(S*3L-"BL@(" @0D]/4U1? M5$535"AP,2YF:7)S=" ]/2 Q,C,I.PT**PT**R @("!G970\,3XH<#$I(#T@ M,RXQ-&8[#0HK(" @($)/3U-47U1%4U0H9V5T/#$^*' Q*2 \(#,N,35F("8F M(&=E=#PQ/BAP,2D@/B S+C$S9BD[#0HK(" @($)/3U-47U1%4U0H<#$N<V5C M;VYD(#P@,RXQ-68@)B8@<#$N<V5C;VYD(#X@,RXQ,V8I.PT**PT**R @(" K M*V=E=#PP/BAP,2D[#0HK(" @($)/3U-47U1%4U0H<#$N9FER<W0@/3T@,3(T M*3L-"BL-"BL@(" @<W1D.CIP86ER/&1O=6)L92P@8V]N<W0@8VAA<CX@<#(H M,2XU+" G>"<I.PT**R @("!"3T]35%]415-4*&=E=#PP/BAP,BD@/" Q+C4Q M*3L-"BLO+R @9V5T/# ^*' R*2 ]("=Y)SLO+R!S:&]U;&1N)W0@8V]M<&EL M90T**R\O("!P,BYS96-O;F0@/2 G>2<[("\O('-H;W5L9&XG="!C;VUP:6QE M#0HK(" @($)/3U-47U1%4U0H9V5T/#$^*' R*2 ]/2 G>"<I.PT**R\O(" K M*V=E=#PQ/BAP,BD[(" @("\O('-H;W5L9&XG="!C;VUP:6QE#0HK#0HK(" @ M(&-O;G-T('-T9#HZ<&%I<CQI;G0L(&)O;VP^(' S*#0R+"!T<G5E*3L-"BL@ M(" @0D]/4U1?5$535"AG970\,#XH<#,I(#T](#0R*3L-"BL@(" @0D]/4U1? M5$535"AG970\,3XH<#,I(#T]('1R=64I.PT**WT-"BL-"BL-"B -"B -"B O M+R M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#0I 0" M-#<Q+#$R M("LU,#4L-B! 0 T*(" @8V]N<U]T97-T*"D[#0H@("!C;VYS=%]T=7!L95]T M97-T*"D[#0H@("!T=7!L95]L96YG=&A?=&5S="@I.PT**R @='5P;&5?<&%I M<E]I;G1E<F]P97)A8FEL:71Y7W1E<W0H*3L-"B @(')E='5R;B P.PT*('T- 6"BT-"BT-"BT-"BT-"BT-"BT-"BT-"@`` ` end begin 666 tuple_basic.patch M26YD97@Z(&)O;W-T+W1U<&QE+V1E=&%I;"]T=7!L95]B87-I8RYH<' -"CT] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T-"E)#4R!F:6QE.B O8W9S<F]O="]B;V]S M="]B;V]S="]B;V]S="]T=7!L92]D971A:6PO='5P;&5?8F%S:6,N:'!P+'8- M"G)E=')I979I;F<@<F5V:7-I;VX@,2XR,PT*9&EF9B M=2 M<C$N,C,@='5P M;&5?8F%S:6,N:'!P#0HM+2T@8F]O<W0O='5P;&4O9&5T86EL+W1U<&QE7V)A M<VEC+FAP< DR."!/8W0@,C P,R P.3HT,CHT,R M,# P, DQ+C(S#0HK*RL@ M8F]O<W0O='5P;&4O9&5T86EL+W1U<&QE7V)A<VEC+FAP< DW($UA>2 R,# T M(#(P.C P.C,W("TP,# P#0I 0" M,3(P+#8@*S$R,"PT,B! 0 T*(" @?0T* M('T[#0H@#0HK+R\@9F]R('-T9#HZ<&%I<@T**W1E;7!L871E(#QI;G0@3CX- M"BMS=')U8W0@9V5T7W!A:7(-"BL@(" @.R O+R!N;R!D969A=6QT(&EM<&QE M;65N=&%T:6]N#0HK#0HK=&5M<&QA=&4\/@T**W-T<G5C="!G971?<&%I<CPP M/@T**WL-"BL@(" @=&5M<&QA=&4@/&-L87-S(%)%5"P@8VQA<W,@5# L(&-L M87-S(%0Q/@T**R @("!I;FQI;F4@<W1A=&EC(%)%5"!G970H8V]N<W0@<W1D M.CIP86ER/%0P+%0Q/B8@="D-"BL@(" @>PT**R @(" @(" @<F5T=7)N('0N M9FER<W0[#0HK(" @('T-"BL@(" @=&5M<&QA=&4@/&-L87-S(%)%5"P@8VQA M<W,@5# L(&-L87-S(%0Q/@T**R @("!I;FQI;F4@<W1A=&EC(%)%5"!G970H M<W1D.CIP86ER/%0P+%0Q/B8@="D-"BL@(" @>PT**R @(" @(" @<F5T=7)N M('0N9FER<W0[#0HK(" @('T-"BM].PT**PT**W1E;7!L871E/#X-"BMS=')U M8W0@9V5T7W!A:7(\,3X-"BM[#0HK(" @('1E;7!L871E(#QC;&%S<R!2150L M(&-L87-S(%0P+"!C;&%S<R!4,3X-"BL@(" @:6YL:6YE('-T871I8R!2150@ M9V5T*&-O;G-T('-T9#HZ<&%I<CQ4,"Q4,3XF('0I#0HK(" @('L-"BL@(" @ M(" @(')E='5R;B!T+G-E8V]N9#L-"BL@(" @?0T**R @("!T96UP;&%T92 \ M8VQA<W,@4D54+"!C;&%S<R!4,"P@8VQA<W,@5#$^#0HK(" @(&EN;&EN92!S M=&%T:6,@4D54(&=E="AS=&0Z.G!A:7(\5# L5#$^)B!T*0T**R @("![#0HK M(" @(" @("!R971U<FX@="YS96-O;F0[#0HK(" @('T-"BM].PT**PT**PT* M('T@+R\@96YD(&]F(&YA;65S<&%C92!D971A:6P-"B -"B -"D! ("TQ-3<L M-B K,3DS+#,R($! #0H@("!T>7!E9&5F('1Y<&5N86UE(&)O;W-T.CIA9&1? M8V]N<W0\='EP96YA;64@5#HZ:&5A9%]T>7!E/CHZ='EP92!T>7!E.PT*('T[ M#0H@#0HK+R\@<W!E8VEA;&EZ871I;VYS(&9O<B!S=&0Z.G!A:7(-"BMT96UP M;&%T92 \8VQA<W,@5# L(&-L87-S(%0Q/@T**W-T<G5C="!E;&5M96YT/# L M('-T9#HZ<&%I<CQ4,"Q4,3X@/@T**WL-"BL@(" @='EP961E9B!4,"!T>7!E M.PT**WT[#0HK#0HK=&5M<&QA=&4@/&-L87-S(%0P+"!C;&%S<R!4,3X-"BMS M=')U8W0@96QE;65N=#PQ+"!S=&0Z.G!A:7(\5# L5#$^(#X-"BM[#0HK(" @ M('1Y<&5D968@5#$@='EP93L-"BM].PT**PT**W1E;7!L871E(#QC;&%S<R!4 M,"P@8VQA<W,@5#$^#0HK<W1R=6-T(&5L96UE;G0\,"P@8V]N<W0@<W1D.CIP M86ER/%0P+%0Q/B ^#0HK>PT**R @("!T>7!E9&5F('1Y<&5N86UE(&)O;W-T M.CIA9&1?8V]N<W0\5# ^.CIT>7!E('1Y<&4[#0HK?3L-"BL-"BMT96UP;&%T M92 \8VQA<W,@5# L(&-L87-S(%0Q/@T**W-T<G5C="!E;&5M96YT/#$L(&-O M;G-T('-T9#HZ<&%I<CQ4,"Q4,3X@/@T**WL-"BL@(" @='EP961E9B!T>7!E M;F%M92!B;V]S=#HZ861D7V-O;G-T/%0Q/CHZ='EP92!T>7!E.PT**WT[#0HK M#0HK#0H@+R\@+6=E="!F=6YC=&EO;B!T96UP;&%T97,@+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T-"B O+R!5<V%G M93H@9V5T/$X^*&%4=7!L92D-"B -"D! ("TR,38L-B K,C<X+#,T($! #0H@ M(" @(" @(" @/CHZ8V]N<W1?='EP93XH8RD[#0H@?0T*( T**R\O(&]V97)L M;V%D<R!F;W(@<W1D.CIP86ER#0HK=&5M<&QA=&4@/&EN="!.+"!C;&%S<R!4 M,"P@8VQA<W,@5#$^#0HK:6YL:6YE('1Y<&5N86UE(&%C8V5S<U]T<F%I=',\ M#0HK(" @(" @(" @(" @(" @(" @("!T>7!E;F%M92!E;&5M96YT/$XL('-T M9#HZ<&%I<CQ4,"Q4,3X@/CHZ='EP90T**R @(" @(" @(" @(" @(" ^.CIN M;VY?8V]N<W1?='EP90T**V=E="AS=&0Z.G!A:7(\5# L5#$^)B!C($)/3U-4 M7T%04$5.1%]%6%!,24-)5%]414U03$%415].3TY?5%E012AI;G0L($XI*0T* M*WL-"BL@(" @<F5T=7)N(&1E=&%I;#HZ9V5T7W!A:7(\3CXZ.D)/3U-47TY% M4U1%1%]414U03$%410T**R @(" @(" @9V5T/ T**R @(" @(" @(" @('1Y M<&5N86UE(&%C8V5S<U]T<F%I=',\#0HK(" @(" @(" @(" @(" @('1Y<&5N M86UE(&5L96UE;G0\3BP@<W1D.CIP86ER/%0P+%0Q/B ^.CIT>7!E#0HK(" @ M(" @(" ^.CIN;VY?8V]N<W1?='EP93XH8RD[#0HK?0T**PT**W1E;7!L871E M(#QI;G0@3BP@8VQA<W,@5# L(&-L87-S(%0Q/@T**VEN;&EN92!T>7!E;F%M M92!A8V-E<W-?=')A:71S/ T**R @(" @(" @(" @(" @(" @(" @='EP96YA M;64@96QE;65N=#Q.+"!S=&0Z.G!A:7(\5# L5#$^(#XZ.G1Y<&4-"BL@(" @ M(" @(" @(" @(" @/CHZ8V]N<W1?='EP90T**V=E="AC;VYS="!S=&0Z.G!A M:7(\5# L5#$^)B!C($)/3U-47T%04$5.1%]%6%!,24-)5%]414U03$%415]. M3TY?5%E012AI;G0L($XI*0T**WL-"BL@(" @<F5T=7)N(&1E=&%I;#HZ9V5T M7W!A:7(\3CXZ.D)/3U-47TY%4U1%1%]414U03$%410T**R @(" @(" @9V5T M/ T**R @(" @(" @(" @('1Y<&5N86UE(&%C8V5S<U]T<F%I=',\#0HK(" @ M(" @(" @(" @(" @('1Y<&5N86UE(&5L96UE;G0\3BP@<W1D.CIP86ER/%0P M+%0Q/B ^.CIT>7!E#0HK(" @(" @(" ^.CIC;VYS=%]T>7!E/BAC*3L-"BM] M#0HK#0HK#0H@+R\@+2T@=&AE(&-O;G,@=&5M<&QA=&4@("TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#0H@;F%M M97-P86-E(&1E=&%I;"![#0H@#0I 0" M-#$U+#8@*S4P-2PQ,B! 0 T*('1E M;7!L871E/#X-"B!S=')U8W0@;&5N9W1H/&YU;&Q?='EP93X@>PT*(" @0D]/ M4U1?4U1!5$E#7T-/3E-404Y4*&EN="P@=F%L=64@/2 P*3L-"BM].PT**PT* M*W1E;7!L871E/&-L87-S(%0P+"!C;&%S<R!4,3X-"BMS=')U8W0@;&5N9W1H M/'-T9#HZ<&%I<CQ4,"Q4,3X@/@T**WL-"BL@(" @0D]/4U1?4U1!5$E#7T-/ D3E-404Y4*&EN="P@=F%L=64@/2 R*3L-"B!].PT*( T*( T* ` end