Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com From: "Usman Muzaffar" Subject: 1.5.15: multiple simultaneous processes can fail to start Date: Thu, 21 Apr 2005 13:50:44 -0700 Lines: 1214 Message-ID: Reply-To: "Usman Muzaffar" X-Complaints-To: usenet AT sea DOT gmane DOT org X-Gmane-NNTP-Posting-Host: nat.electric-cloud.com X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-IsSubscribed: yes Hello. We seem to be having difficulty when two Cygwin processes are started simultaneously (or in close succession) on multiprocessor Windows 2003 systems. The problem manifests as this error: c:\cygwin\bin\which.exe (3824): *** system shared memory version mismatch detected - 0x0/0x75BE007F. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL. There is only version of Cygwin installed, and the system was freshly rebooted. Note also the computed version id was '0' for this process. The problem can also manifest as a similar error about "user shared memory version", and in some cases as an incorrect mount table (PATH can be missing '/cygdrive' prefix). I'm attaching source for a small test program which can reproduce the problem very reliably on my system. Compile using Visual Studio with 'cl main.cpp'. My 'cl.exe' reports version: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86 Close all Cygwin programs, and run 'main.exe' It will attempt to run 'which notepad' 4 times simultaneously, and then repeat. On my system, it will always fail somewhere between 10 and 1500 iterations (usually less than 2 minutes). Test system specs Windows Server 2003 Standard Ed (build 5.2.3790) Dual 3 GHz Xeon (w/hyperthreading - OS sees 4 processors), 1GB RAM 'cygcheck -r -s -v' output is also attached. Thanks very much for any help. -Usman begin 666 cygcheck.out M#0I#>6=W:6X AT 0V]N9FEG=7)A=&EO;B!$:6%G;F]S=&EC7-T96T AT 5&EM93H AT 5&AU($%P6=W:6Y<=7-R7&QO8V%L7'1O;VQS7&DV.#9?=VEN,S)<8FEN#0H)0SI< M8WEG=VEN7'5S7-T96TS,EQ78F5M#0H)8SI<14-L;W5D7&DV.#9?=VEN,S)< M8FEN#0H-"D]U='!U="!F7-T96TS,CM# M.EQ724Y$3U=3.T,Z7%=)3D1/5U-<4WES=&5M,S)<5V)E;3MC.EQ%0VQO=61< M:38X-E]W:6XS,EQB:6XG#0H-"D%,3%5315)34%)/1DE,12 ](&!#.EQ$;V-U M;65N=',@86YD(%-E='1I;F=S7$%L;"!57-T96U2;V]T(#T AT 8$,Z7%=)3D1/ M5U,G#0I414U0(#T AT 8$,Z7$1/0U5-17XQ7&)U:6QD7$Q/0T%,4WXQ7%1E;7!< M,2<-"E1-4" ](&!#.EQ$3T-5345^,5QB=6EL9%Q,3T-!3%-^,5Q496UP7#$G M#0I54T521$]-04E.(#T AT 8$Q/3D535$%2-B<-"E5315).04U%(#T AT 8&)U:6QD M)PT*55-%4E!23T9)3$4@/2!@0SI<1&]C=6UE;G1S(&%N9"!3971T:6YG6=W:6X-"DA+15E?0U524D5.5%]54T527%-O9G1W87)E7$-Y9VYU6=W:6Y<4')O9W)A;2!/<'1I;VYS M#0I(2T597TQ/0T%,7TU!0TA)3D5<4T]&5%=!4D5<0WEG;G5S(%-O;'5T:6]N M6=W:6Y<;6]U;G1S('8R#0H@("AD969A=6QT*2 ](& O M8WEG9')I=F4G#0H@(&-Y9V1R:79E(&9L86=S(#T@,'@P,# P,# R,@T*2$M% M65],3T-!3%]-04-(24Y%7%-/1E1705)%7$-Y9VYU6=W:6XG#0H@ M(&9L86=S(#T@,'@P,# P,# P80T*2$M%65],3T-!3%]-04-(24Y%7%-/1E17 M05)%7$-Y9VYU6=N M=7,@4V]L=71I;VYS7$-Y9W=I;EQM;W5N=',@=C)<+W5S# P,# P,#!A#0I(2T597TQ/ M0T%,7TU!0TA)3D5<4T]&5%=!4D5<0WEG;G5S(%-O;'5T:6]N6=W:6Y< M4')O9W)A;2!/<'1I;VYS#0H-"F$Z("!F9" @(" @(" @(" @("!.+T$@(" @ M3B]!(" @(" @(" @(" @(" @(" @(" -"F,Z("!H9" @3E1&4R @(" @,C,S M,CA-8B @,S$E($-0($-3(%5.(%!!($9#(" @("!7:6XR2S,-"F0Z("!C9" @ M(" @(" @(" @("!.+T$@(" @3B]!(" @(" @(" @(" @(" @(" @(" -"G4Z M("!N970 AT 3E1&4R @(" @.3#H@(&AD(" @(" @(" @(" @($XO02 @("!.+T$@(" @(" @ M(" @(" @(" @(" @( T*#0I#.EQC>6=W:6X@(" @(" O(" @(" @(" @(" @ M6=W:6XO8FEN(" O=7-R+V)I;B @(" @ M6=W:6XO;&EB(" O=7-R+VQI8B @(" @ M6=W:6Y< M8FEN7&%W:RYE>&4-"D9O=6YD.B!#.EQC>6=W:6Y<8FEN7&)A&4-"D9O=6YD.B!#.EQC>6=W:6Y<8FEN7&-P<"YE>&4-"D9O M=6YD.B!#.EQC>6=W:6Y<8FEN7&9I;F0N97AE#0I&;W5N9#H AT 0SI<8WEG=VEN M7&)I;EQG8V,N97AE#0I&;W5N9#H AT 0SI<8WEG=VEN7&)I;EQG9&(N97AE#0I& M;W5N9#H AT 0SI<8WEG=VEN7&)I;EQG&4-"D9O M=6YD.B!#.EQC>6=W:6Y<8FEN7&UA:V4N97AE#0I&;W5N9#H AT 0SI<8WEG=VEN M7&)I;EQM=BYE>&4-"D9O=6YD.B!#.EQC>6=W:6Y<8FEN7')M+F5X90T*1F]U M;F0Z($,Z7&-Y9W=I;EQB:6Y<7,]-"XP#0H@(" @(" @(" @(" @(" @(" B M8WEG87!R+3 M,"YD;&PB('8P+C @=',],C P-2\R+S$W(#$S.C4R#0H@(" V M.&L@,C P-2\P,B\Q-R!#.EQC>6=W:6Y<8FEN7&-Y9V%P6=A<')U=&EL+3 M,"YD;&PB('8P+C @=',],C P-2\R+S$W(#$S.C4V M#0H@(" W-VL@,C P-"\P-B\P-"!#.EQC>6=W:6Y<8FEN7&-Y9V%R=%]L9W!L M7S(M,BYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @ M(" @(" @(" B8WEG87)T7VQG<&Q?,BTR+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9V%S M<&5L;"TQ-2YD;&P@+2!O7,]-"XP#0H@(" @(" @ M(" @(" @(" @(" B8WEG87-P96QL+3$U+F1L;"(@=C N,"!T6=A M=&LM,2XP+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @6=A=61I;V9I;&4M,"YD;&PB('8P+C @=',] M,C P-"\Y+S$@,C Z,S@-"B @,S,V:R R,# T+S$P+S(W($,Z7&-Y9W=I;EQB M:6Y<8WEG8F]N;V)O+3(M,"YD;&P@+2!O7,]-"XP M#0H@(" @(" @(" @(" @(" @(" B8WEG8F]N;V)O+3(M,"YD;&PB('8P+C @ M=',],C P-"\Q,"\R-R P.C0S#0H@(" W,FL@,C P-"\Q,"\R-R!#.EQC>6=W M:6Y<8FEN7&-Y9V)O;F]B;RUA8W1I=F%T:6]N+30N9&QL("T@;W,]-"XP(&EM M9STQ+C @6=B;VYO8F]U:2TR+3 N9&QL(B!V,"XP('1S/3(P,#0O,3 O,C@@ M,38Z,3(-"B @(#4U:R R,# T+S Y+S$T($,Z7&-Y9W=I;EQB:6Y<8WEG8GHR M+3$N9&QL("T@;W,]-"XP(&EM9STQ+C @6=B>C(Q+C N9&QL(B!V,"XP('1S/3(P,#(O,2\R-B Q-SHP-PT*(" @ M,3AK(#(P,#0O,#6=C:&%R7,]-"XP#0H@(" @(" @(" @(" @ M(" @(" B8WEG8W!P=6YI="TQ+3DM,30N9&QL(B!V,"XP('1S/3(P,#0O-B\R M-B Q.#HR.0T*(" R-C!K(#(P,#0O,3 O,C8 AT 0SI<8WEG=VEN7&)I;EQC>6=C M7,]-"XP#0H@(" @ M(" @(" @(" @(" @(" B8WEG8W)O8V\M,"XV+3,N9&QL(B!V,"XP('1S/3(P M,#0O,3 O,C8@,34Z,#D-"B @(" W:R R,# S+S$P+S$Y($,Z7&-Y9W=I;EQB M:6Y<8WEG8W)Y<'0M,"YD;&P@+2!O7,]-"XP#0H@ M(" @(" @(" @(" @(" @(" B8WEG8W)Y<'0M,"YD;&PB('8P+C @=',],C P M,R\Q,"\Q.2 P.C4W#0H@(#@U.&L@,C P-2\P-"\Q,2!#.EQC>6=W:6Y<8FEN M7&-Y9V-R>7!T;RTP+CDN-RYD;&P@+2!O7,]-"XP M#0H@(" @(" @(" @(" @(" @(" B8WEG8W)Y<'1O+3 N.2XW+F1L;"(@=C N M,"!T6=C=7)L+3(N9&QL(B!V,"XP('1S M/3(P,#0O,R\R,B W.C4R#0H@(" R,FL@,C P-"\P,B\Q,"!#.EQC>6=W:6Y< M8FEN7&-Y9V-Y9VEP8RTR+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=C>6=I<&,M,BYD;&PB('8P+C @=',] M,C P-"\R+SD@,3 AT Z-#@-"B @,S AT P:R R,# R+S W+S(T($,Z7&-Y9W=I;EQB M:6Y<8WEG9&(M,RXQ+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=D8BTS+C$N9&QL(B!V,"XP('1S/3(P,#(O M-R\R-" Y.C(T#0H@(#@S,6L@,C P,R\P.2\R,"!#.EQC>6=W:6Y<8FEN7&-Y M9V1B+30N,2YD;&P@+2!O7,]-"XP#0H@(" @(" @ M(" @(" @(" @(" B8WEG9&(M-"XQ+F1L;"(@=C N,"!T6=D8BTT+C(N9&QL(B!V,"XP('1S/3(P,#0O-"\R-R X.C,Q M#0H@(#,R-FL@,C P,B\P-B\R-B!#.EQC>6=W:6Y<8FEN7&-Y9V1B,BYD;&P@ M+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B M8WEG9&(R+F1L;"(@=C N,"!T7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG M9&)?8WAX+3,N,2YD;&PB('8P+C @=',],C P,B\W+S(T(#DZ,C4-"B Q,#@P M:R R,# S+S Y+S(P($,Z7&-Y9W=I;EQB:6Y<8WEG9&)?8WAX+30N,2YD;&P@ M+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B M8WEG9&)?8WAX+30N,2YD;&PB('8P+C @=',],C P,R\Y+S(P(#$T.C4S#0H@ M,3$U-FL@,C P-"\P-"\R."!#.EQC>6=W:6Y<8FEN7&-Y9V1B7V-X>"TT+C(N M9&QL("T@;W,]-"XP(&EM9STQ+C @"TT+C(N9&QL(B!V,"XP('1S/3(P,#0O-"\R-R X.C,U M#0H@(" R.&L@,C P-"\P."\Q-2!#.EQC>6=W:6Y<8FEN7&-Y9V5S9"TP+F1L M;" M(&]S/30N,"!I;6<],2XP('-Y6=E7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG97AP M870M,"YD;&PB('8P+C @=',],C P-"\Q,"\Q-" Q.C,T#0H@(" V-6L@,C P M-2\P,2\P."!#.EQC>6=W:6Y<8FEN7&-Y9V5X"TP+F1L;" M(&]S/30N,"!I M;6<],2XP('-Y6=F;'1K;F]X M+3 N9&QL(B!V,"XP('1S/3(P,#,O,3$O-" Q,SHU-PT*(" @-C5K(#(P,#,O M,3$O,#0 AT 0SI<8WEG=VEN7&)I;EQC>6=F;'1K;F]X7V9O6=F;W)M+3 AT N M9&QL(B!V,"XP('1S/3(P,#0O,3 O,3 @,3HS,PT*(" @-#5K(#(P,#$O,#0O M,C4 AT 0SI<8WEG=VEN7&)I;EQC>6=F;W)M-2YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG9F]R;34N9&QL(B!V M,"XP('1S/3(P,#$O-"\R-" R,CHR. T*(" @,S5K(#(P,#(O,#$O,#D AT 0SI< M8WEG=VEN7&)I;EQC>6=F;W)M-BYD;&P@+2!O7,] M-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG9F]R;38N9&QL(B!V,"XP('1S M/3(P,#(O,2\X(#(R.C S#0H@(" T.&L@,C P,R\P."\P.2!#.EQC>6=W:6Y< M8FEN7&-Y9V9O6=F;W)M-RYD;&PB('8P+C @=',],C P,R\X M+SD@,CHR-0T*(" Y,#=K(#(P,#0O,#8O,#D AT 0SI<8WEG=VEN7&)I;EQC>6=F M<'@M,2YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @ M(" @(" @(" B8WEG9G!X+3$N9&QL(B!V,"XP('1S/3(P,#0O-B\Y(#$Z,S4- M"B @,S8Q:R R,# S+S$P+S(U($,Z7&-Y9W=I;EQB:6Y<8WEG9G)E971Y<&4M M-BYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @ M(" @(" B8WEG9G)E971Y<&4M-BYD;&PB('8P+C @=',],C P,R\Q,"\R,2 R M,3HQ. T*(" Q.35K(#(P,#0O,3$O,C,@0SI<8WEG=VEN7&)I;EQC>6=G8V]N M9BTR+30N9&QL("T@;W,]-"XP(&EM9STQ+C @6=W:6Y<8FEN7&-Y9V=D8FTM,RYD M;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @ M(" B8WEG9V1B;2TS+F1L;"(@=C N,"!T6=G9&)M+30N9&QL("T@ M;W,]-"XP(&EM9STQ+C @6=G9&)M7V-O;7!A="TS+F1L;" M(&]S/30N M,"!I;6<],2XP('-Y6=G9&)M M7V-O;7!A="TS+F1L;"(@=C N,"!T6=G9&)M7V-O;7!A="TT+F1L M;" M(&]S/30N,"!I;6<],2XP('-Y6=G9&)M7V-O;7!A="TT+F1L;"(@=C N,"!T6=G9&LM,2TR+3 N9&QL(B!V,"XP('1S/3(P,#0O.2\R(#$Q M.C,Q#0H@(#,Y-&L@,C P-"\Q,B\S,2!#.EQC>6=W:6Y<8FEN7&-Y9V=D:RUX M,3$M,BXP+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @&)U9BTR+C M,"YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG9V1K7W!I>&)U9BTR+C M M,"YD;&PB('8P+C @=',],C P-"\Q,B\S," Q,CHS- AT T*(" @-39K(#(P,#0O M,3(O,S$@0SI<8WEG=VEN7&)I;EQC>6=G9&M?<&EX8G5F7WAL:6(M,BXP+3 N M9&QL("T@;W,]-"XP(&EM9STQ+C @&QI8BTR+C M,"YD;&PB('8P+C @=',],C P M-"\Q,B\S," Q-#HT-0T*(" Q,39K(#(P,#0O,3 O,3 @0SI<8WEG=VEN7&)I M;EQC>6=G96]T:69F+3$N9&QL("T@;W,]-"XP(&EM9STQ+C @6=W:6Y<8FEN7&-Y9V=E='1E>'1P;RTP+F1L;" M(&]S M/30N,"!I;6<],2XP('-Y6=G M971T97AT<&\M,"YD;&PB('8P+C @=',],C P-"\W+S8@,3 Z-38-"B @,3DP M:R R,# T+S W+S V($,Z7&-Y9W=I;EQB:6Y<8WEG9V5T=&5X='-R8RTP+3$T M+3$N9&QL("T@;W,]-"XP(&EM9STQ+C @'1S6=G;&%D92TR+C M,"YD;&P@+2!O7,]-"XP#0H@ M(" @(" @(" @(" @(" @(" B8WEG9VQA9&4M,BXP+3 N9&QL(B!V,"XP('1S M/3(P,#0O.2\W(#$U.C4T#0H@(#$S-6L@,C P-"\P.2\P,B!#.EQC>6=W:6Y< M8FEN7&-Y9V=L:6(M,2TR+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @6=W M:6Y<8FEN7&-Y9V=L:6(M,BXP+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @6=G;6]D=6QE+3$M,BTP+F1L;" M(&]S/30N,"!I;6<] M,2XP('-Y6=G;6]D=6QE+3$M M,BTP+F1L;"(@=C N,"!T6=G;6]D=6QE+3(N,"TP+F1L;" M(&]S M/30N,"!I;6<],2XP('-Y6=G M;6]D=6QE+3(N,"TP+F1L;"(@=C N,"!T'@M,RYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG9VUP M>'@M,RYD;&PB('8P+C @=',],C P-"\Q,"\Q-B P.C0P#0H@(" W-FL@,C P M-"\Q,"\R."!#.EQC>6=W:6Y<8FEN7&-Y9V=N;VUE+3(M,"YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG9VYO M;64M,BTP+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9V=N;VUE+6ME>7)I;F7,]-"XP#0H@(" @(" @(" @(" @(" @ M(" B8WEG9VYO;64M:V5Y6=G;F]M96-A;G9A6=G;F]M97!R:6YT+3(M,BTP+F1L;" M(&]S/30N,"!I;6<] M,2XP('-Y6=G;F]M97!R:6YT M+3(M,BTP+F1L;"(@=C N,"!T6=G;F]M97!R:6YT=6DM,BTR+3 N9&QL(B!V,"XP('1S/3(P,#0O M,3 O,R Q.3HU-PT*(" U-#%K(#(P,#0O,3 O,CD AT 0SI<8WEG=VEN7&)I;EQC M>6=G;F]M975I+3(M,"YD;&P@+2!O7,]-"XP#0H@ M(" @(" @(" @(" @(" @(" B8WEG9VYO;65U:2TR+3 N9&QL(B!V,"XP('1S M/3(P,#0O,3 O,CD@,CHS, T*(" T,#-K(#(P,#0O,3 O,C<@0SI<8WEG=VEN M7&)I;EQC>6=G;F]M979F6=G;V)J96-T M+3(N,"TP+F1L;"(@=C N,"!T6='6=W:6Y< M8FEN7&-Y9T=R87!H:6-S36%G:6-K+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @ M6=W:6Y<8FEN7&-Y9V=S;"TP+F1L;" M(&]S/30N,"!I;6<] M,2XP('-Y6=G6=G=&AR96%D+3$M,BTP+F1L;" M(&]S/30N M,"!I;6<],2XP('-Y6=G=&AR M96%D+3$M,BTP+F1L;"(@=C N,"!T6=G=&AR96%D+3(N,"TP+F1L M;" M(&]S/30N,"!I;6<],2XP('-Y6=G=&AR96%D+3(N,"TP+F1L;"(@=C N,"!T6=G=&LM,2TR+3 N9&QL(B!V,"XP('1S/3(P,#0O.2\R(#$Q M.C0T#0H@,C6=W:6Y<8FEN7&-Y9V=T:RUX M,3$M,BXP+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @6=G=6EL92UL=&1L+3$N9&QL(B!V M,"XP('1S/3(P,#0O,3 O,3(@-#HR,@T*(" @(#5K(#(P,#0O,3 O,3(@0SI< M8WEG=VEN7&)I;EQC>6=G=6EL92UL=&1L+3(N9&QL("T@;W,]-"XP(&EM9STQ M+C @6=G=6EL92US6=G=6EL92US6=G=6EL92US M7,]-"XP M#0H@(" @(" @(" @(" @(" @(" B8WEG9W5I;&4M6=G=6EL92US7,]-"XP#0H@(" @(" @(" @(" @ M(" @(" B8WEG9W5I;&4M6=G=6EL97)E861L:6YE+78M,3(M,3(N9&QL("T@;W,]-"XP(&EM M9STQ+C @6=H:7-T;W)Y-BYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG:&ES=&]R>38N9&QL(B!V M,"XP('1S/3(P,#0O,3 O,3$@,C,Z-3$-"B @.3DQ:R R,# T+S W+S V($,Z M7&-Y9W=I;EQB:6Y<8WEG:6-O;G8M,BYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG:6-O;G8M,BYD;&PB('8P M+C @=',],C P-"\W+S8@,3$Z,3 -"B @,30W:R R,# T+S X+S,Q($,Z7&-Y M9W=I;EQB:6Y<8WEG241,+3(M,"YD;&P@+2!O7,] M-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG241,+3(M,"YD;&PB('8P+C @ M=',],C P-"\X+S,P(#$Y.C P#0H@(" R,FL@,C P,2\Q,B\Q,R!#.EQC>6=W M:6Y<8FEN7&-Y9VEN=&PM,2YD;&P@+2!O7,]-"XP M#0H@(" @(" @(" @(" @(" @(" B8WEG:6YT;"TQ+F1L;"(@=C N,"!T6=I;G1L+3(N9&QL(B!V,"XP('1S/3(P,#,O M."\Q," Q-#HU, T*(" @-31K(#(P,#0O,#6=I;G1L+3,N9&QL("T@;W,]-"XP(&EM9STQ+C @6=I;W!E6=J87-P97(M,2TW,#$M,2YD;&PB('8P+C @=',],C P-"\X M+S8@.#HQ-PT*(" @-#AK(#(P,#,O,#@O,3 @0SI<8WEG=VEN7&)I;EQC>6=J M8FEG,2YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @ M(" @(" @(" B8WEG:F)I9S$N9&QL(B!V,"XP('1S/3(P,#,O."\Q," Q-CHU M. T*(" Q,S)K(#(P,#,O,#@O,3$@0SI<8WEG=VEN7&)I;EQC>6=J<&5G+38R M+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=J<&5G+38R+F1L;"(@=C N,"!T6=J<&5G-F(N9&QL(B!V,"XP('1S/3(P,#(O,B\X(#(Q.C$Y#0H@(" V M,&L@,C P-"\P.2\R-R!#.EQC>6=W:6Y<8FEN7&-Y9VMP871H6=K<&%T:'-E82TT M+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=K<&%T:'-E82TT+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9VQB97(M,BTR M+36=L8F5R M+3(N9&QL("T@;W,]-"XP(&EM9STQ+C @6=L9&%P+3(M,BTW+F1L;"(@=C N,"!T6=L9&%P+3(N9&QL(B!V,"XP('1S/3(P,#0O,2\R(#,Z,C<-"B @,3DQ:R R M,# T+S$P+S$T($,Z7&-Y9W=I;EQB:6Y<8WEG;&1A<%]R+3(M,BTW+F1L;" M M(&]S/30N,"!I;6<],2XP('-Y6=L9&%P7W(M,BTR+36=L9&%P7W(M,BYD M;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @ M(" B8WEG;&1A<%]R+3(N9&QL(B!V,"XP('1S/3(P,#0O,2\R(#,Z,C<-"B @ M,3 Q:R R,# T+S Y+S$X($,Z7&-Y9W=I;EQB:6Y<8WEG;&EG:'1C;VUP+F1L M;" M(&]S/30N,"!I;6<],2XP('-Y6=L:6=H=&-O;7 N9&QL(B!V,"XP('1S/3(P,#0O.2\Q." Q,CHS.0T* M(" @,C9K(#(P,#0O,#DO,C(@0SI<8WEG=VEN7&)I;EQC>6=L=&1L+3,N9&QL M("T@;W,]-"XP(&EM9STQ+C @6=-86=I8VLK*RTV+F1L;" M M(&]S/30N,"!I;6<],2XP('-Y6=-86=I8VLK*RTV+F1L;"(@=C N,"!T7!T+30N9&QL M("T@;W,]-"XP(&EM9STQ+C @6=M96YU+3 AT N9&QL("T@ M;W,]-"XP(&EM9STQ+C @6=M96YU M-2YD;&PB('8P+C @=',],C P,2\T+S(T(#(R.C(W#0H@(" R,&L@,C P,B\P M,2\P.2!#.EQC>6=W:6Y<8FEN7&-Y9VUE;G4V+F1L;" M(&]S/30N,"!I;6<] M,2XP('-Y6=M96YU-BYD;&PB M('8P+C @=',],C P,B\Q+S@@,C(Z,#,-"B @(#(Y:R R,# S+S X+S Y($,Z M7&-Y9W=I;EQB:6Y<8WEG;65N=36=W:6Y< M8FEN7&-Y9VUH87-H+3(N9&QL("T@;W,]-"XP(&EM9STQ+C @6=M:6YI6=M:6YI6=W:6Y<8FEN M7&-Y9VUN9RTQ+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=M;F6=M<&9R+3 N9&QL M("T@;W,]-"XP(&EM9STQ+C @6=N86EM7V-O6=N8W5R6=N8W5R6=N8W5R6=N8W5R6=N8W5R6=N8W5R6=W:6Y<8FEN7&-Y M9V]G6=O9W)O=F4M,"YD;&PB('8P+C @=',],C P-"\X M+S(@.#HT,0T*(" S,#1K(#(P,#0O,3 O,3$@0SI<8WEG=VEN7&)I;EQC>6=/ M4D)I="TR+3 N9&QL("T@;W,]-"XP(&EM9STQ+C @6=/4D)I=$-O6=W:6Y<8FEN7&-Y9V]S<&=R;W9E+3 N M9&QL("T@;W,]-"XP(&EM9STQ+C @6QE+3 N M9&QL("T@;W,]-"XP(&EM9STQ+C @6=P86YE;#4N9&QL("T@ M;W,]-"XP(&EM9STQ+C @6=W:6Y<8FEN7&-Y9W!A;F=O9G0R+3$N,"TP+F1L;" M(&]S M/30N,"!I;6<],2XP('-Y6=P M86YG;V9T,BTQ+C M,"YD;&PB('8P+C @=',],C P-2\Q+S@@,3,Z,S8-"B @ M(#,S:R R,# U+S Q+S X($,Z7&-Y9W=I;EQB:6Y<8WEG<&%N9V]W:6XS,BTQ M+C M,"YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @ M(" @(" @(" B8WEG<&%N9V]W:6XS,BTQ+C M,"YD;&PB('8P+C @=',],C P M-2\Q+S@@,3,Z,SD-"B @(#,W:R R,# U+S Q+S X($,Z7&-Y9W=I;EQB:6Y< M8WEG<&%N9V]X+3$N,"TP+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=P86YG;W AT M,2XP+3 N9&QL(B!V,"XP M('1S/3(P,#4O,2\X(#$S.C,U#0H@(" Q-VL@,C P-2\P,2\P."!#.EQC>6=W M:6Y<8FEN7&-Y9W!A;F=O>&9T+3$N,"TP+F1L;" M(&]S/30N,"!I;6<],2XP M('-Y6=P86YG;WAF="TQ+C M M,"YD;&PB('8P+C @=',],C P-2\Q+S@@,3,Z,S@-"B @(#8R:R R,# S+S$R M+S$Q($,Z7&-Y9W=I;EQB:6Y<8WEG<&-R92TP+F1L;" M(&]S/30N,"!I;6<] M,2XP('-Y6=P8W)E+3 N9&QL M(B!V,"XP('1S/3(P,#,O,3(O,3$@.3HP,0T*(" @-C-K(#(P,#,O,#0O,3$@ M0SI<8WEG=VEN7&)I;EQC>6=P8W)E+F1L;" M(&]S/30N,"!I;6<],2XP('-Y M6=P8W)E+F1L;"(@=C N,"!T M6=P8W)E<&]S:7 AT M,"YD;&P@+2!O7,] M-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG<&-R97!O6=P8W)E<&]S:7 AT N9&QL("T@;W,]-"XP(&EM9STQ+C @ M"YD;&PB M('8P+C @=',],C P,R\T+S$Q(#$Z,S$-"B Q,C4R:R R,# U+S Q+S(W($,Z M7&-Y9W=I;EQB:6Y<8WEG<&5R;#5?."YD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG<&5R;#5?."YD;&PB('8P M+C @=',],C P-2\Q+S(W(#(Z,3<-"B @,38X:R R,# S+S X+S$P($,Z7&-Y M9W=I;EQB:6Y<8WEG<&YG,3 N9&QL("T@;W,]-"XP(&EM9STQ+C @7,]-"XP#0H@(" @(" @(" @ M(" @(" @(" B8WEG<&YG,BYD;&PB('8P+C @=',],C P,B\Q+S(P(#$W.C U M#0H@(" R,FL@,C P,B\P-B\P.2!#.EQC>6=W:6Y<8FEN7&-Y9W!O<'0M,"YD M;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @ M(" B8WEG<&]P="TP+F1L;"(@=C N,"!T6=P6=R96%D;&EN934N9&QL(B!V,"XP('1S/3(P,#,O."\Q," Q-CHQ- AT T*(" Q M-#1K(#(P,#0O,3 O,3(@0SI<8WEG=VEN7&)I;EQC>6=R96%D;&EN938N9&QL M("T@;W,]-"XP(&EM9STQ+C @6=W:6Y<8FEN7&-Y9W-S;"TP+CDN-RYD;&P@+2!O7,]-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG6=S=&%R='5P+6YO=&EF:6-A=&EO;BTQ+3 N9&QL(B!V M,"XP('1S/3(P,#0O,3$O,30@,3DZ-3D-"B @,C,P:R R,# T+S$P+S T($,Z M7&-Y9W=I;EQB:6Y<8WEG=#$M-2YD;&P@+2!O7,] M-"XP#0H@(" @(" @(" @(" @(" @(" B8WEG=#$M-2YD;&PB('8P+C @=',] M,C P-"\Q,"\T(#$T.C0T#0H@(" Q.&L@,C P-"\Q,"\P-"!#.EQC>6=W:6Y< M8FEN7&-Y9W0Q>"TU+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=T,7 AT M-2YD;&PB('8P+C @=',],C P-"\Q M,"\T(#$T.C0T#0H@(#(T-VL@,C P-"\Q,B\P-R!#.EQC>6=W:6Y<8FEN7&-Y M9W1I9'DM,"TY.2TP+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=T:61Y+3 M.3DM,"YD;&PB('8P+C @=',] M,C P-"\Q,B\W(#8Z,S0-"B @,CDY:R R,# T+S$P+S$P($,Z7&-Y9W=I;EQB M:6Y<8WEG=&EF9BTU+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=T:69F+34N9&QL(B!V,"XP('1S/3(P,#0O M,3 O,3 @,30Z-34-"B @,C AT Q:R R,# S+S R+S(T($,Z7&-Y9W=I;EQB:6Y< M8WEG=&EF9C,N9&QL("T@;W,]-"XP(&EM9STQ+C @7,]-"XP#0H@(" @(" @(" @(" @(" @ M(" B8WEG=6YG:68M-"YD;&PB('8P+C @=',],C P-"\S+S4@,3(Z,3,-"B @ M,34T:R R,# T+S X+S$Q($,Z7&-Y9W=I;EQB:6Y<8WEG5V%N9"TV+F1L;" M M(&]S/30N,"!I;6<],2XP('-Y6=786YD+38N9&QL(B!V,"XP('1S/3(P,#0O."\Q," R,SHP- T*(" R.3-K M(#(P,#0O,#8O,#@@0SI<8WEG=VEN7&)I;EQC>6=W;68M,"TR+36=W;69L:71E+3 M,BTW+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9W=N8VLM,2TT M+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=W;F-K+3$M-"YD;&PB('8P+C @=',],C P-"\Q,"\Q.2 Q,SHU M. T*(#(V.#EK(#(P,#(O,3$O,38 AT 0SI<8WEG=VEN7&)I;EQC>6=X97)C97,M M8S(Q+F1L;" M(&]S/30N,"!I;6<],2XP('-Y6=X97)C97,M8S(Q+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9WAE M6=W:6Y<8FEN7&-Y M9WAE&5R8V5S+6,R-"YD;&P@+2!O7,]-"XP M#0H@(" @(" @(" @(" @(" @(" B8WEG>&5R8V5S+6,R-"YD;&PB('8P+C @ M=',],C P,R\Q,B\Q-B Q,3HT-0T*(#,T,39K(#(P,#0O,#(O,C$@0SI<8WEG M=VEN7&)I;EQC>6=X97)C97,M8S(U+F1L;" M(&]S/30N,"!I;6<],2XP('-Y M6=X97)C97,M8S(U+F1L;"(@ M=C N,"!T&UL,BTR+F1L;" M(&]S/30N,"!I;6<],2XP('-Y M6=X;6PR+3(N9&QL(B!V,"XP M('1S/3(P,#4O,2\X(#4Z,C(-"B @(#4P:R R,# S+S X+S Y($,Z7&-Y9W=I M;EQB:6Y<8WEG6'!M+6YO6#0N9&QL("T@;W,]-"XP(&EM9STQ+C @6=W:6Y< M8FEN7&-Y9UAP;2U8-"YD;&P@+2!O7,]-"XP#0H@ M(" @(" @(" @(" @(" @(" B8WEG6'!M+5 AT T+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y M9WAS;'0M,2YD;&P@+2!O7,]-"XP#0H@(" @(" @ M(" @(" @(" @(" B8WEG>'-L="TQ+F1L;"(@=C N,"!T6=W:6Y<8FEN7&-Y9WHN9&QL M("T@;W,]-"XP(&EM9STQ+C @6=W:6XQ+F1L;" M(&]S/30N,"!I M;6<],2XP('-Y6=W:6XQ+F1L M;"(@=C N,"!T2!N M86UE.B!M;W5N=',@=C(-"B @(" @(" @0WEG9')I=F4 AT 9FQA9W,Z(&-Y9V1R M:79E(&9L86=S#0H@(" @(" @($-Y9V1R:79E('!R969I>#H AT 8WEG9')I=F4@ M<')E9FEX#0H@(" @(" @($-Y9V1R:79E(&1E9F%U;'0@<')E9FEX.B -"B @ M(" @(" @0G5I;&0 AT 9&%T93H AT 36]N($%P&5C6=U=&EL6=W:6X@ M(" @(" @(" @(" @(" @(" Q+C4N,34M,0T*8WEG=VEN+61O8R @(" @(" @ M(" @(" @,2XT+3(-"F-Y9W=I;BUX+61O8R @(" @(" @(" @(#$N,"XT+3$- M"F-Y'-L(" @(" @(" @(" @(#$N-C AT N,2TQ M#0ID;WAY9V5N(" @(" @(" @(" @(" @(" Q+C(N,3 AT M,0T*9'!K9R @(" @ M(" @(" @(" @(" @(" @,2XQ,"XT+3(-"F4R9G-I;6%G92 @(" @(" @(" @ M(" @(# N,BXP+3(-"F4R9G-P'!A=" @(" @(" @(" @(" @(" @(" Q M+CDU+C AT M,0T*97AP96-T(" @(" @(" @(" @(" @(" @,C P,S Q,C AT M,0T* M9F5T8VAM86EL(" @(" @(" @(" @(" @-BXR+C4M,@T*9FEG;&5T(" @(" @ M(" @(" @(" @(" @,BXR+3$-"F9I;&4@(" @(" @(" @(" @(" @(" @(#0N M,3(M,0T*9FEL975T:6QS(" @(" @(" @(" @(" @-"XQ+3,-"F9I;F1U=&EL M'0@(" @(" @(" @(" @ M(" @(# N,30N,2TQ#0IG971T97AT+61E=F5L(" @(" @(" @(" P+C$T+C$M M,0T*9VAO&5D:70@(" @(" @(" @(" @(" @(#$N,BXQ,"TQ#0IH:6-O;&]R+6EC;VXM M=&AE;64@(" @(" P+C4M,0T*26UA9V5-86=I8VL@(" @(" @(" @(" @-BXP M+C0M,0T*:6YD96YT(" @(" @(" @(" @(" @(" @,BXR+CDM,0T*:6YE='5T M:6QS(" @(" @(" @(" @(" @,2XS+C(M,CD-"FEN:71S8W)I<'1S(" @(" @ M(" @(" @(# N.2TQ#0II;G1L=&]O;" @(" @(" @(" @(" @(" P+C,Q+C(M M,0T*:6]P97)M(" @(" @(" @(" @(" @(" @,"XT+3$-"FER8R @(" @(" @ M(" @(" @(" @(" @(#(P,#$P,3 Q+3,-"FIA6-H86EN(" @(" @(" @(" @(" @(#(N-2XS+C$M,0T*;&%B;&=T M:S(@(" @(" @(" @(" @(" @,BXT+C M,@T*;&-MC)?," @(" @(" @ M(" @(" @(" Q+C N,BTQ#0IL:6)B>C)?,2 @(" @(" @(" @(" @(" Q+C N M,BTV#0IL:6)C:&%R" @(" @(" @(" @(" @(" @(#$N,BXP+CDM,0T*;&EB9G)E971Y M<&4R+61E=F5L(" @(" @,BXQ+C4M,0T*;&EB9G)E971Y<&4R-B @(" @(" @ M(" @,BXQ+C4M,0T*;&EB9V,@(" @(" @(" @(" @(" @(" @-BXT+3$-"FQI M8F=C&UL,BUD;V,@(" @(" @(" @(" @,BXV M+C$V+3(-"FQI8GAM;#(M<'ET:&]N(" @(" @(" @(#(N-BXQ-BTR#0IL:6)X M7!O;F0@(" @(" @(" @(" @(" @,BXT M+C,M,0T*;&EL>7!O;F0M9&]C(" @(" @(" @(" @,BXT+C,M,0T*;&EN:W,@ M(" @(" @(" @(" @(" @(" @,"XY.7!R93$T+3$-"FQO9VEN(" @(" @(" @ M(" @(" @(" @(#$N.2TW#0IL>6YX(" @(" @(" @(" @(" @(" @(" R+C AT N M-"TX#0IM-" @(" @(" @(" @(" @(" @(" @(" Q+C0N,RTQ#0IM86ME(" @ M(" @(" @(" @(" @(" @(" S+C AT P+3$-"FUA;B @(" @(" @(" @(" @(" @ M(" @(#$N-6\Q+3(-"FUA=&AO;6%T:6,@(" @(" @(" @(" @(#$R+C%E+3$- M"FUC(" @(" @(" @(" @(" @(" @(" @(#0N-BXQ+3$-"FUH87-H(" @(" @ M(" @(" @(" @(" @(# N.2XQ+3$-"FUH87-H+61E=F5L(" @(" @(" @(" @ M(# N.2XQ+3$-"FUI;F5D(" @(" @(" @(" @(" @(" @(#(P,# N,3 M,0T* M;6EN9W71H;VX@(" @ M(" @(" @(" @(" @(" R+C0M,0T*'9T(" @(" @(" @(" @(" @(" @(" R M+C#$Q(" @(" @(" @(" @(" @-2XP+C(M,0T*=&%R(" @(" @(" @(" @(" @ M(" @(" @,2XQ,RXR-2TU#0IT8VPS,C2 @(" @(" @(" @(" @,RXP+C M,@T*=&5T M97 AT M>#$Q(" @(" @(" @(" @(" @,RXP+C M,@T*=&5X:6YF;R @(" @(" @ M(" @(" @(" @-"XX+3$-"E1E6&UA8W,@(" @(" @(" @(" @(" @(#$N,"XT M+30-"G1E>'1U=&EL&EN971D(" @(" @(" @(" @(" @(" @,BXS M+CDM,0T*6&U(5$U,(" @(" @(" @(" @(" @(" @,2XQ+C&UL=&\@ M(" @(" @(" @(" @(" @(" @,"XP+C$X+3$-"GAO#$Q+6)A&]R9RUX,3$M8FEN(" @(" @(" @(" @-BXX M+C(N,"TQ#0IX;W)G+7 AT Q,2UB:6XM9&QL#$Q+6)I;BUL;F1I&]R9RUX,3$M9&5V M96P@(" @(" @(" @-BXX+C(N,"TQ#0IX;W)G+7 AT Q,2UE=&,@(" @(" @(" @ M(" V+C AT N,BXP+3$-"GAO#$Q+68Q,# @(" @(" @(" @(#8N."XQ+C M M,PT*>&]R9RUX,3$M9F-Y#$Q+69N=',@(" @ M(" @(" @(#8N."XQ+C M,PT*>&]R9RUX,3$M9G-C;" @(" @(" @(" @-BXX M+C$N,"TR#0IX;W)G+7 AT Q,2UF#$Q+6QI8G,M9&%T82 @(" @(#8N."XR+C M,0T*>&]R9RUX,3$M;6%N M+7!A9V5S(" @(" @-BXX+C(N,"TQ#0IX;W)G+7 AT Q,2UM86XM<&%G97,M:'1M M;" V+C AT N,BXP+3$-"GAO#$Q+6YE&]R9RUX,3$M=F9B(" @(" @(" @(" @-BXX+C(N,"TQ#0IX;W)G+7 AT Q M,2UX=VEN(" @(" @(" @(" V+C AT N,BXP+3$-"GAO#$Q+7AW:6XM9VP@ M(" @(" @(#8N."XR+C M,0T*>'!D9B @(" @(" @(" @(" @(" @(" @,RXP M,"TQ#0IX<&TM;F]X(" @(" @(" @(" @(" @(" T+C(N,"TT#0IX=&5R;2 @ M(" @(" @(" @(" @(" @(" Q.38M,0T*>'=I;F-L:7 @(" @(" @(" @(" @ M(" @,2XR+C M,0T*>'=I;G=M(" @(" @(" @(" @(" @(" @,"XP+C4M,0T* M>FEP(" @(" @(" @(" @(" @(" @(" @,BXS+38-"GIL:6(@(" @(" @(" @ M(" @(" @(" @(#$N,BXR+3$-"GIS:" @(" @(" @(" @(" @(" @(" @(#0N M,BXT+3$-"E5S92 M:"!T;R!S964@:&5L<"!A8F]U="!E86-H('-E8W1I;VX- !"@`` ` end begin 666 main.cpp M"@HO+R!T97-T('!R;V=R86T AT 9&5M;VYS=')A=&EN9R!S=&%R='5P(')A8V4@ M:6X AT 0WEG=VEN(#$N-2XQ-0HO+R!C;VUP:6QE('=I=&@@)V-L(&UA:6XN8W!P M)PHO+R!R=6X@;VX AT 5VEN9&]W7-T96T*"B-I;F-L=61E(#QW:6YD;W=S+F@^"B-I;F-L=61E(#QS=&1I M;RYH/@HC:6YC;'5D92 \&ET0V]D93L*"B @(" O+R!,;V]P('5N=&EL M('=E(&9A:6P[(&-A;B!T86ME(&%N>7=H97)E(&)E='=E96X@,3 @86YD(#$U M,# @:71EPH*(" @(" @("!S971C M;W5N="LK.PH*(" @(" @("!35$%25%5024Y&3R!S:5M#3U5.5%T["B @(" @ M(" @4%)/0T534U])3D9/4DU!5$E/3B!P:5M#3U5.5%T["@H@(" @(" @(&9O M2@@)G-I6VE=+"!S:7IE;V8H2@@)G!I6VE=+"!S:7IE;V8H<&E;:5TI("D["B @(" @(" @?0H*(" @(" @ M("!F;W(@*&D@/2 P(#L@:2 \($-/54Y4(#L@*RMI*2!["B @(" @(" @"B @ M(" @(" @(" @("\O(%-T87)T('1H92!C:&EL9"!PPH*(" @(" @ M(" @(" @+R\@5V%I="!U;G1I;"!C:&EL9"!P&ET0V]D M95!R;V-E&ET0V]D92D["B @(" @(" @(" @(&EF("AE>&ET0V]D92 A/2 P*2!["B @ M(" @(" @(" @(" @("!P