Okay.  Here's a working version.  Does all the hand-coded queues in old-style
threads and the message passing via spawn.

Code attached.

FWIW, message passing is (in terms of avg and max latency) on par with the 
locking
linked-list queues but the lockfree linked list queues are much faster (6x to 
7x)
in all the scenarios I tried.  I'm running on a 2 x 2.8 GHz Quad-Core Intel Xeon
running Mac OS X.

Am I doing the message passing wrong somehow or is it expected to underperform
lockfree queueing if transaction speed is all that matters?

D really is great.  I haven't had this much fun programming in a while.  Thanks!

Adam
begin 644 Queue.d
M:6UP;W)T('-T9"YC+G-T9&EO.PT*:6UP;W)T(&-O<F4N871O;6EC.PT*:6UP
M;W)T('-T9"YC;VYC=7)R96YC>3L-"@t*...@9fer<w...@=&%k...@=7-e9"!L
M:6YK960@;&ES=`T*+R\@;6%y...@9v5n97)A;&EZ92!M96UO<GD@;6]D96P-
M"@T*=&5M<&QA=&4...@475e=65?5'EP97,@*%0I#0I[#0H@(&-L87-S($YO9&4@
M#0H@('L-"B`@("!T:&ES*"D@>WT-"B`@("!T:&es...@=f%l*2`-"B`@("![
M#0H@("`@("!V86QU92`]('9A;#L-"B`@("`@(&YE>'0@/2!N=6QL.PT*("`@
M('T-"B`@("!4('9A;'5E.PT*("`@($YO9&4@;F5X=#L-"b...@?0t*("`-"B`@
M#0H@(&EN=&5R9F%C92!1=65U92`-"B`@>PT*("`@('9O:60@<F5S970H*3L-
M"B`@("!V;VED('!R;V1U8V4H:6...@5"!T*3L-"B`@("!B;V]L(&-O;G-U;64H
M;W5T(%...@="D[#0H@("`@<W1R:6YG(&YA;64H*3L-"B`@("!S=')I;F<@9&5S
M8W)I<'1I;VXH*3L-"b...@?0t*#0h@(&EN=&5R9F%C92!-97-S86=E7U!A<W-I
M;f=?475e...@.b!1=65u90t*("![#0H@("`...@=f]i9"!S971?8V]N<W5M97)?
M5&ED*%1I9"!T*3L-"B`@("!4:6...@8v]n<W5M97)?5&ED*"D[#0H@('T-"B`@
M#0H@(&-L87-S($9)1D]?3&EN:V5D3&ES=%],;V-K:6YG7U%U975E(#...@475e
M=64-"B`@>PT*("!P<fev87...@t*("`@($YO9&4...@9fer<W0L(&QA<W0[#0H@
M("`@("`@(`T*("!P=6)L:6,Z#0H@("`...@=f]i9"!R97-E="@I('l...@9fer<W0@
M/2!L87-T(#T@;F5W($YO9&4[('T-"B`@("!T:&ES*"D@>R!R97-E="@I.R!]
M#0H@("`...@#0h@("`@<W1R:6YG(&YA;64H*2![(')E='5R;B`B1BQ,3"Q,:R([
M('T-"B`@("!S=')I;F<@9&5S8W)I<'1I;VXH*2![(')E='5R;B`B1DE&3SH@
M3&]C:ven...@=7-i;F<@82!L:6YK960@;&ES="!A<R!S=&]R86=E+B([('T-
M"B`@("`@("`-"B`@("!V;VED('!R;V1U8V4H:6...@5"!T*0T*("`@('L-"B`@
M("`@($YO9&4...@=&UP(#T@;F5W($YO9&4H="D[#0H@("`@("!S>6YC:')O;FEZ
m...@*'1H:7,I('L-"@ET;7`N;F5X="`](&QA<W0N;F5X=#L-"@EL87-T+FYE
M>'0@/2!T;7`["0T*("`@("`...@?2`-"B`@("!]#0H@("`...@#0h@("`...@8f]o;"!C
M;VYS=6UE*&]U="!4(')E<W5L="d...@#0h@("`@>PT*("`@("`...@3f]d92!t;7`[
M#0H@("`@("!S>6YC:')O;fez...@*'1H:7,I('L-"@ET;7`@/2!F:7)S="YN
M97AT.PT*"6EF("AT;7`@:7,@;G5L;"D-"@D@(')E='5R;B!F86QS93L-"@EF
M:7)S="YN97AT(#...@=&UP+FYE>'0[#0H@("`@("!]#0H@("`@("!R97-U;'0@
M/2!T;7`N=F%L=64[#0H@("`@("!R971U<f...@=')U93L-"B`@("!]#0H@('T-
M"@T*("!C;&%S<R!,249/7TQI;FME9$QI<W1?3&]C:VEN9U]1=65U92`Z(%%U
M975E#0H@('L-"B`@<')I=F%T93H-"B`@("!.;V1E(&QA<W0[#0H@("`@("`@
M(`T*("!P=6)L:6,Z#0H@("`...@=f]i9"!R97-E="@I('L@;&%S="`](&YE=R!.
M;V1E.R!]#0H@("`...@=&AI<r...@i('L@<f5s970h...@?0t*("`@(`T*("`@('-T
M<FEN9R!N86UE*"D@>R!R971U<FX@(DPL3$PL3&LB.R!]#0H@("`@<W1R:6YG
M(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(DQ)1D\Z($QO8VMI;F<L('5S:6YG
M(&$@;&EN:V5D(&QI<w...@87,@<W1O<F%G92XB.R!]#0H@("`@("`...@#0h@("`@
M=F]I9"!P<F]D=6-E*&EN(%...@="D-"B`@("![#0H@("`@("!.;V1E('1M<"`]
M(&YE=R!.;V1E*'0I.PT*("`@("`@<WEN8VAR;VYI>F5D("AT:&ES*2![#0H)
M=&UP+FYE>'0@/2!L87-T+FYE>'0[#0H);&%S="YN97AT(#...@=&UP.PD-"B`@
M("`@('t...@#0h@("`...@?0t*("`@(`T*("`@(&)O;v...@8v]n<w5m92ao...@5"!R
M97-U;'0I(`T*("`@('L-"B`@("`@($YO9&4...@=&UP.PT*("`@("`@<WEN8VAR
M;VYI>F5D("AT:&ES*2![#0H)=&UP(#T@;&%S="YN97AT.PT*"6EF("AT;7`@
M:7,@;G5L;"D-"@D@(')E='5R;B!F86QS93L-"@EL87-T+FYE>'0@/2!T;7`N
M;F5X=#L-"B`@("`@('T-"B`@("`@(')E<W5L="`]('1M<"YV86QU93L-"B`@
M("`@(')E='5R;B!T<G5E.PT*("`@('T-"b...@?0t*("`-"@T*("!C;&%S<R!&
M249/7TQI;FME9$QI<W1?3&]C:t9r965?475e...@.b!1=65u90t*("![#0H@
M('!R:79A=&4Z#0H@("`@<VAA<F5D($YO9&4...@9fer<W0L;&%S=#L-"B`@("`@
M("`...@#0h@('!U8FQI8SH-"B`@("!V;VED(')E<V5T*"D@>R!F:7)S="`](&QA
M<W0@/2!N97<@<VAA<F5D*$YO9&4I.R!]#0H@("`...@=&AI<r...@i('L@<F5S970H
m...@?0t*("`@("`@("`-"B`@("!S=')I;F<@;f%...@i('L@<F5T=7)N(")&
M+$Q,+$Q&(c...@?0t*("`@('-T<FEN9R!D97-C<FEP=&EO;b...@i('L@<F5T=7)N
M(")&249/.B!,;V-K($9r...@*'5S:6YG(&-A<RDL('5S:6YG(&$@;&EN:V5D
M(&QI<w...@87,@<W1O<F%G92XB.R!]#0H@("`...@#0h@("`...@#0h@("`...@=f]i9"!P
M<F]D=6-E*&EN(%...@="D-"B`@("![#0H@("`@("!S:&%r...@875t;R!T;7`@
M/2!N97<@<VAA<F5D*$YO9&4I*'0I.R`@("`-"B`@("`@(&1O('L-"@ET;7`N
M;F5X="`](&QA<W0N;F5X=#L-"B`@("`@('t...@=vai;&4...@*"%C87,H)FQA<W0N
M;F5X="QT;7`N;F5X="QT;7`I*3L-"B`@("!](`T*("`@(`T*#0H@("`...@8f]o
M;"!C;VYS=6UE*&]U="!4(')E<W5L="d...@#0h@("`@>PT*("`@("`@<VAA<F5D
M($YO9&4...@=&UP.PT*("`@("`...@9&\@>PT*"71M<"`](&9I<G-T+FYE>'0[#0H)
M:6...@*'1M<"!I<R!N=6QL*0T*"2`@<F5T=7)N(&9A;'-E.PT*("`@("`...@?2!w
M:&EL92`H(6-A<r...@f9fer<W0N;F5X="QT;7`L=&UP+FYE>'0I*3L-"B`@("`@
M(`T*("`@("`@<F5S=6QT(#...@=&UP+G9A;'5E.PT*("`@("`@<F5T=7)N('1R
M=64[("`@(`T*("`@('T-"b...@?0t*#0h@(&-L87-S($Q)1D]?3&EN:V5D3&ES
M=%],;V-K1G)E95]1=65U92`Z(%%U975E#0H@('L-"B`@<')I=F%T93H-"B`@
M("!S:&%r...@3f]d92!l87-t.pt*("`@("`@("`-"B`@<'5B;&e...@t*("`@
M('9O:60@<F5S970H*2![(&QA<W0@/2!N97<@<VAA<F5D*$YO9&4I.R!]#0H@
M("`...@=&AI<r...@i('L@<f5s970h...@?0t*("`@("`@("`-"B`@("!S=')I;F<@
M;f%...@i('L@<F5T=7)N("),+$Q,+$Q&(c...@?0t*("`@('-T<FEN9R!D97-C
M<FEP=&EO;b...@i('L@<F5T=7)N("),249/.B!,;V-K($9r...@*'5S:6YG(&-A
M<RDL('5S:6YG(&$@;&EN:V5D(&QI<w...@87,@<W1O<F%G92XB.R!]#0H@("`@
M#0H@("`...@#0h@("`...@=f]i9"!P<F]D=6-E*&EN(%...@="D-"B`@("![#0H@("`@
M("!S:&%r...@875t;R!T;7`@/2!N97<@<VAA<F5D*$YO9&4I*'0I.R`@("`-
M"B`@("`@(&1O('L-"@ET;7`N;F5X="`](&QA<W0N;F5X=#L-"B`@("`@('T@
M=VAI;&4...@*"%C87,H)FQA<W0N;F5X="QT;7`N;F5X="QT;7`I*3L-"B`@("!]
M(`T*("`@(`T*#0H@("`...@8f]o;"!C;VYS=6UE*&]U="!4(')E<W5L="d...@#0h@
M("`@>PT*("`@("`@<VAA<F5D($YO9&4...@=&UP.PT*("`@("`...@9&\@>PT*"71M
M<"`](&QA<W0N;F5X=#L-"@EI9B`H=&UP(&ES(&YU;&PI#0H)("!R971U<FX@
M9F%L<V4[#0H@("`@("!]('=H:6QE("@A8V%S*"9L87-T+FYE>'0L=&UP+'1M
M<"YN97AT*2D[#0H@("`@("`-"B`@("`@(')E<W5L="`]('1M<"YV86QU93L-
M"B`@("`@(')E='5R;B!T<G5E.R`@("`-"B`@("!]#0H@('T-"@T*#0H@(&-L
M87-S($Q)1D]?0G5F9F5R7TQO8VMI;f=?475e...@.b!1=65u90t*("![#0H@
M('!R:79A=&4Z#0H@("`...@5"h...@8w5r<F5N=%\[#0H@("`...@5%m=(&)U9F9E<E\[
M#0H@("`@:6YT('-T87)T:6YG7V)U9F9E<E]D97!T:%\[#0H@('!U8FQI8SH-
M"B`@("!S=')I;F<@;f%...@i('L@<F5T=7)N("),+$(L3&LB.R!]#0H@("`@
M<W1R:6YG(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(DQ)1D\Z($QO8VMI;F<L
M('5S:6YG(&$...@9'EN86UI8V%L;'D@<F5S:7IA8FQE(&%R<F%Y(&%S('-T;W)A
M9V4N(c...@?0t*#0h@("`...@=&AI<RAI;G0@<W1A<G1I;F=?8G5F9F5R7V1E<'1H
M/3$P,"D-"B`@("`@('L-"@ES=&%R=&EN9U]B=69F97)?9&5P=&A?(#T@<W1A
M<G1I;F=?8G5F9F5R7V1E<'1H.PT*"7)E<V5T*"D[#0H@("`@("!]#0H@("`@
M#0H@("`...@=f]i9"!R97-E="@I('L-"B`@("`@(&)U9F9E<E\@/2!N97<@5%MS
M=&%R=&EN9U]B=69F97)?9&5P=&A?73L-"B`@("`@(&-U<G)E;G1?(#T@)F)U
M9F9E<E];,%T[#0H@("`...@?0t*("`@(`T*("`@('YT:&ES*"D-"B`@("`@('L-
M"@ED96QE=&4...@8g5f9f5r7sl-"B`@("`@('T-"@T*("`...@#0h@("`...@=f]i9"!P
M<F]D=6-E*&EN(%...@="D-"B`@("![#0H@("`@("!S>6YC:')O;fez...@*'1H
M:7,I('L-"@DJ*&-U<G)E;G1?*RLI(#...@=#l-"@T*"6EF("AC=7)R96YT7R`]
M/2`F8G5F9F5R7UMB=69F97)?+FQE;F=T:"TQ72D@>PT*"2`@:6YT(&P@/2!B
M=69F97)?+FQE;F=T:#L-"@D@(&)U9F9E<E\N;&5N9W1H(#T@;"`J(#([("\O
M(')E<VEZ90T*"2...@8w5r<F5N=%\@/2`F8G5F9F5R7UML+3%=.R`O+R!R97!O
M:6YT(&%T(&5N9"`-"@D@('!R:6y...@b8g5f9f5r(')E<vez...@=&\@)6E<
M;B(L8G5F9F5R7RYL96YG=&@I.PT*"7T-"B`@("`@('T@("`@("`...@#0h@("`@
M?0T*("`@(`T*("`@(&)O;v...@8v]n<w5m92ao...@5"!R97-U;'0I(`T*("`@
M('L-"B`@("`@('-Y;F-H<F]N:7IE9"`H=&AI<RD@>R`@("`...@#0h):6...@*&-U
M<G)E;G1?("$]("9B=69F97)?6S!=*2!["2...@#0h)("`@(')E<W5L="`]("HH
M+2UC=7)R96YT7RD[#0H)("`@(')E='5R;B!T<G5E.PT*"7T-"@ER971U<FX@
M9F%L<V4[#0H@("`@("!]#0H@("`...@?0t*("!]#0H-"b...@8vqa<W,@1DE&3U]-
M97-S86=E7U!A<W-I;f=?475e...@.b!-97-s86=e7u!a<W-I;F=?475E=64@
M#0H@('L-"B`@<')I=F%T93H-"B`@("!4:6...@8v]n<W5M97)?=&ED7SL-"B`@
M<'5B;&e...@t*("`@(`T*("`@('-T<FEN9R!N86UE*"D@>R!R971U<FX@(D8L
M35`B.R!]#0H@("`@<W1R:6YG(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(D9)
M1D\Z($UE<w-a...@4&%S<VEN9R([('T-"B`@("!4:6...@8v]n<W5M97)?5&ED
M*"D@>R!R971U<f...@8v]n<W5M97)?=&ed...@?0t*("`@('9O:60@<V5T7V-O
M;G-U;65R7U1I9"A4:6...@="D@>R`-"B`@("`@(&1E8G5G*#$I('L@<')I;G1F
M*")-...@8v]n<W5M97(@5&ED('-E="!O;B!Q=65U92Y<;B(I.R!]#0H@("`@
M("!C;VYS=6UE<E]T:61?(#...@=#l-"B`@("!](`T*#0H@("`...@=&AI<r...@i('M]
M(`T*("`@('9O:60@<F5S970H*2![?0T*#0H@("`...@=f]i9"!P<F]D=6-E*&EN
M(%...@="D@>PT*("`@("`@<V5N9"AC;VYS=6UE<E]T:61?+'0I.PT*("`@('T-
M"B`@("`-"B`@("!B;V]L(&-O;G-U;64H;W5T(%0@<F5S=6QT*2![#0H@("`@
M("!R96-E:79E*"A4('0I('L@<F5S=6QT(#...@=#l@?2D[#0H@("`@("!R971U
?<f...@=')U93L-"B`@("!]#0H@('T-"@T*?0T*#0H-"@``
`
end
begin 644 Queue_Test_ThreadObjects.d
M:6UP;W)T('-T9"YC+G-T9&EO.PII;7!O<g...@8v]r92yt:')E860["FEM<&]R
M="!S=&0N9&%T971I;64["FEM<&]R="!S=&0N<F%N9&]M.PII;7!O<G0@<W1D
M+FUA=&@["FEM<&]R="!S=&0N86QG;W)I=&AM.PII;7!O<G0@<W1D+F9O<FUA
M=#L*:6UP;W)T('-T9"YR86YG93L*:6UP;W)T('-T9"YC;VYC=7)R96YC>3L*
M:6UP;W)T('-T9"YT<F%I=',["FEM<&]R="!S=&0N8V]N8W5R<F5N8WD["@H*
M:6UP;W)T(%%U975E.PH*=&5M<&QA=&4...@475e=65?5&5S=%]4>7!E<RA4*2`*
M>PH@('-T<G5C="!$871A7U!A8VME="`*("!["B`@("!4:6-K<R!P5&EM93L*
M("`@(&)O;VP@;&%S="`](&9A;'-E.PH@("`...@5"!D=6UM>3L*("!]"@H@(&%L
M:6%S(%%U975E7U1Y<&5S(2A$871A7U!A8VME="d...@450["@H@('1E;7!L871E
M(%%U975E7U5S92`H42D@"B`@>PH@("`...@=f]i9"!S96YD7W1O*%$@<2P@:6X@
M1&%t85]086-k...@9"D@>R!Q+G!R;V1U8V4H9"D[('T*("`@(&)O;VP@<F5C
M96EV95]F<F]M*%$@<2P@;W5T($1A=&%?4&%C:V5T(')E<W5L="D@>R!R971U
M<FX@<2YC;VYS=6UE*&0I.R!]"b...@?0h*("!C;&%S<R!0<F]D=6-E<c...@5&AR
M96%D"B`@>PH@("`...@=&AI<RA15"Y1=65U92!Q+"!286YD;VT@<BP@:6YT('!A
M8VME=',L(&EN="!P86-K971S7W!E<E]S+"!I;g...@=7-?=f%r:6%B:6QI='DI
M(`H@("`@>PH@("`@("!17R`]('$["B`@("`@(')?(#T@<CL*("`@("`@<&%C
M:V5T<U\@/2!P86-K971S.PH@("`@("!P86-K971?<W!A8VEN9U\@/2`Q,#`P
M,#`P,"]P86-K971S7W!E<E]S.R`O+W5N:71S(&%R92`Q,#!N<R`*("`@("`@
M+R\@;6%K92!S=7)E('=E(&-A;B=T(&aa...@+71v92!s;&5E<`H@("`@("!P
M86-K971?=F%R:6%B:6QI='E?(#T@;6EN*#$P*G5S7W9A<FEA8FEL:71Y+'!A
M8VME=%]S<&%C:6YG7RD["B`@("`@('-U<&5R*"9R=6XI.R`@"B`@("!]"B`@
M<')I=F%T93H*("`@(&EN="!P86-K971S7SL*("`@(&EN="!P86-K971?<W!A
M8VEN9U\["B`@("!I;G0@<&%C:V5T7W9A<FEA8FEL:71Y7SL*("`@(%%4+E%U
M975E(%%?.PH@("`...@4f%n9&]M(')?.PH@("`@"B`@("!V;VED(')U;b...@i(`H@
M("`@>PH@("`@("!D96)u...@q*2![('!R:6y...@b:6X@<')O9'5...@i7&XB
m...@?0h@("`@("!I;g...@8v]u;G1E<B`](#`["B`@("`@('=H:6QE("AC;W5N
M=&5R*RL@/"!P86-K971S7RD@('L*"41A=&%?4&%C:V5T(&1A=&$["@ED871A
M+G!4:6UE(#T@<WES=&e...@i.ph)9&5B=6<@*#4I('L@<')I;G1F*")396YD
M:6YG('0])6E<;B(L9&%T82YP5&EM92YV86QU92D[('T*"5%?+G!R;V1U8V4H
M9&%T82D["@ET:&ES+G-L965P*'!A8VME=%]S<&%C:6YG7RMU;FEF;W)M*"UP
M86-K971?=F%R:6%B:6QI='E?+'!A8VME=%]V87)I86)I;&ET>5\L<E\I*3L*
M("`@("`...@?0h@("`...@?0h@('T*"B`@<W1R=6-T(%!R;V1U8V5R7TU07T1O;F4@
M>WT["B`@"b...@=f]i9"!P<F]D=6-E7VUP*&EN="!P86-K971S+"!I;G0@<&%C
M:V5T<U]P97)?<r...@4f%n9&]M('(L(&EN="!U<U]V87)I86)I;&ET>2...@5&ED
M(&-4:60L(%1I9"!M5&ED*2`*("!["B`@("!D96)u...@q*2![('!R:6y...@b
M:6X@<')O9'5C95]M<"@I7&xb...@?0h@("`@:6YT(&-O=6YT97(@/2`P.PH@
M("`...@8v]n<W0@:6YT('!A8VME=%]S<&%C:6YG(#T@,3`P,#`P,#`O<&%C:V5T
M<U]P97)?<s...@+r]u;FET<R!A<F4@,3`P;G,@"B`@("!C;VYS="!I;G0@<&%C
M:V5T7W9A<FEA8FEL:71Y(#T@;6EN*#$P*G5S7W9A<FEA8FEL:71Y+'!A8VME
M=%]S<&%C:6YG*3L*("`@('=H:6QE("AC;W5N=&5R*RL@/"!P86-K971S*2`@
M>PH)1&%t85]086-k...@9&%T83L*"61A=&$N<%1I;64@/2!S>7-T:6UE*"D[
M"@ED96)U9R`H-2D@>R!P<FEN=&8H(E-E;F1I;F<@=#TE:5QN(BQD871A+G!4
M:6UE+G9A;'5e...@?0h)<V5N9"AC5&ED+&1A=&$I.PH)5&AR96%D+G-L965P
M*'!A8VME=%]S<&%C:6YG*W5N:69O<FTH+7!A8VME=%]V87)I86)I;&ET>2QP
M86-K971?=F%R:6%B:6QI='DL<BDI.PH@("`...@?0h@("`...@4')O9'5C97)?35!?
M1&]N92!P9#L*("`@('-E;F0H;51I9"QP9"D["B`@("!D96)u...@q*2![('!R
M:6y...@b96yd('!R;V1U8V5?;7`H*5QN(BD[('T*("!]"@H@("`*("!15"Y-
M97-S86=E7U!A<W-I;F=?475E=64@;7!?<75E=64H450N475E=64@<2D@>PH@
M("`...@450n365s<V%G95]087-S:6YG7U%U975E(&UP<2`](&-A<W0H450N365S
M<V%G95]087-S:6YG7U%U975E*7$["B`@("!R971U<FX@;7!Q.PH@('T*("`*
M("!C;&%S<R!#;VYS=6UE<B`Z(%1H<F5A9`H@('L*("`@('1H:7,H450N475E
M=64@<2QI;g...@=&]T86Q?97AP96-T961?<&%C:V5T<RD@"B`@("`@('L*"5%?
M(#T@<3L*"65X<&5C=&5D7W!A8VME='-?(#...@=&]T86Q?97AP96-T961?<&%C
M:V5T<SL*"61E;&%Y<U\N;&5N9W1H(#...@=&]T86Q?97AP96-T961?<&%C:V5T
M<SL*"7-U<&5R*"9R=6XI.PH@("`@("!]"B`@("!B;V]L('-T;W`@/2!F86QS
M93L*("!P<fev87...@h@("`...@450n475e=64@45\["B`@("!L;vyg...@9&5L
M87ES7SL*("`@(&EN="!E>'!E8W1E9%]P86-K971S7SL*"B`@("!V;VED(')U
M;b...@i(`H@("`@>PH@("`@("!D96)u...@q*2![('!R:6y...@b:6...@8v]n<W5M
m...@i7&xb...@?0h@("`@("!I;G0@<&%C:V5T7VYU;6)E<B`](#`["B`@("`@
M($1A=&%?4&%C:V5T(&1A=&$["B`@("`@('=H:6QE("AP86-K971?;G5M8F5R
M(#...@97ap96-t961?<&%C:V5T<U\I('L*"6EF("A17RYC;VYS=6UE*&1A=&$I
M*2!["@D@(&1E;&%Y<U];<&%C:V5T7VYU;6)E<BLK72`]('!A8VME=%]D96QA
M>2AD871A*3L*"7T*("`@("`...@?0h@("`@("!D96)u...@q*2![('!R:6y...@b
M96YD(&-O;G-U;64H*5QN(BD[('T*("`@('T*"B`@<'5B;&e...@h@("`@;&]N
M9UM=(&1E;&%Y<r...@i('L@<F5T=7)N(&1E;&%Y<U\[('T*("!]"@H@(&QO;F<@
M<&%C:V5T7V1E;&%Y*$1A=&%?4&%C:V5T(&1A=&$I(`H@('L*("`@(&1E8G5G
M("@U*2![('!R:6y...@b4f5c)v...@=#te:5QN(BQD871A+G!4:6UE+G9A;'5E
m...@?0h@("`...@5&EC:W,@8U1I;64["B`@("!C5&EM92`]('-Y<W1I;64H*3L@
M"B`@("!D96)U9R`H-2D@>R!P<FEN=&8H(E)E8R=D(&%T('0])6E<;B(L8U1I
M;64N=F%L=64I.R!]"B`@("!4:6-K<R!E;&%P<V5D(#...@8u1i;6...@+2!d871a
M+G!4:6UE.PH@("`@;&]N9R!E;&%P<V5D7W5S(#...@96qa<'-E9"YT;TUI8W)O
M<V5C;VYD<R$H;&]N9RDH*3L*("`@(')E='5R;B!E;&%P<V5D7W5S.PH@("`@
M9&5B=6<@*#4I('L@<')I;G1F*")U<STE:5QN(BQE;&%P<v5d7w5s...@?0h@
M('T*"B`@<W1R=6-T($-O;G-U;65?35!?1&]N92![?3L*"b...@=f]i9"!C;VYS
M=6UE7VUP*&EN="!N=6U?<&%C:V5T<r...@5&ED(&U4:60L('-H87)E9"!L;VYG
M6UT@<V1E;&%Y<RD@"B`@>PH@("`...@9&5B=6<H,2D@>R!P<FEN=&8H(FEN(&-O
M;G-U;65?;7`H*5QN(BD[('T*("`@(&EN="!P86-K971?;G5M8F5R(#T@,#L*
M("`@('=H:6QE("AP86-K971?;G5M8F5R(#P@;G5M7W!A8VME=',I"B`@("`@
M(')E8V5I=F4H*$1A=&%?4&%C:V5T(&0I('MS9&5L87ES6W!A8VME=%]N=6UB
M97(K*UT@/2!P86-K971?9&5L87DH9"D[('TI.PH@("`@"B`@("!#;VYS=6UE
M7TU07T1O;f...@8v0["B`@("!S96YD*&U4:60L8V0I.PH@("`...@9&5B=6<H,2D@
M>R!P<FEN=&8H(F5N9"!C;VYS=6UE7VUP*"E<;B(I.R!]"b...@?0h@(`H@(&-L
M87-S(%%U975E7U1E<W0@>PH@("`@:6UM=71A8FQE('-T<FEN9R!497-T7TEN
M9F]?2&5A9&5R(#T@(E!R;V1S7'1P:W1S7%QP<F]D7'1P:W1S7%QS7'1J:71T
M97(B.PH@("`@:6UM=71A8FQE('-T<FEN9R!2=6Y?26YF;U](96%D97(@/2`B
M475E=65<="!4;W0@<UQT(&%V9UQT("!S9%QT;6EN7'0@;6%X7'0\;6EN/EQT
M(#q...@^7&Y?7U]?7U]<=%]?7U]?7UQT7U]?7U]<=%]?7U]?7'1?7U]<=%]?
M7U]?7'1?7U]?7UQT7U]?7U]?7R(["@H@("`...@+r]s=&%T:6,@<W1R:6YG(%1E
M<W1?26YF;U](96%D97(H*2![(')E='5R;B!I;6UU=&%B;&4@<W1R:6YG*")0
M<F]D<UQT<&MT<UQ<<')O9%QT<&MT<UQ<<UQT:FET=&5R(BD[('T*("`@("\O
M<W1A=&EC('-T<FEN9R!2=6Y?26YF;U](96%D97(H*2![(')E='5R;B!I;6UU
M=&%B;&4@<W1R:6YG*")1=65U95QT5&]T('-<=%1O="!P:W1S7'1A=F=<='-D
M7'1M:6Y<=&UA>%QT/&UI;CY<=#q...@^(c...@?0h@("`@"B`@<')I=F%T93H*
M("`@(`H@("`...@+r\@9F]R('1E<W0@:6YP=71S"B`@("!I;G0@;G5M7W!R;V1U
M8V5R<U\L('!A8VME='-?<&5R7W!R;v1u8v5r...@879g7w!a8vme='-?<&5R
M7W-?+"!M:6-R;W-E8V]N9%]V87)I86)I;&ET>5\["B`@("`*("`@("\O(&9O
M<B!T97-T(&]U='!U=',*("`@(&QO;F<@;6%X:6UU;5\L;6EN:6UU;5\L3E\[
M"B`@("!D;W5B;&4...@879g7rp@<W1D7V1E=E\L(&%V9U]M:6Y?+"!A=F=?;6%X
M7RP@<G5N7W-?.PH@("`@<W1R:6YG('%?;F%M95\["B`@("`*("!P=6)L:6,Z
M"B`@("!T:&ES*&EN="!N=6U?<')O9'5C97)S+"!I;G0@<&%C:V5T<U]P97)?
M<')O9'5C97(L(&EN="!A=F=?<&%C:V5T<U]P97)?<RP@:6YT(&UI8W)O<V5C
M;VYD7W9A<FEA8FEL:71Y*2`*("`@('L*("`@("`@;G5M7W!R;V1U8V5R<U\@
M/2!N=6U?<')O9'5C97)S.PH@("`@("!P86-K971S7W!E<E]P<F]D=6-E<E\@
M/2!P86-K971S7W!E<E]P<F]D=6-E<CL*("`@("`...@879g7w!a8vme='-?<&5R
M7W-?(#...@879g7w!a8vme='-?<&5R7W,["B`@("`@(&UI8W)O<V5C;VYD7W9A
M<FEA8FEL:71Y7R`](&UI8W)O<V5C;VYD7W9A<FEA8FEL:71Y.PH@("`...@?0h@
M("`@"B`@("!S=')I;F<@5&5S=%]);F9O*"D@>R`*("`@("`...@875t;R!W<FET
M97(@/2!A<'!E;F1E<B%S=')I;F<H*3L)("`@(`H@("`@("!F;W)M871T9617
M<FET92AW<FET97(L(B5S('!R;V1U8V5R*',I(&5A8V@@<')O9'5C:6YG("5S
M('!A8VME=',@870@)7,@<&MT<R]S("AT;W1A;"d...@=vet:"`E<R!U<R!J:71T
M97(Z(BQN=6U?<')O9'5C97)S7RQP86-K971S7W!E<E]P<F]D=6-E<E\L879G
M7W!A8VME='-?<&5R7W-?+&UI8W)O<V5C;VYD7W9A<FEA8FEL:71Y7RD["B`@
M("`@(')E='5R;B!W<FET97(N9&%T83L*("`@('T*("`@(`H@("`@"B`@("!S
M=')I;F<@4G5N7TEN9F\H*2!["B`@("`@(&%U=&\...@=w)I=&5R(#...@87!p96yd
M97(A<W1R:6YG*"D["B`@("`@(&9O<FUA='1E9%=R:71E*'=R:71E<BPB)7-<
M="4V+C)F7'0E-2XR9EQT)34N,F9<="4R<R(L<5]N86UE7RQR=6Y?<U\L879G
M7RQS=&1?9&5V7RQM:6YI;75M7RD["B`@("`@(&9O<FUA='1E9%=R:71E*'=R
M:71E<BPB7'0E-7,B+"!M87AI;75M7RD["B`@("`@(&9O<FUA='1E9%=R:71E
M*'=R:71E<BPB7'0E-2XR9B(L879G7VUI;E\I.PH@("`@("!F;W)M871T9617
M<FET92AW<FET97(L(EQT)3<N,F8B+&%V9U]M87A?*3L*("`@("`@<F5T=7)N
M('=R:71E<BYD871A.PH@("`...@?0h@("`*"B`@("!V;VED(')U;BA15"Y1=65U
M92!Q*0H@("`@>PH@("`@("!Q7VYA;65?(#T@<2YN86UE.PH@("`@("!Q+G)E
M<V5T*"D["B`@("`@("\O(&-R96%T92!A('!R;V1U8V5R('1H<F5A9"!A;F0@
M82!C;VYS=6UE<B!T:')E860*("`@("`...@4f%n9&]M(&=E;CL*("`@("`...@8v]n
M<W0@:6YT(&YU;6)E<E]P86-K971S(#T@;G5M7W!R;V1U8V5R<U\J<&%C:V5T
M<U]P97)?<')O9'5C97)?.PH@("`@("!4:60@;51I9"`]('1H:7-4:60H*3L*
M"@H@("`@("!15"Y-97-S86=E7U!A<W-I;F=?475E=64@;7!Q(#T@;7!?<75E
M=64H<2D["B`@("`@($-O;G-U;65R(&-O;G-U;65R.PH@("`@("!S:&%R960@
M;&]N9UM=('-D96QA>7,["B`@("`@(%1I9"!C5&ED.PH@("`@("!S9&5L87ES
M+FQE;F=T:"`](&YU;6)E<E]P86-K971S.PH@("`@("!I9B`H;7!Q("%I<R!N
M=6QL*2!["@ED96)u...@q*2![('!R:6y...@b4w!a=vyi;F<@8V]N<W5M97(@
M=&AR96%D+EQN(BD[('T*"6-4:60@/2!S<&%W;b...@f8v]n<W5M95]M<"QN=6UB
M97)?<&%C:V5T<RQM5&ED+'-D96QA>7,I.PH);7!Q+G-E=%]C;VYS=6UE<E]4
M:60H8U1I9"D["@ED96)u...@q*2![('!R:6y...@b8v]n<W5M97(@=&AR96%D
M('-P87=N960N7&xb...@?0h@("`@("!]"B`@("`@(&5L<V4@>PH)9&5B=6<H
M,2D@>R!P<FEN=&8H(E-T87)T:6YG(&-O;G-U;65R('1H<F5A9"Y<;B(I.R!]
M"@EC;VYS=6UE<B`](&YE=R!#;VYS=6UE<BAQ+&YU;6)E<E]P86-K971S*3L@
M+R\@;VYE(&-O;G-U;65R(`H)8V]N<W5M97(N<W1A<G0H*3L@"@ED96)u...@q
M*2![('!R:6y...@b8v]n<W5M97(@<W1A<G1E9"xb...@?0h@("`@("!]"B`@
M("`@("`@"@H@("`@("!C;VYS="!I;G0@<'!S(#...@879g7w!a8vme='-?<&5R
M7W-?+VYU;5]P<F]D=6-E<G-?.PH@("`@("!4:6-K<R!S5&EM92`]('-Y<W1I
M;64H*3L*("`@("`@:6...@*&UP<2`A:7,@;G5L;"D@>PH)9F]R("AI;G0@:STP
M.R!K/&YU;5]P<F]D=6-E<G-?.R`K*VLI('L*"2...@9&5B=6<H,2D@>R!P<FEN
M=&8H(G-P87=N:6YG('!R;V1U8V5R+EQN(BD[('T*"2`@<W!A=VXH)G!R;V1U
M8V5?;7`L<&%C:V5T<U]P97)?<')O9'5C97)?+'!P<RQG96XL;6EC<F]S96-O
M;F1?=F%R:6%B:6QI='E?+&-4:60L;51I9"D["@D@(&1E8G5G*#$I('L@<')I
M;G1F*")S<&%W;F5D('!R;V1U8V5R+EQN(BD[('T*"7T*"61E8G5G*#$I('L@
M<')I;G1F*")786ET:6YG(&9O<B!P<F]D=6-E<G,@=&\@<VEG;F%L(&1O;F4N
M7&xb...@?0h)9F]R("AI;G0@:STP.R!K/&YU;5]P<F]D=6-E<G-?.R`K*VLI
M('L*"2`@<f5c96e...@h4')O9'5C97)?35!?1&]N92!P9"D@>WTI.PH)?0H)
M9&5B=6<H,2D@>R!P<FEN=&8H(F%L;"!P<F]D=6-E<G,@<VEG;F%L960N7&XB
m...@?0h@("`@("!]"B`@("`@(&5L<V4@>PH)5&AR96%D1W)O=7`@<')O9'5C
M97)4:')E861S(#T@;F5W(%1H<F5A9$=R;W5P*"D["@EF;W(@*&EN="!K/3`[
M(&L\;G5M7W!R;V1U8V5R<U\[("LK:RD@>PH)("!A=71O('!R;V1U8V5R(#T@
M;F5W(%!R;V1U8V5R*'$L9V5N+'!A8VME='-?<&5R7W!R;V1U8V5R7RQP<',L
M;6EC<F]S96-O;F1?=F%R:6%B:6QI='E?*3L*"2...@9&5B=6<H,2D@>R!P<FEN
M=&8H(G-T87)T:6YG('!R;V1U8V5R+EQN(BD[('T*"2`@<')O9'5C97(N<W1A
M<G0H*3L*"2...@9&5B=6<H,2D@>R!P<FEN=&8H(G!R;V1U8V5R('-T87)T960N
M7&xb...@?0h)("!P<F]D=6-E<E1H<F5A9',N861D*'!R;V1U8V5R*3L*"7T*
M"61E8G5G*#$I('L@<')I;G1F*")786ET:6YG(&9O<B!P<F]D=6-E<G,N7&XB
m...@?0h)<')O9'5C97)4:')E861S+FIO:6Y!;&PH*3L@(`H)9&5B=6<H,2D@
M>R!P<FEN=&8H(G!R;V1U8V5R<R!F:6YI<VAE9"Y<;B(I.R!]"B`@("`@('T*
M("`@("`@"B`@("`@(&EF("AM<'$@(6ES(&YU;&PI('L@"@ED96)u...@q*2![
M('!R:6y...@b5v%i=&EN9R!F;W(@*'-P87=N960I(&-O;G-U;65R('1H<F5A
M9"Y<;B(I.R!]"@ER96-E:79E*"A#;VYS=6UE7TU07T1O;f...@8v0i('M]*3L*
M"61E8G5G*#$I('L@<')I;G1F*")S<&%W;F5D(&-O;G-U;65R('1H<F5A9"!S
M:6=N86QE9"Y<;B(I.R!]"B`@("`@('T*("`@("`...@96qs92!["@ED96)u...@q
M*2![('!R:6y...@b5v%i=&EN9R!F;W(@8V]N<W5M97(@=&AR96%D+EQN(BD[
M('T*"6-O;G-U;65R+G-T;W`@/2!T<G5E.PH)8V]N<W5M97(N:F]I;b...@i.r`o
M+R!M86ME('-U<F4@:7...@9fen:7-H97,*"61E8G5G*#$I('L@<')I;G1F*")C
M;VYS=6UE<B!F:6YI<VAE9"Y<;B(I.R!]"B`@("`@('T*"@H@("`@("!4:6-K
M<R!E5&EM92`]('-Y<W1I;64H*3L*("`@("`@<G5N7W-?(#...@*&54:6UE+7-4
M:6UE*2YT;U-E8V]N9',A9&]U8FQE*"D["B`@("`@(`H@("`@("!L;VYG6UT@
M9&5L87ES.PH@("`@("!I9B`H;7!Q("%I<R!N=6QL*2`*"61E;&%Y<R`](&-A
M<W0H;&]N9UM=*7-D96QA>7,["B`@("`@(&5L<V4*"61E;&%Y<R`](&-O;G-U
M;65R+F1E;&%Y<r...@i.ph@("`@("`*"B`@("`@($Y?(#...@9&5L87ES+FQE;F=T
M:#L@"B`@("`@(`H@("`@("`*("`@("`@"B`@("`@('-O<G0H9&5L87ES*3L*
M("`@("`@;6%X:6UU;5\@/2!D96QA>7-;9&5L87ES+FQE;F=T:"TQ73L*("`@
M("`@;6EN:6UU;5\@/2!D96QA>7-;,%T["B`@("`@(`H@("`@("!A=71O('-U
M;2`](')E9'5C92$H(F$K8B(I*&-A<W0H;&]N9RDP+&1E;&%Y<RD["B`@("`@
M(`H@("`@("!A=F=?(#...@8v%s="AD;W5B;&4I<W5M+TY?.PH@("`@("`*("`@
M("`@;&]N9R!F*&QO;F<@82P@;&]N9R!B*2![(`H)9&]U8FQE('$R(#...@*&(M
M879G7RDJ*&(M879G7RD["@ER971U<f...@82mc87-t*&QO;F<I<3([(`H@("`@
M("!]"B`@("`@(&%U=&\@<V0@/2!R961U8V4A*&8I*&-A<W0H;&]N9RDP+&1E
M;&%Y<RD["B`@("`@(`H@("`@("!S=&1?9&5V7R`]('-Q<G0H8V%S="AD;W5B
M;&4I<V0O3E\I.PH@("`@("`*("`@("`@:6YT('!C="`](&UA>"AD96QA>7,N
M;&5N9W1H+S$P,"PQ*3L*("`@("`@;&]N9UM=('-M86QL97-T(#...@9&5L87ES
m...@+bx@<&-T73L*("`@("`@;&]N9UM=(&QA<F=E<W0@/2!D96QA>7-;*&1E
M;&%Y<RYL96YG=&@M<&-T*2`N+B!D96QA>7,N;&5N9W1H73L*("`@("`...@879g
M7VUI;E\@/2!R961U8V4A*")A*V(b...@p+c`l<VUA;&QE<W0I+W!C=#L*("`@
M("`...@879g7vua>%\@/2!R961U8V4A*")A*V(b...@p+c`l;&%R9V5S="DO<&-T
M.PH@("`@("`*("`@('T*("!]"GT*"F%L:6%S(%%U975E7U1E<W1?5'EP97,A
M*&)O;VPI(%%45#L*"G9O:60@;6%I;b...@i(`I["B`@<V5T8G5F*'-T9&]U="QN
M=6QL*3L*("!P<FEN=&8H(EQN06QL('1I;65S(&EN(&UI8W)O<V5C;VYD<R!U
M;FQE<W,@;W1H97)W:7-E('-P96-I9FEE9"Y<;B(I.PH@('!R:6y...@b7&X\
M;6EN/B!A;F0@/&UA>#...@87)E(&%V97)A9V5S(&]V97(@9F%S=&5S="!A;F0@
M<VQO=V5S="`Q)24@<F5S<&5C=&EV96QY+EQN7&XB*3L*(`H@(%%45"Y15"Y1
M=65U95M=('%U975E<SL*("!Q=65U97,@?CT@;F5W(%%45"Y15"Y,249/7T)U
M9F9E<E],;V-K:6YG7U%U975E*#$P,"D["B`@<75E=65S('X](&YE=R!15%0N
M450N3$E&3U],:6YK961,:7-T7TQO8VMI;F=?475E=64H*3L@"B`@<75E=65S
M('X](&YE=R!15%0N450N1DE&3U],:6YK961,:7-T7TQO8VMI;F=?475E=64H
M*3L@"B`@<75E=65S('X](&YE=R!15%0N450N3$E&3U],:6YK961,:7-T7TQO
M8VM&<F5E7U%U975E*"D["B`@"B`@<75E=65S('X](&YE=R!15%0N450N1DE&
M3U],:6YK961,:7-T7TQO8VM&<F5E7U%U975E*"D["B`@<75E=65S('X](&YE
M=R!15%0N450N1DE&3U]-97-S86=E7U!A<W-I;F=?475E=64H*3L*"b...@9f]r
M96%C:"`H43L@<75E=65S*0H@("`@<')I;G1F*"(E+BIS(#T@)2XJ<UQN(BQ1
M+FYA;64L42YD97-C<FEP=&EO;BD["B`@"B`@<')I;G1F*")<;B(I.PH*("!1
M5%0N475E=65?5&5S=%M=('1E<W1S.PH@(`H@('1E<W1S('X](&YE=R!15%0N
M475E=65?5&5S="@Q+#$P+#$P+#$I.PH@('1E<W1S('X](&YE=R!15%0N475E
M=65?5&5S="@T+#$P+#$P+#$I.PH@('1E<W1S('X](&YE=R!15%0N475E=65?
M5&5S="@T+#$P,"PQ,#`L,2D["b...@=&5S=',@?CT@;F5W(%%45"Y1=65U95]4
M97-T*#$L,3`P,"PQ,#`P+#$P,"D["b...@=&5S=',@?CT@;F5W(%%45"Y1=65U
M95]497-T*#0L,3`P,"PQ,#`P+#$P,"D["b...@=&5S=',@?CT@;F5W(%%45"Y1
M=65U95]497-T*#0L-#`P,"PR,#`P+#$P,"D["b...@=&5S=',@?CT@;F5W(%%4
M5"Y1=65U95]497-T*#0L-#`P,"PR,#`P+#$P,#`I.PH@('1E<W1S('X](&YE
M=R!15%0N475E=65?5&5S="@T+#4P,#`P+#4P,#`L,3`P*3L*("!T97-T<R!^
M/2!N97<@4514+E%U975E7U1E<W0H-"PU,#`P,#`L-3`P,#`L,2D["b...@=&5S
M=',@?CT@;F5W(%%45"Y1=65U95]497-T*#0L-3`P,#`P+#4P,#`P+#$P,"D[
M"B`@"@H@(&9O<f5...@h=#l@=&5S=',I('L*("`@('!R:6y...@b)2XJ<UQN
M7&XE+BIS7&XB+'0N5&5S=%]);F9O+'0N4G5N7TEN9F]?2&5A9&5R*3L*("`@
M(&9O<F5A8V@@*%$[('%U975E<RD@>PH@("`@("!T+G)U;BA1*3L*("`@("`@
M<')I;G1F*"(E+BIS7&XB+'0N4G5N7TEN9F\I.PH@("`...@?0h@("`@<')I;G1F
2*")<;B(I.PH@('T*"GT*"@H*
`
end

Reply via email to