From 1bcd500c82aef6a69b4d4d9d1a2441512259c0e0 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sun, 25 Jan 2026 15:17:15 -0500 Subject: [PATCH 01/19] chore: add failing PGNs from open bench crashes bench: 1049188 --- data/failures/20260123_rnd121.pgn | 83 ++++++++++++++++++++++++++ data/failures/20260124_rnd5.pgn | 96 +++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 data/failures/20260123_rnd121.pgn create mode 100644 data/failures/20260124_rnd5.pgn diff --git a/data/failures/20260123_rnd121.pgn b/data/failures/20260123_rnd121.pgn new file mode 100644 index 00000000..e2ffd243 --- /dev/null +++ b/data/failures/20260123_rnd121.pgn @@ -0,0 +1,83 @@ +[Event "Fastchess Tournament"] +[Site "?"] +[Date "2026.01.23"] +[Round "121"] +[White "Byte-Knight-dev"] +[Black "Byte-Knight-base"] +[Result "0-1"] +[SetUp "1"] +[FEN "rnbq1rk1/pp2ppbp/2p3p1/5n2/2BPN3/5N2/PPP2PPP/R1BQR1K1 w - - 6 9"] +[GameDuration "00:00:37"] +[GameStartTime "2026-01-23T22:30:45 -0500"] +[GameEndTime "2026-01-23T22:31:22 -0500"] +[PlyCount "92"] +[Termination "abandoned"] +[TimeControl "12.61+0.13"] + +9. c3 {+0.38/15 1.309s, n=1745994, sd=0} Nd7 {-0.41/15 1.317s, n=1891671, sd=0} +10. Bd3 {+0.38/16 1.430s, n=2082850, sd=0} +Nf6 {-0.40/15 0.843s, n=1279275, sd=0} +11. Bf4 {+0.35/16 0.801s, n=1299495, sd=0} +Nxe4 {-0.44/15 0.762s, n=1324823, sd=0} +12. Bxe4 {+0.36/16 0.712s, n=1270520, sd=0} +Be6 {-0.27/15 1.495s, n=2380079, sd=0} +13. Ng5 {+0.51/15 0.752s, n=1420239, sd=0} +Bd7 {-0.39/14 0.598s, n=1179517, sd=0} 14. Qb3 {+0.45/13 0.490s, n=961131, sd=0} +Nd6 {-0.44/14 0.553s, n=1056889, sd=0} +15. Bc2 {+0.46/14 1.680s, n=2592233, sd=0} b5 {-0.45/15 0.541s, n=1123354, sd=0} +16. a4 {+0.37/14 0.873s, n=1582771, sd=0} h6 {-0.62/14 1.040s, n=1865336, sd=0} +17. Bxd6 {+0.99/16 0.485s, n=1076938, sd=0} +bxa4 {-0.42/17 0.693s, n=1448286, sd=0} +18. Rxa4 {+0.66/18 0.713s, n=1590769, sd=0} +exd6 {-0.70/19 0.593s, n=1384559, sd=0} +19. Nxf7 {+0.54/18 0.500s, n=1160682, sd=0} +Rxf7 {-0.58/19 0.638s, n=1483479, sd=0} +20. Bxg6 {+0.84/18 0.663s, n=1603885, sd=0} +d5 {-0.66/18 0.332s, n=1016209, sd=0} +21. Bxf7+ {+0.61/18 0.507s, n=1144223, sd=0} +Kxf7 {-0.94/18 0.513s, n=1266116, sd=0} +22. Qa2 {+0.76/17 0.768s, n=1719377, sd=0} +Qb8 {-0.95/15 0.811s, n=1865962, sd=0} 23. b4 {+1.02/14 0.640s, n=1603315, sd=0} +Bc8 {-0.84/15 0.402s, n=1088689, sd=0} 24. Qe2 {+1.18/17 0.194s, n=713014, sd=0} +Bf5 {-1.39/17 0.441s, n=1025644, sd=0} +25. Qe7+ {+1.15/16 0.188s, n=699803, sd=0} +Kg8 {-1.27/18 0.381s, n=1002168, sd=0} +26. Rea1 {+1.30/17 0.178s, n=718000, sd=0} Qf4 {-1.25/16 0.320s, n=876516, sd=0} +27. Qb7 {+1.28/17 0.231s, n=754601, sd=0} Rf8 {-1.54/16 0.216s, n=722632, sd=0} +28. Rxa7 {+1.55/17 0.401s, n=1130562, sd=0} +Qg4 {-1.51/18 0.253s, n=928004, sd=0} 29. Qc7 {+1.52/17 0.233s, n=722791, sd=0} +Qg6 {-1.74/17 0.464s, n=1270263, sd=0} +30. Qg3 {+1.87/17 0.263s, n=1001137, sd=0} Qf6 {-1.67/17 0.194s, n=708960, sd=0} +31. Rc7 {+1.96/16 0.159s, n=550068, sd=0} Rf7 {-1.62/16 0.231s, n=777205, sd=0} +32. Rxf7 {+1.86/17 0.211s, n=710532, sd=0} +Qxf7 {-1.83/19 0.272s, n=824533, sd=0} 33. Qd6 {+1.74/18 0.207s, n=806019, sd=0} +Qb7 {-1.77/19 0.228s, n=787859, sd=0} 34. Qd8+ {+1.88/18 0.288s, n=836006, sd=0} +Kh7 {-1.93/18 0.229s, n=896370, sd=0} 35. Ra8 {+1.89/18 0.246s, n=715499, sd=0} +Qf7 {-2.07/18 0.418s, n=1193799, sd=0} 36. h3 {+1.89/15 0.157s, n=649902, sd=0} +Bd3 {-1.90/17 0.221s, n=715095, sd=0} 37. Rc8 {+1.77/17 0.203s, n=779325, sd=0} +Bb5 {-1.78/17 0.188s, n=655527, sd=0} 38. h4 {+1.85/17 0.181s, n=675492, sd=0} +Qf4 {-1.91/17 0.286s, n=944112, sd=0} 39. Qg8+ {+2.37/21 0.144s, n=670336, sd=0} +Kg6 {-4.78/20 0.169s, n=616590, sd=0} 40. Qe8+ {+3.06/19 0.249s, n=864323, sd=0} +Kh7 {-4.77/22 0.146s, n=754075, sd=0} 41. g3 {+3.09/20 0.233s, n=663467, sd=0} +Qe4 {-3.04/18 0.140s, n=635451, sd=0} 42. Qg8+ {+5.09/19 0.169s, n=640353, sd=0} +Kg6 {-5.71/21 0.213s, n=831979, sd=0} 43. Re8 {+5.42/19 0.102s, n=484787, sd=0} +Qf5 {-8.86/19 0.198s, n=672333, sd=0} 44. Re7 {+8.59/19 0.107s, n=495689, sd=0} +Qf6 {-9.58/19 0.118s, n=471195, sd=0} 45. Re6 {+9.79/19 0.151s, n=642296, sd=0} +h5 {-10.17/19 0.147s, n=657538, sd=0} 46. f4 {+10.46/20 0.143s, n=606191, sd=0} +Kf5 {-10.77/19 0.153s, n=686877, sd=0} +47. Rxf6+ {+11.05/20 0.113s, n=523201, sd=0} +Bxf6 {-11.20/20 0.161s, n=587942, sd=0} +48. Qh7+ {+13.09/21 0.105s, n=537451, sd=0} +Ke6 {-13.27/21 0.171s, n=696142, sd=0} +49. f5+ {+13.95/21 0.189s, n=773399, sd=0} +Kd6 {-14.69/20 0.182s, n=844595, sd=0} +50. Qg8 {+14.69/19 0.105s, n=581241, sd=0} +Kc7 {-14.70/21 0.109s, n=616945, sd=0} +51. Qf7+ {+15.36/22 0.108s, n=636233, sd=0} +Kb6 {-16.94/18 0.201s, n=897785, sd=0} +52. Qxf6 {+17.49/19 0.214s, n=993293, sd=0} +Bd3 {-18.12/21 0.113s, n=689236, sd=0} +53. Qf7 {+18.82/20 0.144s, n=777241, sd=0} +Bxf5 {-19.66/20 0.232s, n=808637, sd=0} +54. Qxf5 {+24.24/21 0.102s, n=651881, sd=0} +Kc7 {-25.88/21 0.104s, n=698452, sd=0, White disconnects} 0-1 diff --git a/data/failures/20260124_rnd5.pgn b/data/failures/20260124_rnd5.pgn new file mode 100644 index 00000000..c4d4ba6b --- /dev/null +++ b/data/failures/20260124_rnd5.pgn @@ -0,0 +1,96 @@ +[Event "Fastchess Tournament"] +[Site "?"] +[Date "2026.01.24"] +[Round "5"] +[White "Byte-Knight-dev"] +[Black "Byte-Knight-base"] +[Result "0-1"] +[SetUp "1"] +[FEN "rnbq1rk1/pppn1pb1/3p2pp/4p3/2PPP3/2N1BN1P/PP3PP1/R2QKB1R w KQ - 0 9"] +[GameDuration "00:00:32"] +[GameStartTime "2026-01-24T00:34:05 +0100"] +[GameEndTime "2026-01-24T00:34:37 +0100"] +[PlyCount "124"] +[Termination "abandoned"] +[TimeControl "9.76+0.1"] + +9. Qd2 {+0.72/16 0.659s, n=1657250, sd=0} +exd4 {-0.71/17 0.748s, n=1920236, sd=0} +10. Nxd4 {+0.73/17 0.668s, n=1691788, sd=0} +h5 {-0.75/15 0.580s, n=1484685, sd=0} +11. O-O-O {+0.69/15 0.555s, n=1387116, sd=0} +Re8 {-0.63/14 0.504s, n=1274113, sd=0} +12. Rg1 {+0.71/15 0.494s, n=1248191, sd=0} +Nf6 {-0.72/15 0.508s, n=1302443, sd=0} +13. Bd3 {+0.70/15 0.544s, n=1395878, sd=0} +Na6 {-0.72/15 0.472s, n=1222724, sd=0} +14. Bc2 {+0.70/14 0.431s, n=1101667, sd=0} +Nb4 {-0.78/14 0.683s, n=1778884, sd=0} +15. Bb1 {+0.68/14 0.428s, n=1105865, sd=0} +Bd7 {-0.66/15 0.528s, n=1373973, sd=0} +16. Bg5 {+0.77/15 0.552s, n=1415540, sd=0} +Nc6 {-0.76/14 0.453s, n=1189256, sd=0} +17. Nf3 {+0.80/15 0.407s, n=1056967, sd=0} +Be6 {-0.73/15 0.418s, n=1116166, sd=0} 18. Nd5 {+0.74/15 0.365s, n=961965, sd=0} +Ne5 {-0.74/16 0.442s, n=1215986, sd=0} +19. Nxe5 {+0.58/15 0.460s, n=1254301, sd=0} +dxe5 {-0.71/17 0.792s, n=2229645, sd=0} +20. Qe3 {+0.66/16 0.346s, n=952871, sd=0} Bxd5 {-0.61/16 0.334s, n=933890, sd=0} +21. cxd5 {+0.71/17 0.433s, n=1202117, sd=0} +Qd6 {-0.61/17 0.369s, n=1055496, sd=0} +22. Bd3 {+0.70/17 0.435s, n=1229700, sd=0} c6 {-0.72/16 0.323s, n=916202, sd=0} +23. dxc6 {+0.69/16 0.291s, n=837672, sd=0} +Qxc6+ {-0.63/17 0.414s, n=1205281, sd=0} +24. Kb1 {+0.70/17 0.407s, n=1179374, sd=0} a5 {-0.62/16 0.808s, n=2341933, sd=0} +25. Qe2 {+0.63/14 0.269s, n=751504, sd=0} Red8 {-0.64/15 0.271s, n=779239, sd=0} +26. Rc1 {+0.63/16 0.419s, n=1179096, sd=0} Qd6 {-0.65/16 0.253s, n=744375, sd=0} +27. Bc4 {+0.63/15 0.471s, n=1350775, sd=0} +Rac8 {-0.67/14 0.320s, n=911878, sd=0} +28. Qf3 {+0.62/14 0.398s, n=1158058, sd=0} a4 {-0.57/14 0.202s, n=603215, sd=0} +29. Bd5 {+0.60/14 0.520s, n=1513807, sd=0} +Rxc1+ {-0.83/15 0.537s, n=1652830, sd=0} +30. Rxc1 {+0.69/16 0.212s, n=674357, sd=0} Rd7 {-0.62/15 0.193s, n=622849, sd=0} +31. Rc8+ {+0.82/17 0.210s, n=697379, sd=0} Kh7 {-0.56/16 0.177s, n=585636, sd=0} +32. Bxf6 {+0.81/17 0.165s, n=573712, sd=0} +Bxf6 {-0.57/17 0.235s, n=777091, sd=0} 33. Qe2 {+0.57/14 0.265s, n=851851, sd=0} +Qb6 {-0.57/15 0.189s, n=613006, sd=0} 34. Ra8 {+0.49/13 0.158s, n=499026, sd=0} +Qd4 {-0.75/14 0.189s, n=627530, sd=0} 35. Qc2 {+0.56/15 0.429s, n=1425236, sd=0} +b5 {-0.61/14 0.146s, n=479549, sd=0} 36. a3 {+0.44/14 0.137s, n=442694, sd=0} +Qb6 {-0.45/13 0.166s, n=553136, sd=0} 37. Rc8 {+0.58/15 0.154s, n=497638, sd=0} +Kg7 {-0.63/14 0.121s, n=390729, sd=0} 38. Rc6 {+0.43/15 0.282s, n=927513, sd=0} +Qa7 {-0.69/15 0.157s, n=518840, sd=0} 39. Qe2 {+0.48/13 0.190s, n=594640, sd=0} +Rd8 {-0.38/14 0.147s, n=471853, sd=0} 40. Qc2 {+0.40/15 0.188s, n=592840, sd=0} +Qa5 {-0.50/15 0.176s, n=575313, sd=0} 41. Ka2 {+0.65/14 0.200s, n=646785, sd=0} +Rd7 {-0.52/14 0.223s, n=730790, sd=0} 42. Qe2 {+0.59/15 0.164s, n=532688, sd=0} +Be7 {-0.56/15 0.151s, n=489186, sd=0} 43. Qf3 {+0.59/15 0.119s, n=385326, sd=0} +Bg5 {-0.56/15 0.117s, n=384766, sd=0} 44. Qg3 {+0.55/14 0.103s, n=329578, sd=0} +Bf6 {-0.65/13 0.105s, n=333089, sd=0} 45. Qd3 {+0.48/15 0.128s, n=413691, sd=0} +b4 {-0.59/14 0.131s, n=427201, sd=0} 46. axb4 {+0.54/14 0.122s, n=400033, sd=0} +Qxb4 {-0.52/15 0.116s, n=388560, sd=0} 47. Qe2 {+0.52/14 0.139s, n=463987, sd=0} +Bh4 {-0.52/13 0.117s, n=395108, sd=0} 48. Rc8 {+0.50/14 0.126s, n=421418, sd=0} +Qb6 {-0.38/14 0.239s, n=816287, sd=0} 49. g3 {+0.55/14 0.110s, n=364439, sd=0} +Be7 {-0.44/14 0.130s, n=432614, sd=0} 50. Rc6 {+0.53/13 0.117s, n=383298, sd=0} +Qa7 {-0.49/15 0.142s, n=478964, sd=0} 51. Qf3 {+0.50/14 0.098s, n=326157, sd=0} +Bd6 {-0.50/15 0.098s, n=337995, sd=0} 52. g4 {+0.58/15 0.100s, n=343974, sd=0} +hxg4 {-0.58/15 0.092s, n=326184, sd=0} +53. hxg4 {+0.91/15 0.103s, n=367330, sd=0} Qb8 {-0.39/16 0.198s, n=727473, sd=0} +54. g5 {+2.67/16 0.140s, n=554465, sd=0} a3 {-2.68/14 0.096s, n=373686, sd=0} +55. bxa3 {+2.26/16 0.095s, n=389009, sd=0} Bf8 {-2.76/16 0.092s, n=387491, sd=0} +56. Qh3 {+2.76/17 0.121s, n=507618, sd=0} Rxd5 {-2.52/18 0.129s, n=577679, sd=0} +57. exd5 {+2.48/18 0.138s, n=597636, sd=0} Qd8 {-2.71/16 0.126s, n=533636, sd=0} +58. Qd3 {+2.79/16 0.109s, n=459778, sd=0} Qxg5 {-3.01/17 0.121s, n=502533, sd=0} +59. d6 {+3.20/16 0.144s, n=609734, sd=0} Qh4 {-3.01/16 0.084s, n=348726, sd=0} +60. Qe3 {+3.03/15 0.087s, n=358680, sd=0} Kg8 {-3.22/15 0.087s, n=360372, sd=0} +61. d7 {+5.37/17 0.125s, n=586324, sd=0} Qe7 {-5.02/16 0.158s, n=711528, sd=0} +62. Qd3 {+6.53/18 0.088s, n=438948, sd=0} e4 {-6.17/19 0.104s, n=520829, sd=0} +63. Qd6 {+6.76/19 0.112s, n=577458, sd=0} Qxd6 {-6.85/20 0.079s, n=430988, sd=0} +64. Rxd6 {+7.53/21 0.083s, n=458271, sd=0} Be7 {-7.76/20 0.120s, n=705421, sd=0} +65. d8=Q+ {+9.75/20 0.085s, n=524965, sd=0} +Bxd8 {-10.85/23 0.087s, n=571646, sd=0} +66. Rxd8+ {+11.37/23 0.087s, n=577464, sd=0} +Kg7 {-11.21/24 0.097s, n=636864, sd=0} 67. a4 {+16.53/22 0.106s, n=647819, sd=0} +Kf6 {-11.25/22 0.163s, n=1015550, sd=0} +68. a5 {+16.79/22 0.084s, n=494005, sd=0} Ke7 {-18.46/20 0.150s, n=910224, sd=0} +69. Rd4 {+17.08/22 0.149s, n=917391, sd=0} f5 {-16.92/20 0.075s, n=463891, sd=0} +70. a6 {+18.13/21 0.116s, n=680677, sd=0} +Kf6 {-17.21/22 0.111s, n=669022, sd=0, White disconnects} 0-1 From ec1414774d1922ecd503cdbfad084ea5d5c134bd Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sun, 25 Jan 2026 15:17:38 -0500 Subject: [PATCH 02/19] chore: add sample fastchess output of PV warnings bench: 1049188 --- data/failures/260123_fastchess.txt | 1299 ++++++++++++++++++++++++++++ 1 file changed, 1299 insertions(+) create mode 100644 data/failures/260123_fastchess.txt diff --git a/data/failures/260123_fastchess.txt b/data/failures/260123_fastchess.txt new file mode 100644 index 00000000..25d83d84 --- /dev/null +++ b/data/failures/260123_fastchess.txt @@ -0,0 +1,1299 @@ +Indexing opening suite... +Started game 12 of 200 (bk1 vs bk) +Started game 18 of 200 (bk1 vs bk) +Started game 15 of 200 (bk vs bk1) +Started game 9 of 200 (bk vs bk1) +Started game 10 of 200 (bk1 vs bk) +Started game 3 of 200 (bk vs bk1) +Started game 6 of 200 (bk1 vs bk) +Started game 2 of 200 (bk1 vs bk) +Started game 14 of 200 (bk1 vs bk) +Started game 8 of 200 (bk1 vs bk) +Started game 7 of 200 (bk vs bk1) +Started game 13 of 200 (bk vs bk1) +Started game 16 of 200 (bk1 vs bk) +Started game 11 of 200 (bk vs bk1) +Started game 4 of 200 (bk1 vs bk) +Started game 1 of 200 (bk vs bk1) +Started game 5 of 200 (bk vs bk1) +Started game 17 of 200 (bk vs bk1) +Started game 19 of 200 (bk vs bk1) +Started game 20 of 200 (bk1 vs bk) +Finished game 6 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 0 - 0 - 1 [0.500] 1 +Started game 21 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move c6c5 from bk1 +Info; info depth 18 time 405 nodes 1295563 score cp -81 nps 3191217 pv h2h4 b6c5 e2e7 c5b6 e7e2 b6c5 e2e7 c5b6 e7e2 c6c5 +Position; fen r1bqk2r/pp1np1b1/2pp1npp/5pB1/3P4/1B2PN2/PPPN1PPP/R2Q1RK1 w kq - 0 9 +Moves; g5f6 g7f6 e3e4 f5f4 f1e1 d8c7 c2c3 e7e5 g2g3 g6g5 g3f4 g5f4 f3h4 h6h5 d2f3 d7f8 d1d3 c8g4 h4f5 e8c8 f3h4 e5d4 c3d4 f6h4 f5h4 c7g7 g1h1 g7f6 h4f5 d6d5 b3c2 d5e4 d3e4 f8g6 f2f3 g4h3 e1g1 h8f8 g1g6 h3f5 e4f5 f6f5 c2f5 f8f5 a1e1 d8d4 e1e8 c8c7 e8e2 f5d5 h1g2 d4d1 g2h3 c7b6 g6g7 d5d7 g7d7 d1d7 h3h4 d7d3 h4h5 d3f3 h5g4 f3f1 +Finished game 5 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 1 - 0 - 1 [0.750] 2 +Started game 22 of 200 (bk1 vs bk) +Finished game 11 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 2 - 0 - 1 [0.833] 3 +Started game 23 of 200 (bk vs bk1) +Finished game 18 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 2 - 1 - 1 [0.625] 4 +Started game 24 of 200 (bk1 vs bk) +Finished game 8 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 3 - 1 - 1 [0.700] 5 +Started game 25 of 200 (bk vs bk1) +Finished game 16 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 3 - 1 - 2 [0.667] 6 +Started game 26 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move c8c5 from bk +Info; info depth 18 time 351 nodes 823543 score cp -42 nps 2346211 pv b1a2 g8g7 a2b3 h7h5 h2h4 c8g8 d2d1 g8c8 d1d2 c8g8 d2d1 g8c8 d1d2 c8c5 +Position; fen rn1q1rk1/pbp1npbp/1p2p1p1/3pP3/3P1B2/2NQ1N2/PPP1BPPP/R3K2R w KQ - 1 9 +Moves; e1c1 b8d7 c1b1 a7a6 h1g1 c7c5 f4g5 c5d4 d3d4 e7c6 g5d8 c6d4 f3d4 a8d8 f2f4 b6b5 a2a4 b5b4 c3a2 a6a5 a2c1 d7c5 c1b3 c5b3 d4b3 d8a8 b3d4 f8c8 g1e1 g7h6 g2g3 h6f8 e2b5 f8c5 d4b3 c5b6 b3d4 b6d4 d1d4 b7c6 b5c6 c8c6 e1e2 a8c8 d4d2 c6c4 +Warning; PV continues after threefold repetition - move c8c5 from bk +Info; info depth 15 time 100 nodes 197246 score cp 0 nps 1970432 pv d8a8 e2b5 f8c8 b3d4 h7h5 h2h4 c8c5 d4b3 c5c8 b3d4 c8c5 d4b3 c5c8 b3d4 c8c5 +Position; fen rn1q1rk1/pbp1npbp/1p2p1p1/3pP3/3P1B2/2NQ1N2/PPP1BPPP/R3K2R w KQ - 1 9 +Moves; e1c1 b8d7 c1b1 a7a6 h1g1 c7c5 f4g5 c5d4 d3d4 e7c6 g5d8 c6d4 f3d4 a8d8 f2f4 b6b5 a2a4 b5b4 c3a2 a6a5 a2c1 d7c5 c1b3 c5b3 d4b3 +Warning; PV continues after threefold repetition - move c8c5 from bk +Info; info depth 16 time 196 nodes 375136 score cp 0 nps 1906883 pv d8a8 e2b5 f8c8 b3d4 h7h5 h2h4 c8c5 d4b3 c5c8 b3d4 c8c5 d4b3 c5c8 b3d4 c8c5 +Position; fen rn1q1rk1/pbp1npbp/1p2p1p1/3pP3/3P1B2/2NQ1N2/PPP1BPPP/R3K2R w KQ - 1 9 +Moves; e1c1 b8d7 c1b1 a7a6 h1g1 c7c5 f4g5 c5d4 d3d4 e7c6 g5d8 c6d4 f3d4 a8d8 f2f4 b6b5 a2a4 b5b4 c3a2 a6a5 a2c1 d7c5 c1b3 c5b3 d4b3 +Warning; PV continues after threefold repetition - move c8c5 from bk +Info; info depth 17 time 365 nodes 699526 score cp 0 nps 1916086 pv d8a8 e2b5 f8c8 b3d4 h7h5 h2h4 c8c5 d4b3 c5c8 b3d4 c8c5 d4b3 c5c8 b3d4 c8c5 +Position; fen rn1q1rk1/pbp1npbp/1p2p1p1/3pP3/3P1B2/2NQ1N2/PPP1BPPP/R3K2R w KQ - 1 9 +Moves; e1c1 b8d7 c1b1 a7a6 h1g1 c7c5 f4g5 c5d4 d3d4 e7c6 g5d8 c6d4 f3d4 a8d8 f2f4 b6b5 a2a4 b5b4 c3a2 a6a5 a2c1 d7c5 c1b3 c5b3 d4b3 +Warning; PV continues after threefold repetition - move c8c5 from bk +Info; info depth 18 time 692 nodes 1346174 score cp 0 nps 1945024 pv d8a8 e2b5 f8c8 b3d4 h7h5 h2h4 c8c5 d4b3 c5c8 b3d4 c8c5 d4b3 c5c8 b3d4 c8c5 +Position; fen rn1q1rk1/pbp1npbp/1p2p1p1/3pP3/3P1B2/2NQ1N2/PPP1BPPP/R3K2R w KQ - 1 9 +Moves; e1c1 b8d7 c1b1 a7a6 h1g1 c7c5 f4g5 c5d4 d3d4 e7c6 g5d8 c6d4 f3d4 a8d8 f2f4 b6b5 a2a4 b5b4 c3a2 a6a5 a2c1 d7c5 c1b3 c5b3 d4b3 +Finished game 20 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 3 - 2 - 2 [0.571] 7 +Started game 27 of 200 (bk vs bk1) +Finished game 14 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 4 - 2 - 2 [0.625] 8 +Started game 28 of 200 (bk1 vs bk) +Finished game 15 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 5 - 2 - 2 [0.667] 9 +Started game 29 of 200 (bk vs bk1) +Finished game 1 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 5 - 2 - 3 [0.650] 10 +Elo difference: 107.54 +/- 215.77, LOS: 88.78 %, DrawRatio: 30.00 % +SPRT: llr 0.02 (0.7%), lbound -2.94, ubound 2.94 +Started game 30 of 200 (bk1 vs bk) +Finished game 7 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 5 - 2 - 4 [0.636] 11 +Started game 31 of 200 (bk vs bk1) +Finished game 4 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 5 - 3 - 4 [0.583] 12 +Started game 32 of 200 (bk1 vs bk) +Finished game 10 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 5 - 4 - 4 [0.538] 13 +Started game 33 of 200 (bk vs bk1) +Finished game 21 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 5 - 5 - 4 [0.500] 14 +Started game 34 of 200 (bk1 vs bk) +Finished game 25 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 6 - 5 - 4 [0.533] 15 +Started game 35 of 200 (bk vs bk1) +Finished game 23 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 6 - 6 - 4 [0.500] 16 +Started game 36 of 200 (bk1 vs bk) +Finished game 2 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 6 - 6 - 5 [0.500] 17 +Started game 37 of 200 (bk vs bk1) +Finished game 13 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 6 - 7 - 5 [0.472] 18 +Started game 38 of 200 (bk1 vs bk) +Finished game 28 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 6 - 7 - 6 [0.474] 19 +Started game 39 of 200 (bk vs bk1) +Finished game 22 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 7 - 7 - 6 [0.500] 20 +Elo difference: -0.00 +/- 133.62, LOS: 50.00 %, DrawRatio: 30.00 % +SPRT: llr -0.00 (0.0%), lbound -2.94, ubound 2.94 +Started game 40 of 200 (bk1 vs bk) +Finished game 17 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 7 - 7 - 7 [0.500] 21 +Started game 41 of 200 (bk vs bk1) +Finished game 29 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 8 - 7 - 7 [0.523] 22 +Started game 42 of 200 (bk1 vs bk) +Finished game 31 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 9 - 7 - 7 [0.543] 23 +Started game 43 of 200 (bk vs bk1) +Finished game 26 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 9 - 8 - 7 [0.521] 24 +Started game 44 of 200 (bk1 vs bk) +Finished game 38 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 9 - 8 - 8 [0.520] 25 +Started game 45 of 200 (bk vs bk1) +Finished game 33 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 10 - 8 - 8 [0.538] 26 +Started game 46 of 200 (bk1 vs bk) +Finished game 27 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 10 - 9 - 8 [0.519] 27 +Started game 47 of 200 (bk vs bk1) +Finished game 19 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 10 - 10 - 8 [0.500] 28 +Started game 48 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move e6d7 from bk +Info; info depth 20 time 311 nodes 913241 score cp -4 nps 2935435 pv b1c2 e6e5 c2d3 b8d6 g5d8 e5e6 h3h4 d6e5 a2a4 e6d7 d8g5 d7e6 g5d8 e5d4 d8c7 d4e5 c7d8 e6d7 +Position; fen r1bqk1nr/pp1pppbp/6p1/8/2P1P3/2Nn1N1P/PP3PP1/R1BQK2R w KQkq - 0 9 +Moves; d1d3 d7d6 c1e3 d8a5 f3d4 g8f6 e1c1 e8g8 c1b1 c8d7 c3d5 f6d5 c4d5 f7f5 f2f3 f5f4 e3f2 g7e5 d4e6 f8c8 f2h4 a5b4 d3e2 b4c4 e2c4 c8c4 h4e7 a8c8 d1d2 g8f7 b2b3 c4b4 e7g5 d7e6 d5e6 f7e6 d2d5 c8c5 d5c5 d6c5 h1c1 b7b6 c1c4 b4c4 b3c4 e5b8 +Finished game 32 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 10 - 11 - 8 [0.483] 29 +Started game 49 of 200 (bk vs bk1) +Finished game 12 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 10 - 11 - 9 [0.483] 30 +Elo difference: -11.59 +/- 107.35, LOS: 41.36 %, DrawRatio: 30.00 % +SPRT: llr -0.01 (0.3%), lbound -2.94, ubound 2.94 +Started game 50 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move h7h5 from bk1 +Info; info depth 16 time 155 nodes 431461 score cp 3 nps 2771410 pv d6e6 a2a4 e6d7 d2d3 d7e6 d3d2 e6d7 d2d3 d7e6 d3d2 h7h5 +Position; fen r1bqk1nr/pp1pppbp/6p1/8/2P1P3/2Nn1N1P/PP3PP1/R1BQK2R w KQkq - 0 9 +Moves; d1d3 d7d6 c1e3 d8a5 f3d4 g8f6 e1c1 e8g8 c1b1 c8d7 c3d5 f6d5 c4d5 f7f5 f2f3 f5f4 e3f2 g7e5 d4e6 f8c8 f2h4 a5b4 d3e2 b4c4 e2c4 c8c4 h4e7 a8c8 d1d2 g8f7 b2b3 c4b4 e7g5 d7e6 d5e6 f7e6 d2d5 c8c5 d5c5 d6c5 h1c1 b7b6 c1c4 b4c4 b3c4 e5b8 b1c2 b8e5 c2d3 e6d6 d3d2 +Finished game 24 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 11 - 11 - 9 [0.500] 31 +Started game 51 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move d6d7 from bk +Info; info depth 13 time 11 nodes 40016 score cp -93 nps 3415150 pv a4c2 f5e5 b7b5 d6b6 c2d3 b6d6 d3c2 d6b6 c2d3 b6d6 d3c2 d6d7 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 +Warning; PV continues after threefold repetition - move d6d7 from bk +Info; info depth 14 time 16 nodes 57961 score cp -97 nps 3602479 pv a4c2 f5e5 b7b5 d6b6 c2d3 b6d6 d3c2 d6b6 c2d3 b6d6 d3c2 d6d7 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 +Warning; PV continues after threefold repetition - move d6d7 from bk +Info; info depth 15 time 26 nodes 103158 score cp -93 nps 3901411 pv a4c2 f5e5 b7b5 d6b6 c2d3 b6d6 d3c2 d6b6 c2d3 b6d6 d3c2 d6d7 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 +Warning; PV continues after threefold repetition - move d6d2 from bk +Info; info depth 16 time 35 nodes 142733 score cp -94 nps 4007744 pv a4c2 f5e5 b7b5 d6b6 c2d3 b6d6 d3c2 d6b6 c2d3 b6d6 d3c2 d6d2 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 +Finished game 41 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 11 - 11 - 10 [0.500] 32 +Started game 52 of 200 (bk1 vs bk) +Finished game 39 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 11 - 11 - 11 [0.500] 33 +Started game 53 of 200 (bk vs bk1) +Finished game 3 (bk vs bk1): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 11 - 11 - 12 [0.500] 34 +Started game 54 of 200 (bk1 vs bk) +Finished game 30 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 12 - 11 - 12 [0.514] 35 +Started game 55 of 200 (bk vs bk1) +Finished game 45 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 12 - 11 - 13 [0.514] 36 +Started game 56 of 200 (bk1 vs bk) +Finished game 35 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 12 - 12 - 13 [0.500] 37 +Started game 57 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move f3e2 from bk +Info; info depth 15 time 125 nodes 199296 score cp -364 nps 1593220 pv e7e6 f2f4 e6e7 g2f3 h7h5 f3g2 e7d7 g2f3 d7e7 f3g2 e7d7 g2f3 d7e7 f3e2 +Position; fen r1bqk2r/p2nppbp/2pp1np1/8/1p1PP3/3B1N2/PPP1QPPP/R1BNK2R w KQkq - 2 9 +Moves; e1g1 e8g8 c2c3 c6c5 c3b4 c5b4 a2a3 b4b3 d1c3 e7e5 c1e3 c8b7 a1d1 e5d4 e3d4 d7c5 f1e1 d8c8 f3d2 c5d3 e2d3 c8e6 c3b5 a8d8 d4a7 g7h6 a7b6 h6d2 d3d2 d8d7 d2b4 d6d5 b5d4 e6e5 d4f3 e5h5 e4e5 f6e4 b4b3 b7c6 f3d4 c6a8 b3b5 d7b7 d4c6 h5h4 e1f1 h4h6 d1d5 e4d2 f1e1 d2c4 b5c4 b7b6 c6e7 g8h8 d5d7 h6g5 g2g3 b6e6 h2h4 g5h5 e7d5 h5f3 c4d4 a8c6 d7d6 h8g7 d4d1 c6d5 d1d5 f3d5 d6d5 f8a8 e1e3 e6e7 b2b4 e7a7 d5d3 a7b7 g1g2 a8a4 d3d5 g7f8 b4b5 f8e7 d5c5 a4a5 e3b3 +Finished game 51 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 12 - 13 - 13 [0.487] 38 +Started game 58 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move f2f3 from bk +Info; info depth 12 time 39 nodes 62559 score cp -28 nps 1575380 pv h7h5 e3d2 f6d4 d2e3 d4f6 e3d2 f6d4 d2e3 d4f6 f2f3 +Position; fen rnbq1rk1/ppp1p1bp/3p2p1/5p2/1P1P4/3Q1NP1/P1PnPPBP/R1B2RK1 w - - 0 9 +Moves; c1d2 d6d5 a1d1 b8d7 d2f4 f8e8 f1e1 d7f6 f3e5 c7c6 h2h3 a7a5 a2a3 d8b6 d1b1 a5b4 c2c4 b6a6 a3b4 d5c4 e5c4 c8e6 b4b5 c6b5 c4e5 e6c4 e5c4 b5c4 d3e3 a8a7 b1b4 e7e6 e1b1 c4c3 b1c1 a6a2 e3c3 f6d5 g2d5 a2d5 c3c5 d5c5 d4c5 e8e7 g1g2 a7a1 c1a1 g7a1 g2f3 a1f6 f4e3 g6g5 h3h4 g5g4 f3f4 g8g7 b4b6 +Warning; PV continues after threefold repetition - move f2f3 from bk +Info; info depth 13 time 57 nodes 106309 score cp -28 nps 1841093 pv h7h5 e3d2 f6d4 d2e3 d4f6 e3d2 f6d4 d2e3 d4f6 f2f3 +Position; fen rnbq1rk1/ppp1p1bp/3p2p1/5p2/1P1P4/3Q1NP1/P1PnPPBP/R1B2RK1 w - - 0 9 +Moves; c1d2 d6d5 a1d1 b8d7 d2f4 f8e8 f1e1 d7f6 f3e5 c7c6 h2h3 a7a5 a2a3 d8b6 d1b1 a5b4 c2c4 b6a6 a3b4 d5c4 e5c4 c8e6 b4b5 c6b5 c4e5 e6c4 e5c4 b5c4 d3e3 a8a7 b1b4 e7e6 e1b1 c4c3 b1c1 a6a2 e3c3 f6d5 g2d5 a2d5 c3c5 d5c5 d4c5 e8e7 g1g2 a7a1 c1a1 g7a1 g2f3 a1f6 f4e3 g6g5 h3h4 g5g4 f3f4 g8g7 b4b6 +Finished game 37 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 13 - 13 - 13 [0.500] 39 +Started game 59 of 200 (bk vs bk1) +Finished game 9 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 13 - 13 - 14 [0.500] 40 +Elo difference: -0.00 +/- 88.68, LOS: 50.00 %, DrawRatio: 35.00 % +SPRT: llr -0.00 (0.0%), lbound -2.94, ubound 2.94 +Started game 60 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move f4e5 from bk +Info; info depth 10 time 6 nodes 8566 score cp -69 nps 1357226 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e8 g2h3 e8e7 h3g2 f4e5 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e8 from bk +Info; info depth 12 time 8 nodes 17620 score cp -69 nps 2145666 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e8 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e8 from bk +Info; info depth 13 time 9 nodes 22902 score cp -69 nps 2407113 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e8 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e2 from bk +Info; info depth 14 time 16 nodes 49593 score cp -69 nps 3078666 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e2 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e8 from bk +Info; info depth 16 time 21 nodes 74047 score cp -69 nps 3421702 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e8 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e5 from bk +Info; info depth 17 time 25 nodes 91572 score cp -69 nps 3611880 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e5 g2c6 e5e3 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e5 from bk +Info; info depth 18 time 30 nodes 112811 score cp -69 nps 3739661 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e5 g2c6 e5e1 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e5 from bk +Info; info depth 19 time 38 nodes 147850 score cp -69 nps 3890267 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2c6 e5e7 c6g2 e7e5 g2c6 e5e1 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Warning; PV continues after threefold repetition - move e7e8 from bk +Info; info depth 20 time 61 nodes 245341 score cp -69 nps 4018169 pv b7b5 e7e8 g2h3 e8e7 h3g2 e7e5 g2f1 e5e8 f1h3 e8e7 h3g2 e7e8 +Position; fen r1b1k2r/pp1pqppp/2n2n2/1N6/1b2P3/8/PP1B1PPP/RN1QKB1R w KQkq - 5 9 +Moves; b5c7 e8d8 c7a8 e7e4 f1e2 e4g2 h1f1 b4d2 d1d2 g2h2 b1c3 h2b8 c3d5 f6d5 d2d5 d8e8 e2c4 b8f4 a8c7 f4c7 d5f7 e8d8 f7g7 h8e8 e1d1 c7f4 g7c3 d7d6 c4d5 c6b4 d5f3 d6d5 f1e1 e8f8 a2a3 f4f3 c3f3 f8f3 a3b4 f3f2 a1a5 f2b2 a5d5 c8d7 e1e4 b2f2 d1e1 f2f7 e4c4 d8e8 c4c7 d7e6 d5c5 e8d8 c7f7 e6f7 c5f5 f7g6 f5d5 d8e7 d5a5 a7a6 b4b5 a6b5 a5b5 e7f6 e1f2 g6e4 f2e3 e4c6 b5h5 f6g6 h5e5 g6f7 e3f4 h7h6 e5a5 f7g6 a5a8 c6d7 a8g8 g6f7 g8h8 f7g6 h8d8 d7a4 d8d6 g6g7 f4e5 a4c6 e5f5 c6e8 d6d8 e8a4 d8d2 a4c6 d2d8 c6a4 d8d6 a4c2 f5f4 c2a4 f4e5 a4c6 d6d8 g7g6 e5f4 g6f6 d8d6 f6g7 d6d8 c6b5 d8d1 b5c6 d1d4 c6e8 f4f5 g7f7 d4d6 f7g7 d6d4 e8c6 d4g4 g7f7 g4d4 f7g7 d4d3 c6a4 d3d2 a4c6 d2d1 c6b5 d1d5 b5c6 d5d2 c6b5 f5f4 b5e8 d2d8 e8c6 f4g4 c6a4 d8b8 a4c6 g4f5 c6d7 f5e5 d7c6 e5f5 c6d7 f5f4 d7c6 b8d8 g7f6 d8d6 f6g7 f4g4 c6a4 d6d8 a4c6 d8b8 g7g6 g4f4 g6h5 b8g8 h5h4 g8c8 h6h5 c8g8 h4h3 g8g3 h3h4 g3g5 c6f3 g5g7 f3c6 g7g1 h4h3 g1b1 c6g2 b1b5 h3h4 b5b2 h4h3 b2b3 h3h4 b3b5 g2c6 b5c5 c6g2 c5b5 g2c6 b5e5 c6g2 e5e7 +Finished game 52 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 13 - 13 - 15 [0.500] 41 +Started game 61 of 200 (bk vs bk1) +Finished game 47 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 14 - 13 - 15 [0.512] 42 +Started game 62 of 200 (bk1 vs bk) +Finished game 40 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 14 - 14 - 15 [0.500] 43 +Started game 63 of 200 (bk vs bk1) +Finished game 43 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 15 - 14 - 15 [0.511] 44 +Started game 64 of 200 (bk1 vs bk) +Finished game 48 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 15 - 15 - 15 [0.500] 45 +Started game 65 of 200 (bk vs bk1) +Finished game 49 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 16 - 15 - 15 [0.511] 46 +Started game 66 of 200 (bk1 vs bk) +Finished game 54 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 16 - 15 - 16 [0.511] 47 +Started game 67 of 200 (bk vs bk1) +Finished game 44 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 16 - 16 - 16 [0.500] 48 +Started game 68 of 200 (bk1 vs bk) +Finished game 46 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 16 - 17 - 16 [0.490] 49 +Started game 69 of 200 (bk vs bk1) +Finished game 34 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 16 - 17 - 17 [0.490] 50 +Elo difference: -6.95 +/- 79.61, LOS: 43.09 %, DrawRatio: 34.00 % +SPRT: llr -0.01 (0.3%), lbound -2.94, ubound 2.94 +Started game 70 of 200 (bk1 vs bk) +Finished game 56 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 16 - 18 - 17 [0.480] 51 +Started game 71 of 200 (bk vs bk1) +Finished game 36 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 17 - 18 - 17 [0.490] 52 +Started game 72 of 200 (bk1 vs bk) +Finished game 53 (bk vs bk1): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 17 - 18 - 18 [0.491] 53 +Started game 73 of 200 (bk vs bk1) +Finished game 42 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 17 - 18 - 19 [0.491] 54 +Started game 74 of 200 (bk1 vs bk) +Finished game 62 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 17 - 19 - 19 [0.482] 55 +Started game 75 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move e4d6 from bk1 +Info; info depth 12 time 144 nodes 219032 score cp 95 nps 1515525 pv d1d6 f8e8 d6d1 e8f8 d1d6 f8e8 d6d1 e8f8 e4d6 +Position; fen r1b1kb1r/pp1n1ppp/2p2n2/4p3/1qBP4/2N3B1/PPP1NPPP/R2QK2R w KQkq - 2 9 +Moves; c4b3 f8d6 d1d2 e8g8 e1c1 e5d4 a2a3 d4c3 e2c3 f6e4 c3e4 b4d2 d1d2 d6b8 h1e1 a7a6 a3a4 a6a5 g3d6 b8d6 d2d6 f8e8 d6d1 e8f8 h2h4 h7h5 +Warning; PV continues after threefold repetition - move e4d6 from bk1 +Info; info depth 13 time 185 nodes 295642 score cp 95 nps 1596474 pv d1d6 f8e8 d6d1 e8f8 d1d6 f8e8 d6d1 e8f8 e4d6 +Position; fen r1b1kb1r/pp1n1ppp/2p2n2/4p3/1qBP4/2N3B1/PPP1NPPP/R2QK2R w KQkq - 2 9 +Moves; c4b3 f8d6 d1d2 e8g8 e1c1 e5d4 a2a3 d4c3 e2c3 f6e4 c3e4 b4d2 d1d2 d6b8 h1e1 a7a6 a3a4 a6a5 g3d6 b8d6 d2d6 f8e8 d6d1 e8f8 h2h4 h7h5 +Warning; PV continues after threefold repetition - move e4d6 from bk1 +Info; info depth 14 time 255 nodes 426841 score cp 95 nps 1673801 pv d1d6 f8e8 d6d1 e8f8 d1d6 f8e8 d6d1 e8f8 e4d6 +Position; fen r1b1kb1r/pp1n1ppp/2p2n2/4p3/1qBP4/2N3B1/PPP1NPPP/R2QK2R w KQkq - 2 9 +Moves; c4b3 f8d6 d1d2 e8g8 e1c1 e5d4 a2a3 d4c3 e2c3 f6e4 c3e4 b4d2 d1d2 d6b8 h1e1 a7a6 a3a4 a6a5 g3d6 b8d6 d2d6 f8e8 d6d1 e8f8 h2h4 h7h5 +Warning; PV continues after threefold repetition - move f2f4 from bk1 +Info; info depth 15 time 403 nodes 714665 score cp 96 nps 1771961 pv d1d6 f8e8 d6d1 e8f8 d1d6 f8e8 d6d1 e8f8 f2f4 +Position; fen r1b1kb1r/pp1n1ppp/2p2n2/4p3/1qBP4/2N3B1/PPP1NPPP/R2QK2R w KQkq - 2 9 +Moves; c4b3 f8d6 d1d2 e8g8 e1c1 e5d4 a2a3 d4c3 e2c3 f6e4 c3e4 b4d2 d1d2 d6b8 h1e1 a7a6 a3a4 a6a5 g3d6 b8d6 d2d6 f8e8 d6d1 e8f8 h2h4 h7h5 +Finished game 55 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 17 - 19 - 20 [0.482] 56 +Started game 76 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move f5f7 from bk +Info; info depth 20 time 108 nodes 357932 score cp -151 nps 3313004 pv b8c8 f1e2 c8d8 e2d3 h8h5 d3d4 h5f5 f2f4 f5f8 d4d3 f8f5 d3d4 f5f7 d4d3 f7f5 d3d4 f5f7 d4c4 +Position; fen rn2kb1r/pbp3p1/1p1ppq1p/5p2/3P4/5NP1/PPPNPPBP/R2Q1RK1 w kq - 0 9 +Moves; c2c3 b8c6 e2e4 e8c8 e4f5 e6f5 f1e1 h8g8 d4d5 c6e7 e1e6 f6f7 c3c4 c8b8 f3d4 b7c8 e6e1 f7f6 d2b3 c8d7 d1d2 d8e8 d4c6 e7c6 d5c6 e8e1 a1e1 d7c8 g2d5 g8h8 b3d4 f8e7 b2b4 h8e8 b4b5 f6g6 d2d3 g6f6 d3e3 g7g5 e3d2 h6h5 d4e6 e7d8 e6d8 e8d8 d2e2 h5h4 g3h4 g5h4 e2e7 f6g6 g1h1 d8h8 e1g1 g6e8 g1g7 e8e7 g7e7 h4h3 h1g1 a7a6 a2a4 f5f4 e7f7 h8e8 g1f1 f4f3 d5f3 a6b5 a4b5 c8e6 f7f4 e8h8 f3d5 e6d5 c4d5 b8c8 f4a4 c8b8 a4f4 b8c8 f4a4 c8b8 a4e4 +Warning; PV continues after threefold repetition - move f5f7 from bk +Info; info depth 21 time 151 nodes 502964 score cp -151 nps 3327375 pv b8c8 f1e2 c8d8 e2d3 h8h5 d3d4 h5f5 f2f4 f5f8 d4d3 f8f5 d3d4 f5f7 d4d3 f7f5 d3d4 f5f7 d4c4 +Position; fen rn2kb1r/pbp3p1/1p1ppq1p/5p2/3P4/5NP1/PPPNPPBP/R2Q1RK1 w kq - 0 9 +Moves; c2c3 b8c6 e2e4 e8c8 e4f5 e6f5 f1e1 h8g8 d4d5 c6e7 e1e6 f6f7 c3c4 c8b8 f3d4 b7c8 e6e1 f7f6 d2b3 c8d7 d1d2 d8e8 d4c6 e7c6 d5c6 e8e1 a1e1 d7c8 g2d5 g8h8 b3d4 f8e7 b2b4 h8e8 b4b5 f6g6 d2d3 g6f6 d3e3 g7g5 e3d2 h6h5 d4e6 e7d8 e6d8 e8d8 d2e2 h5h4 g3h4 g5h4 e2e7 f6g6 g1h1 d8h8 e1g1 g6e8 g1g7 e8e7 g7e7 h4h3 h1g1 a7a6 a2a4 f5f4 e7f7 h8e8 g1f1 f4f3 d5f3 a6b5 a4b5 c8e6 f7f4 e8h8 f3d5 e6d5 c4d5 b8c8 f4a4 c8b8 a4f4 b8c8 f4a4 c8b8 a4e4 +Finished game 50 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 17 - 20 - 20 [0.474] 57 +Started game 77 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move f3g2 from bk1 +Info; info depth 23 time 667 nodes 2366274 score cp 0 nps 3545092 pv g3g2 g5g2 h2h1 g2g5 h7h5 f3g2 h1e1 g2f3 e1h1 f3g2 h1e1 g2f3 e1h1 f3g2 +Position; fen r2qkbnr/ppp2p1p/4b3/4n1N1/2Pp2pP/P7/1P1NPPP1/R1BQKB1R w KQkq - 0 9 +Moves; g5e6 f7e6 d2e4 f8g7 c1g5 d8d7 e4c5 d7c6 c5b3 e5c4 b3d4 c4b2 d4c6 b2d1 a1d1 g7c3 g5d2 c3d2 e1d2 b7c6 e2e3 g8f6 f1d3 a8b8 d2c2 c6c5 h4h5 h8g8 h5h6 g4g3 f2f3 e8e7 h1h4 g8g5 d1e1 a7a5 h4h3 b8d8 d3e2 c7c6 f3f4 g5g8 e2d3 a5a4 e1e2 g8g4 e2e1 e7d7 d3e2 g4g8 e2c4 f6d5 h3h5 g8g4 c2c1 d8h8 c4e2 g4g8 e2d3 d7d6 h5e5 g8g4 e1h1 d5c3 h1h3 c3d5 d3c2 c5c4 c2a4 h8a8 a4d1 g4g8 a3a4 d5b4 e5e4 b4d3 c1d2 d3f2 e4d4 d6e7 h3h5 f2d1 d2d1 a8a4 d1e2 a4a2 d4d2 a2a1 d2c2 a1g1 e2f3 g1f1 f3e4 f1f2 c2c4 f2g2 c4c6 g2h2 c6c7 e7f6 c7g7 g8g7 h6g7 f6g7 h5g5 g7f7 e4f3 +Finished game 59 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 18 - 20 - 20 [0.483] 58 +Started game 78 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move f3e4 from bk1 +Info; info depth 28 time 1157 nodes 4701000 score cp 0 nps 4062933 pv h2g2 f3g2 f7f6 g2f3 h7h5 f3g3 f6f5 g3f3 f5f6 f3e4 f6f7 e4f3 f7f6 f3e4 f6f7 e4f3 f7f6 +Position; fen r2qkbnr/ppp2p1p/4b3/4n1N1/2Pp2pP/P7/1P1NPPP1/R1BQKB1R w KQkq - 0 9 +Moves; g5e6 f7e6 d2e4 f8g7 c1g5 d8d7 e4c5 d7c6 c5b3 e5c4 b3d4 c4b2 d4c6 b2d1 a1d1 g7c3 g5d2 c3d2 e1d2 b7c6 e2e3 g8f6 f1d3 a8b8 d2c2 c6c5 h4h5 h8g8 h5h6 g4g3 f2f3 e8e7 h1h4 g8g5 d1e1 a7a5 h4h3 b8d8 d3e2 c7c6 f3f4 g5g8 e2d3 a5a4 e1e2 g8g4 e2e1 e7d7 d3e2 g4g8 e2c4 f6d5 h3h5 g8g4 c2c1 d8h8 c4e2 g4g8 e2d3 d7d6 h5e5 g8g4 e1h1 d5c3 h1h3 c3d5 d3c2 c5c4 c2a4 h8a8 a4d1 g4g8 a3a4 d5b4 e5e4 b4d3 c1d2 d3f2 e4d4 d6e7 h3h5 f2d1 d2d1 a8a4 d1e2 a4a2 d4d2 a2a1 d2c2 a1g1 e2f3 g1f1 f3e4 f1f2 c2c4 f2g2 c4c6 g2h2 c6c7 e7f6 c7g7 g8g7 h6g7 f6g7 h5g5 g7f7 e4f3 g3g2 g5g2 +Warning; PV continues after threefold repetition - move f3e4 from bk1 +Info; info depth 29 time 1157 nodes 4701000 score cp 0 nps 4062833 pv h2g2 f3g2 f7f6 g2f3 h7h5 f3g3 f6f5 g3f3 f5f6 f3e4 f6f7 e4f3 f7f6 f3e4 f6f7 e4f3 f7f6 +Position; fen r2qkbnr/ppp2p1p/4b3/4n1N1/2Pp2pP/P7/1P1NPPP1/R1BQKB1R w KQkq - 0 9 +Moves; g5e6 f7e6 d2e4 f8g7 c1g5 d8d7 e4c5 d7c6 c5b3 e5c4 b3d4 c4b2 d4c6 b2d1 a1d1 g7c3 g5d2 c3d2 e1d2 b7c6 e2e3 g8f6 f1d3 a8b8 d2c2 c6c5 h4h5 h8g8 h5h6 g4g3 f2f3 e8e7 h1h4 g8g5 d1e1 a7a5 h4h3 b8d8 d3e2 c7c6 f3f4 g5g8 e2d3 a5a4 e1e2 g8g4 e2e1 e7d7 d3e2 g4g8 e2c4 f6d5 h3h5 g8g4 c2c1 d8h8 c4e2 g4g8 e2d3 d7d6 h5e5 g8g4 e1h1 d5c3 h1h3 c3d5 d3c2 c5c4 c2a4 h8a8 a4d1 g4g8 a3a4 d5b4 e5e4 b4d3 c1d2 d3f2 e4d4 d6e7 h3h5 f2d1 d2d1 a8a4 d1e2 a4a2 d4d2 a2a1 d2c2 a1g1 e2f3 g1f1 f3e4 f1f2 c2c4 f2g2 c4c6 g2h2 c6c7 e7f6 c7g7 g8g7 h6g7 f6g7 h5g5 g7f7 e4f3 g3g2 g5g2 +Finished game 61 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 18 - 20 - 21 [0.483] 59 +Started game 79 of 200 (bk vs bk1) +Finished game 63 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 18 - 20 - 22 [0.483] 60 +Elo difference: -11.59 +/- 70.95, LOS: 37.27 %, DrawRatio: 36.67 % +SPRT: llr -0.02 (0.5%), lbound -2.94, ubound 2.94 +Started game 80 of 200 (bk1 vs bk) +Finished game 75 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 18 - 20 - 23 [0.484] 61 +Started game 81 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 19 time 639 nodes 1586865 score cp -118 nps 2481600 pv h3h4 d5d1 f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 +Warning; PV continues after threefold repetition - move f8a8 from bk +Info; info depth 20 time 965 nodes 2380700 score cp -116 nps 2465632 pv h3h4 d5d1 f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8a8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 +Warning; PV continues after threefold repetition - move f8a8 from bk +Info; info depth 21 time 965 nodes 2380700 score cp -116 nps 2465572 pv h3h4 d5d1 f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8a8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 +Warning; PV continues after threefold repetition - move g6f6 from bk1 +Info; info depth 14 time 46 nodes 102896 score cp 133 nps 2203387 pv d5d1 f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 g6f6 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 +Warning; PV continues after threefold repetition - move d1d2 from bk +Info; info depth 13 time 31 nodes 65776 score cp -125 nps 2107536 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 d1d2 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move d1d2 from bk +Info; info depth 15 time 58 nodes 136899 score cp -122 nps 2347883 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 d1d2 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move d1d2 from bk +Info; info depth 16 time 78 nodes 198117 score cp -119 nps 2523580 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 d1d2 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 17 time 108 nodes 287288 score cp -116 nps 2648841 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 18 time 177 nodes 497245 score cp -115 nps 2807485 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8a8 from bk +Info; info depth 19 time 364 nodes 1030354 score cp -111 nps 2826407 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8a8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 20 time 594 nodes 1722040 score cp -116 nps 2897834 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 21 time 899 nodes 2642125 score cp -97 nps 2938915 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Warning; PV continues after threefold repetition - move f8g8 from bk +Info; info depth 22 time 899 nodes 2642125 score cp -97 nps 2938827 pv f2f4 d1h1 h4g3 h1d1 g3h4 d1h1 h4g3 h1d1 g3h4 f8g8 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 +Finished game 67 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 18 - 20 - 24 [0.484] 62 +Started game 82 of 200 (bk1 vs bk) +Finished game 58 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 19 - 20 - 24 [0.492] 63 +Started game 83 of 200 (bk vs bk1) +Finished game 64 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 20 - 20 - 24 [0.500] 64 +Started game 84 of 200 (bk1 vs bk) +Finished game 60 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 20 - 21 - 24 [0.492] 65 +Started game 85 of 200 (bk vs bk1) +Finished game 70 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 20 - 22 - 24 [0.485] 66 +Started game 86 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move e8g8 from bk1 +Info; info depth 23 time 418 nodes 1945629 score cp 132 nps 4652338 pv f6e5 f8e8 e5f6 e8g8 g1d1 f3e4 d1c1 g8f8 f6e6 f8g8 c1g1 e4f3 e6f6 g8c8 f6e5 c8e8 e5f6 e8g8 f6f5 +Position; fen r2qkbnr/1b3ppp/p1n1p3/2ppP3/3P4/3B1N2/PP3PPP/RNBQ1RK1 w kq - 2 9 +Moves; d4c5 f8c5 c1f4 g8e7 d1c2 d8b6 c2d2 e7g6 f4g3 c6d4 b1c3 d4f3 g2f3 c5e7 a1c1 d5d4 c3e4 e8g8 a2a4 e7b4 d2e2 b7c6 h2h4 g6e7 e4d6 f7f5 d6c4 b6c7 h4h5 f5f4 g3h2 a8d8 d3e4 c6a4 c4d6 c7d7 e2c4 b4d6 e5d6 e7f5 e4f5 f8f5 c4d4 a4b5 h2f4 d7f7 d4b6 f7f6 f4g3 b5f1 c1f1 f5h5 f1e1 d8f8 f3f4 h5d5 b6a6 h7h5 a6e2 f8b8 e2e6 f6e6 e1e6 b8b2 f4f5 b2b4 g1g2 b4g4 g2h3 g4g5 f5f6 g5g6 e6e7 g6f6 d6d7 f6f7 e7e8 f7f8 e8e7 f8f3 e7e8 f3f8 e8e7 g8h7 g3c7 h7g6 h3h4 d5d1 f2f4 f8g8 e7e8 d1d7 e8g8 d7c7 f4f5 g6f5 h4h5 c7c1 g8f8 f5e4 f8e8 e4f5 e8f8 f5e4 f8e8 e4f4 e8f8 f4e5 f8e8 e5f6 h5g4 c1g1 g4f3 g7g5 e8f8 +Finished game 66 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 20 - 23 - 24 [0.478] 67 +Started game 87 of 200 (bk vs bk1) +Finished game 68 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 21 - 23 - 24 [0.485] 68 +Started game 88 of 200 (bk1 vs bk) +Finished game 69 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 22 - 23 - 24 [0.493] 69 +Started game 89 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move f7f5 from bk1 +Info; info depth 16 time 508 nodes 1033740 score cp -216 nps 2034892 pv d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 f7f5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 18 time 1269 nodes 2640343 score cp -213 nps 2080539 pv d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 19 time 1269 nodes 2640343 score cp -213 nps 2080497 pv d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 +Warning; PV continues after threefold repetition - move h7h5 from bk1 +Info; info depth 14 time 275 nodes 520000 score cp -226 nps 1890404 pv a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 h7h5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 15 time 662 nodes 1326571 score cp 211 nps 2003549 pv e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 +Warning; PV continues after threefold repetition - move h7h5 from bk1 +Info; info depth 8 time 6 nodes 6140 score cp -208 nps 912156 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 h7h5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move c7a6 from bk1 +Info; info depth 11 time 13 nodes 21431 score cp -220 nps 1618020 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move c7a6 from bk1 +Info; info depth 12 time 18 nodes 34311 score cp -220 nps 1884929 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 17 time 315 nodes 644009 score cp -220 nps 2041719 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 18 time 536 nodes 1140300 score cp -220 nps 2123566 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 19 time 1093 nodes 2345870 score cp -208 nps 2144417 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 20 time 1093 nodes 2345870 score cp -208 nps 2144373 pv d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 9 time 9 nodes 12460 score cp 218 nps 1325461 pv f6e4 d3d7 e4f6 d7d6 f6e4 d6d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 11 time 16 nodes 28238 score cp 218 nps 1723752 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 12 time 25 nodes 48717 score cp 211 nps 1892488 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move f7f5 from bk +Info; info depth 13 time 60 nodes 117854 score cp 211 nps 1963362 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 f7f5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 14 time 83 nodes 170936 score cp 211 nps 2043012 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 17 time 473 nodes 958698 score cp 218 nps 2024704 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 18 time 643 nodes 1335297 score cp 218 nps 2075706 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 19 time 1156 nodes 2312749 score cp 222 nps 1999204 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 20 time 1156 nodes 2312749 score cp 222 nps 1999161 pv f6e4 d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 +Warning; PV continues after threefold repetition - move c7a6 from bk1 +Info; info depth 10 time 14 nodes 22303 score cp -212 nps 1542350 pv d3d7 e4f6 d7d3 f6e4 d3d7 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 11 time 18 nodes 31913 score cp -209 nps 1681747 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 12 time 28 nodes 52758 score cp -208 nps 1825226 pv d3d7 e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 13 time 36 nodes 69314 score cp -208 nps 1918631 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 14 time 59 nodes 118217 score cp -212 nps 1993232 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 15 time 99 nodes 177665 score cp -208 nps 1780101 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 16 time 202 nodes 367107 score cp -221 nps 1816711 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 17 time 317 nodes 608707 score cp -213 nps 1918451 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 18 time 594 nodes 1194823 score cp -223 nps 2009533 pv d3d7 e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move h2h3 from bk +Info; info depth 12 time 191 nodes 360373 score cp 55 nps 1885007 pv a6c5 a8b8 c5a6 b8b7 a6c5 b7b8 h2h3 +Position; fen r2qk1nr/p2nbpp1/1pp1p2p/3pPb2/3P4/1N3N2/PPP1BPPP/R1BQ1RK1 w kq - 0 9 +Moves; e2a6 d8c7 f1e1 d7b8 a6e2 b8d7 e2a6 d7b8 a6d3 f5d3 d1d3 b8d7 d3a6 b6b5 c1d2 c7b6 a6a5 e8c8 a2a4 b5b4 c2c3 b4c3 a5c3 c8b8 a4a5 b6a6 a1c1 a6b7 a5a6 b7a6 c3c6 a6c6 c1c6 d7b6 d2a5 d8c8 c6c8 b8c8 e1a1 c8b8 a5c3 e7f8 b3c5 g8e7 c5a6 b8c8 a6c5 c8b8 b2b3 g7g5 c5a6 b8a8 +Warning; PV continues after threefold repetition - move h2h3 from bk +Info; info depth 13 time 246 nodes 466687 score cp 55 nps 1893950 pv a6c5 a8b8 c5a6 b8b7 a6c5 b7b8 h2h3 +Position; fen r2qk1nr/p2nbpp1/1pp1p2p/3pPb2/3P4/1N3N2/PPP1BPPP/R1BQ1RK1 w kq - 0 9 +Moves; e2a6 d8c7 f1e1 d7b8 a6e2 b8d7 e2a6 d7b8 a6d3 f5d3 d1d3 b8d7 d3a6 b6b5 c1d2 c7b6 a6a5 e8c8 a2a4 b5b4 c2c3 b4c3 a5c3 c8b8 a4a5 b6a6 a1c1 a6b7 a5a6 b7a6 c3c6 a6c6 c1c6 d7b6 d2a5 d8c8 c6c8 b8c8 e1a1 c8b8 a5c3 e7f8 b3c5 g8e7 c5a6 b8c8 a6c5 c8b8 b2b3 g7g5 c5a6 b8a8 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 12 time 57 nodes 97355 score cp 206 nps 1705298 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 13 time 67 nodes 122623 score cp 222 nps 1816429 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 14 time 81 nodes 159373 score cp 222 nps 1948746 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 15 time 148 nodes 299518 score cp 221 nps 2021484 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 16 time 204 nodes 424194 score cp 221 nps 2069715 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 17 time 350 nodes 726805 score cp 220 nps 2075135 pv e4f6 d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 18 time 658 nodes 1399766 score cp 218 nps 2126421 pv e4f6 d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 +Warning; PV continues after threefold repetition - move g8g7 from bk1 +Info; info depth 4 time 3 nodes 953 score cp -210 nps 297552 pv d7d3 f6e4 d3d7 g8g7 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 5 time 3 nodes 1674 score cp -218 nps 488160 pv d7d3 f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 6 time 3 nodes 2771 score cp -218 nps 728750 pv d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move h7h6 from bk1 +Info; info depth 7 time 4 nodes 4667 score cp -218 nps 1068403 pv d7d3 f6e4 d3d7 h7h6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 10 time 14 nodes 25859 score cp -204 nps 1806742 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 e2f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 11 time 18 nodes 36495 score cp -218 nps 1949196 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 12 time 27 nodes 55844 score cp -222 nps 2044803 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 13 time 59 nodes 128354 score cp -199 nps 2159137 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b4 e2b2 b4a3 b2f2 f3e5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move h7h5 from bk1 +Info; info depth 14 time 97 nodes 215356 score cp -206 nps 2199265 pv d7d3 f6e4 d3d7 h7h5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 15 time 144 nodes 319157 score cp -206 nps 2206172 pv d7d3 f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 16 time 194 nodes 441701 score cp -218 nps 2275135 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 17 time 278 nodes 638987 score cp -218 nps 2294215 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 c3b3 e2f2 d7d2 a6c5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 18 time 405 nodes 940264 score cp -218 nps 2319811 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 c3b3 e2f2 d7d2 a6c5 b3b4 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 19 time 725 nodes 1662964 score cp -214 nps 2290759 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 c3b3 e2f2 d7d2 a6c5 b3b4 f2d2 d1d2 g8g7 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 20 time 1082 nodes 2487101 score cp -214 nps 2297351 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 21 time 1082 nodes 2487101 score cp -214 nps 2297307 pv d7d3 f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7a6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 +Warning; PV continues after threefold repetition - move g8g7 from bk +Info; info depth 3 time 3 nodes 414 score cp 210 nps 128272 pv f6e4 d3d7 g8g7 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move h7h6 from bk +Info; info depth 4 time 3 nodes 853 score cp 204 nps 245340 pv f6e4 d3d7 h7h6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move h7h6 from bk +Info; info depth 5 time 4 nodes 2115 score cp 196 nps 508743 pv f6e4 d3d7 h7h6 f3d4 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move h7h6 from bk +Info; info depth 6 time 5 nodes 4071 score cp 222 nps 791746 pv f6e4 d3d7 h7h6 d1e1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 7 time 7 nodes 8119 score cp 219 nps 1143489 pv f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 8 time 9 nodes 12999 score cp 219 nps 1399864 pv f6e4 d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 9 time 10 nodes 16725 score cp 219 nps 1542156 pv f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b4 e2f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 10 time 13 nodes 23211 score cp 222 nps 1731582 pv f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b4 e2b2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 11 time 16 nodes 31271 score cp 222 nps 1870991 pv f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b4 e2b2 b4a3 b2f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move e4f2 from bk +Info; info depth 12 time 21 nodes 44559 score cp 220 nps 2077730 pv f6e4 d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3d3 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 13 time 54 nodes 118410 score cp 213 nps 2175302 pv f6e4 d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 14 time 130 nodes 288855 score cp 214 nps 2218495 pv f6e4 d3d7 b6b5 d1b1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move b6b5 from bk +Info; info depth 15 time 275 nodes 593352 score cp 209 nps 2153222 pv f6e4 d3d7 b6b5 d1b1 e4f6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move f7f5 from bk +Info; info depth 16 time 546 nodes 1164837 score cp 225 nps 2131372 pv f6e4 d3d7 f7f5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move f7f5 from bk +Info; info depth 17 time 864 nodes 1798695 score cp 214 nps 2080039 pv f6e4 d3d7 f7f5 f3g5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move f7f5 from bk +Info; info depth 18 time 864 nodes 1798695 score cp 214 nps 2079987 pv f6e4 d3d7 f7f5 f3g5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 +Warning; PV continues after threefold repetition - move g8g7 from bk1 +Info; info depth 2 time 3 nodes 177 score cp -210 nps 50844 pv d3d7 g8g7 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move h7h6 from bk1 +Info; info depth 3 time 3 nodes 436 score cp -211 nps 119938 pv d3d7 h7h6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 4 time 4 nodes 1302 score cp -214 nps 313349 pv d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 5 time 5 nodes 3330 score cp -214 nps 631974 pv d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move h7h6 from bk1 +Info; info depth 6 time 6 nodes 5546 score cp -221 nps 861554 pv d3d7 h7h6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move h7h6 from bk1 +Info; info depth 7 time 7 nodes 7818 score cp -215 nps 1029741 pv d3d7 h7h6 e3h6 e4f2 d1f1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 8 time 9 nodes 11837 score cp -214 nps 1247746 pv d3d7 e4f2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 9 time 11 nodes 16141 score cp -201 nps 1409312 pv d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 10 time 13 nodes 20247 score cp -214 nps 1544417 pv d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b3 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move e4f2 from bk1 +Info; info depth 11 time 15 nodes 25863 score cp -214 nps 1682956 pv d3d7 e4f2 e3f2 e8e2 c2c3 c7e6 c3b3 e2f2 d7d2 e6c5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 12 time 78 nodes 137536 score cp -210 nps 1746706 pv d3d7 b6b5 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 13 time 91 nodes 164066 score cp -214 nps 1802115 pv d3d7 b6b5 a4b5 c7b5 d1f1 e4f6 d7b7 c8b8 b7b8 e8b8 f1a1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 14 time 135 nodes 250185 score cp -212 nps 1844593 pv d3d7 b6b5 a4b5 c7b5 d1e1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 15 time 246 nodes 472568 score cp -205 nps 1914740 pv d3d7 b6b5 a4b5 c7b5 d1e1 a7a5 d7d5 b5a3 c2d3 a3c4 e3d4 f7f5 d4c3 e4f2 d3c2 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 16 time 687 nodes 1349892 score cp -224 nps 1962629 pv d3d7 b6b5 a4b5 c7b5 d1f1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 17 time 1144 nodes 2305571 score cp -228 nps 2014278 pv d3d7 b6b5 d1b1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Warning; PV continues after threefold repetition - move b6b5 from bk1 +Info; info depth 18 time 1144 nodes 2305571 score cp -228 nps 2014222 pv d3d7 b6b5 d1b1 +Position; fen r1bq1rk1/pp3pbp/n2ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9 +Moves; d5e6 c8e6 e1c1 d8a5 d2f4 f6d7 g5h6 g7c3 b2c3 a5c3 c1b1 e6c4 e2c4 c3c4 g1f3 f8e8 f4d6 c4b4 b1c2 b4e4 c2b2 e4b4 b2c2 b4c4 c2b1 e8e6 d6d3 c4d3 d1d3 d7f6 h1d1 c5c4 d3d4 a8c8 h6e3 c4c3 b1c2 e6e8 f3e1 b7b6 e1f3 a6c7 h2h3 c7b5 d4b4 b5c7 b4d4 g8g7 d4d3 f6e4 d3d7 g7g8 a2a4 e4f6 d7d3 f6e4 d3d7 e4f6 d7d3 f6e4 +Finished game 80 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 22 - 23 - 25 [0.493] 70 +Elo difference: -4.96 +/- 66.05, LOS: 44.07 %, DrawRatio: 35.71 % +SPRT: llr -0.01 (0.3%), lbound -2.94, ubound 2.94 +Started game 90 of 200 (bk1 vs bk) +Finished game 74 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 22 - 24 - 25 [0.486] 71 +Started game 91 of 200 (bk vs bk1) +Finished game 57 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 23 - 24 - 25 [0.493] 72 +Started game 92 of 200 (bk1 vs bk) +Finished game 65 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 24 - 24 - 25 [0.500] 73 +Started game 93 of 200 (bk vs bk1) +Finished game 72 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 25 - 24 - 25 [0.507] 74 +Started game 94 of 200 (bk1 vs bk) +Finished game 85 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 26 [0.507] 75 +Started game 95 of 200 (bk vs bk1) +Finished game 71 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 25 - 24 - 27 [0.507] 76 +Started game 96 of 200 (bk1 vs bk) +Finished game 89 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 28 [0.506] 77 +Started game 97 of 200 (bk vs bk1) +Finished game 78 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 29 [0.506] 78 +Started game 98 of 200 (bk1 vs bk) +Finished game 83 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 30 [0.506] 79 +Started game 99 of 200 (bk vs bk1) +Finished game 86 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 31 [0.506] 80 +Elo difference: 4.34 +/- 60.18, LOS: 55.68 %, DrawRatio: 38.75 % +SPRT: llr 0.01 (0.2%), lbound -2.94, ubound 2.94 +Started game 100 of 200 (bk1 vs bk) +Finished game 79 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 32 [0.506] 81 +Started game 101 of 200 (bk vs bk1) +Finished game 73 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 33 [0.506] 82 +Started game 102 of 200 (bk1 vs bk) +Finished game 91 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 24 - 34 [0.506] 83 +Started game 103 of 200 (bk vs bk1) +Finished game 77 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 25 - 25 - 34 [0.500] 84 +Started game 104 of 200 (bk1 vs bk) +Finished game 90 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 25 - 25 - 35 [0.500] 85 +Started game 105 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move a7a8 from bk1 +Info; info depth 18 time 363 nodes 866405 score cp 211 nps 2384351 pv b3b7 g8h7 b7a7 f7f5 a7a8 c7d6 a8a7 d6c7 a7b7 h7g8 b7a7 g8h7 a7a8 +Position; fen rn1qkb1r/p1p2ppp/4pn2/3b4/2p5/N4NP1/P2PPPBP/R1BQ1RK1 w kq - 2 9 +Moves; a3c4 b8d7 d2d3 h7h6 d1c2 f8d6 c1b2 e8g8 e2e4 d5c4 d3c4 e6e5 c4c5 d6c5 f3e5 d7e5 b2e5 c5d6 e5b2 f6d7 e4e5 d7e5 a1e1 e5d7 g2a8 d8a8 c2e4 a8e4 e1e4 d7c5 e4c4 c5e6 b2c3 g8h7 f1d1 f8b8 g1g2 b8b7 a2a4 b7b3 d1d5 b3b1 c3d2 b1b6 a4a5 b6a6 h2h4 c7c5 h4h5 a6c6 d2e3 a7a6 d5d3 d6c7 e3d2 c7d6 d3b3 d6c7 d2c3 h7g8 +Finished game 76 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 26 - 25 - 35 [0.506] 86 +Started game 106 of 200 (bk1 vs bk) +Finished game 99 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 26 - 25 - 36 [0.506] 87 +Started game 107 of 200 (bk vs bk1) +Finished game 82 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 26 - 26 - 36 [0.500] 88 +Started game 108 of 200 (bk1 vs bk) +Finished game 98 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 26 - 27 - 36 [0.494] 89 +Started game 109 of 200 (bk vs bk1) +Finished game 92 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 26 - 28 - 36 [0.489] 90 +Elo difference: -7.72 +/- 56.09, LOS: 39.27 %, DrawRatio: 40.00 % +SPRT: llr -0.02 (0.6%), lbound -2.94, ubound 2.94 +Started game 110 of 200 (bk1 vs bk) +Finished game 81 (bk vs bk1): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 26 - 28 - 37 [0.489] 91 +Started game 111 of 200 (bk vs bk1) +Finished game 94 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 26 - 28 - 38 [0.489] 92 +Started game 112 of 200 (bk1 vs bk) +Finished game 97 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 27 - 28 - 38 [0.495] 93 +Started game 113 of 200 (bk vs bk1) +Finished game 93 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 27 - 29 - 38 [0.489] 94 +Started game 114 of 200 (bk1 vs bk) +Finished game 88 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 27 - 30 - 38 [0.484] 95 +Started game 115 of 200 (bk vs bk1) +Finished game 103 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 28 - 30 - 38 [0.490] 96 +Started game 116 of 200 (bk1 vs bk) +Finished game 84 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 29 - 30 - 38 [0.495] 97 +Started game 117 of 200 (bk vs bk1) +Finished game 104 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 30 - 39 [0.495] 98 +Started game 118 of 200 (bk1 vs bk) +Finished game 95 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 30 - 40 [0.495] 99 +Started game 119 of 200 (bk vs bk1) +Finished game 101 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 29 - 30 - 41 [0.495] 100 +Elo difference: -3.47 +/- 52.71, LOS: 44.82 %, DrawRatio: 41.00 % +SPRT: llr -0.01 (0.3%), lbound -2.94, ubound 2.94 +Started game 120 of 200 (bk1 vs bk) +Finished game 105 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 30 - 42 [0.495] 101 +Started game 121 of 200 (bk vs bk1) +Finished game 109 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 30 - 43 [0.495] 102 +Started game 122 of 200 (bk1 vs bk) +Finished game 113 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 30 - 44 [0.495] 103 +Started game 123 of 200 (bk vs bk1) +Finished game 100 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 29 - 31 - 44 [0.490] 104 +Started game 124 of 200 (bk1 vs bk) +Finished game 107 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 31 - 45 [0.490] 105 +Started game 125 of 200 (bk vs bk1) +Finished game 110 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 31 - 46 [0.491] 106 +Started game 126 of 200 (bk1 vs bk) +Finished game 102 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 29 - 32 - 46 [0.486] 107 +Started game 127 of 200 (bk vs bk1) +Finished game 122 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 29 - 32 - 47 [0.486] 108 +Started game 128 of 200 (bk1 vs bk) +Finished game 114 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 29 - 33 - 47 [0.482] 109 +Started game 129 of 200 (bk vs bk1) +Finished game 106 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 29 - 34 - 47 [0.477] 110 +Elo difference: -15.80 +/- 49.48, LOS: 26.40 %, DrawRatio: 42.73 % +SPRT: llr -0.04 (1.4%), lbound -2.94, ubound 2.94 +Started game 130 of 200 (bk1 vs bk) +Finished game 96 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 30 - 34 - 47 [0.482] 111 +Started game 131 of 200 (bk vs bk1) +Finished game 115 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 30 - 34 - 48 [0.482] 112 +Started game 132 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move e1e2 from bk +Info; info depth 16 time 574 nodes 1124909 score cp -52 nps 1959714 pv d1c1 g5g4 f1e1 h7h5 e1e2 d4d2 e2e1 d2d4 c3b1 f7g7 b1c3 g7f7 e1e2 +Position; fen r1bqkb1r/pp1pp2p/2n2pp1/8/3NP3/2N3n1/PPP2PPP/R2QKB1R w KQkq - 0 9 +Moves; h2g3 f8g7 f1c4 d8a5 d4e2 e7e6 e1g1 e8g8 c4d3 c6e5 a1b1 d7d6 e2f4 e5d3 d1d3 f8d8 b1e1 a5c5 d3b5 g6g5 b5c5 d6c5 f4h5 c8d7 e4e5 f6f5 h5g7 g8g7 e1d1 d7c6 a2a4 g7f7 a4a5 d8d4 b2b3 a8d8 +Finished game 111 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 31 - 34 - 48 [0.487] 113 +Started game 133 of 200 (bk vs bk1) +Finished game 129 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 31 - 34 - 49 [0.487] 114 +Started game 134 of 200 (bk1 vs bk) +Finished game 116 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 32 - 34 - 49 [0.491] 115 +Started game 135 of 200 (bk vs bk1) +Finished game 108 (bk1 vs bk): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 32 - 34 - 50 [0.491] 116 +Started game 136 of 200 (bk1 vs bk) +Finished game 130 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 32 - 34 - 51 [0.491] 117 +Started game 137 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move c4e6 from bk +Info; info depth 16 time 348 nodes 683134 score cp 137 nps 1960340 pv c4e5 h8d8 f1c4 a7a5 c4b3 c5b6 b3c4 b6c5 c4b3 c5b6 b3c4 b6c5 c4e6 +Position; fen rnbq1k1r/pp2nppp/3Np3/3pP3/3p4/8/PPPQ1PPP/R3KBNR w KQ - 2 9 +Moves; e1c1 e7g6 f2f4 f8g8 h2h4 b8c6 h4h5 g6h4 g1e2 h4f5 d6f5 e6f5 e2d4 c8e6 h5h6 g7g6 c1b1 d8b6 d4b5 a8f8 b5d6 f7f6 e5f6 f8f6 d2e1 g8f8 a2a3 d5d4 h1g1 f8e7 d6c4 b6c5 +Warning; PV continues after threefold repetition - move c4d3 from bk +Info; info depth 13 time 207 nodes 411833 score cp 145 nps 1985787 pv c4b3 c5b5 b3c4 b5c5 c4b3 c5b5 b3c4 b5c5 c4d3 +Position; fen rnbq1k1r/pp2nppp/3Np3/3pP3/3p4/8/PPPQ1PPP/R3KBNR w KQ - 2 9 +Moves; e1c1 e7g6 f2f4 f8g8 h2h4 b8c6 h4h5 g6h4 g1e2 h4f5 d6f5 e6f5 e2d4 c8e6 h5h6 g7g6 c1b1 d8b6 d4b5 a8f8 b5d6 f7f6 e5f6 f8f6 d2e1 g8f8 a2a3 d5d4 h1g1 f8e7 d6c4 b6c5 c4e5 h8d8 f1c4 a7a5 +Finished game 117 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 32 - 34 - 52 [0.492] 118 +Started game 138 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move c4e6 from bk1 +Info; info depth 8 time 12 nodes 17512 score cp -135 nps 1452073 pv c5b5 b3c4 b5c5 c4b3 c5b5 b3c4 b5c5 c4e6 +Position; fen rnbq1k1r/pp2nppp/3Np3/3pP3/3p4/8/PPPQ1PPP/R3KBNR w KQ - 2 9 +Moves; e1c1 e7g6 f2f4 f8g8 h2h4 b8c6 h4h5 g6h4 g1e2 h4f5 d6f5 e6f5 e2d4 c8e6 h5h6 g7g6 c1b1 d8b6 d4b5 a8f8 b5d6 f7f6 e5f6 f8f6 d2e1 g8f8 a2a3 d5d4 h1g1 f8e7 d6c4 b6c5 c4e5 h8d8 f1c4 a7a5 c4b3 +Finished game 121 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 33 - 34 - 52 [0.496] 119 +Started game 139 of 200 (bk vs bk1) +Finished game 119 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 34 - 34 - 52 [0.500] 120 +Elo difference: -0.00 +/- 47.08, LOS: 50.00 %, DrawRatio: 43.33 % +SPRT: llr -0.00 (0.1%), lbound -2.94, ubound 2.94 +Started game 140 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move f3e5 from bk1 +Info; info depth 14 time 339 nodes 665629 score cp 151 nps 1959307 pv b7b5 d6g6 b5b7 g6d6 b7b5 d6g6 b5b7 g6d6 f3e5 +Position; fen 2kr1b1r/pppq1ppp/2n2n2/3p4/3P1Bb1/2PB1N2/PP3PPP/RN1Q1RK1 w - - 7 9 +Moves; b1d2 f8d6 f4d6 d7d6 b2b4 a7a6 h2h3 g4h5 a2a4 h8f8 b4b5 c6e7 b5a6 b7a6 d1b3 h5g6 a1b1 g6d3 b3b7 c8d7 f3e5 d7e8 e5d3 f8g8 d3c5 f6h5 b7a6 h5f4 b1b7 e7c6 d2f3 e8f8 f1e1 g7g5 +Finished game 128 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 34 - 34 - 53 [0.500] 121 +Started game 141 of 200 (bk vs bk1) +Finished game 118 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 34 - 35 - 53 [0.496] 122 +Started game 142 of 200 (bk1 vs bk) +Finished game 120 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 35 - 35 - 53 [0.500] 123 +Started game 143 of 200 (bk vs bk1) +Finished game 112 (bk1 vs bk): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 35 - 35 - 54 [0.500] 124 +Started game 144 of 200 (bk1 vs bk) +Finished game 87 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 35 - 35 - 55 [0.500] 125 +Started game 145 of 200 (bk vs bk1) +Finished game 123 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 35 - 36 - 55 [0.496] 126 +Started game 146 of 200 (bk1 vs bk) +Finished game 131 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 36 - 36 - 55 [0.500] 127 +Started game 147 of 200 (bk vs bk1) +Finished game 124 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 36 - 36 - 56 [0.500] 128 +Started game 148 of 200 (bk1 vs bk) +Finished game 125 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 37 - 36 - 56 [0.504] 129 +Started game 149 of 200 (bk vs bk1) +Finished game 127 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 37 - 36 - 57 [0.504] 130 +Elo difference: 2.67 +/- 45.01, LOS: 54.66 %, DrawRatio: 43.85 % +SPRT: llr 0.01 (0.2%), lbound -2.94, ubound 2.94 +Started game 150 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move b1c1 from bk +Info; info depth 15 time 172 nodes 367597 score cp -239 nps 2135623 pv h4f4 g6g2 g7g5 d1d2 f4h4 d2d1 h4f4 d1d2 f4h4 d2d1 h4f4 b1c1 +Position; fen rn2kbnr/ppq2ppp/2p1p1b1/8/2BP2P1/2N4N/PPPB1P1P/R2QK2R w KQkq - 3 9 +Moves; h3f4 f8d6 d1f3 b8d7 e1c1 d7b6 c4b3 b6d5 f4g6 h7g6 c3e4 d6h2 c2c4 d5f6 e4g3 h8h4 d2f4 c7b6 f4g5 h4g4 g5f6 g8f6 h1h2 e8c8 g3e2 d8g8 h2g2 g4h4 c4c5 b6d8 e2f4 d8d7 f3e3 f6d5 f4d5 c6d5 c1b1 d7c7 g2g6 c7f4 e3f4 +Warning; PV continues after threefold repetition - move b1c2 from bk +Info; info depth 16 time 429 nodes 909785 score cp -240 nps 2119593 pv h4f4 g6g2 g7g5 d1d2 f4h4 d2d1 h4f4 d1d2 f4h4 d2d1 h4f4 b1c2 +Position; fen rn2kbnr/ppq2ppp/2p1p1b1/8/2BP2P1/2N4N/PPPB1P1P/R2QK2R w KQkq - 3 9 +Moves; h3f4 f8d6 d1f3 b8d7 e1c1 d7b6 c4b3 b6d5 f4g6 h7g6 c3e4 d6h2 c2c4 d5f6 e4g3 h8h4 d2f4 c7b6 f4g5 h4g4 g5f6 g8f6 h1h2 e8c8 g3e2 d8g8 h2g2 g4h4 c4c5 b6d8 e2f4 d8d7 f3e3 f6d5 f4d5 c6d5 c1b1 d7c7 g2g6 c7f4 e3f4 +Finished game 140 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 37 - 36 - 58 [0.504] 131 +Started game 151 of 200 (bk vs bk1) +Finished game 142 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 37 - 37 - 58 [0.500] 132 +Started game 152 of 200 (bk1 vs bk) +Finished game 136 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 37 - 37 - 59 [0.500] 133 +Started game 153 of 200 (bk vs bk1) +Finished game 138 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 37 - 38 - 59 [0.496] 134 +Started game 154 of 200 (bk1 vs bk) +Finished game 135 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 38 - 38 - 59 [0.500] 135 +Started game 155 of 200 (bk vs bk1) +Finished game 133 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 38 - 38 - 60 [0.500] 136 +Started game 156 of 200 (bk1 vs bk) +Finished game 132 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 38 - 39 - 60 [0.496] 137 +Started game 157 of 200 (bk vs bk1) +Finished game 145 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 38 - 39 - 61 [0.496] 138 +Started game 158 of 200 (bk1 vs bk) +Finished game 139 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 38 - 39 - 62 [0.496] 139 +Started game 159 of 200 (bk vs bk1) +Finished game 126 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 38 - 40 - 62 [0.493] 140 +Elo difference: -4.96 +/- 43.18, LOS: 41.04 %, DrawRatio: 44.29 % +SPRT: llr -0.02 (0.6%), lbound -2.94, ubound 2.94 +Started game 160 of 200 (bk1 vs bk) +Finished game 147 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 38 - 41 - 62 [0.489] 141 +Started game 161 of 200 (bk vs bk1) +Finished game 144 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 38 - 41 - 63 [0.489] 142 +Started game 162 of 200 (bk1 vs bk) +Finished game 146 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 38 - 42 - 63 [0.486] 143 +Started game 163 of 200 (bk vs bk1) +Finished game 137 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 38 - 43 - 63 [0.483] 144 +Started game 164 of 200 (bk1 vs bk) +Finished game 134 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 38 - 43 - 64 [0.483] 145 +Started game 165 of 200 (bk vs bk1) +Finished game 143 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 39 - 43 - 64 [0.486] 146 +Started game 166 of 200 (bk1 vs bk) +Finished game 155 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 40 - 43 - 64 [0.490] 147 +Started game 167 of 200 (bk vs bk1) +Finished game 148 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 40 - 44 - 64 [0.486] 148 +Started game 168 of 200 (bk1 vs bk) +Finished game 158 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 40 - 45 - 64 [0.483] 149 +Started game 169 of 200 (bk vs bk1) +Warning; PV continues after threefold repetition - move h2h4 from bk +Info; info depth 18 time 97 nodes 391728 score cp 70 nps 4013236 pv g4f4 f7e6 f4f3 b7b5 f3e3 h6h7 e3f3 h7h6 f3e3 h6h7 e3f3 h7h6 h2h4 +Position; fen rnbq1rk1/pppn1pbp/3p2p1/8/2PNP3/2N5/PP2BPPP/R1BQ1RK1 w - - 1 9 +Moves; c1e3 f8e8 d1c2 b8c6 a1d1 c6d4 e3d4 g7d4 d1d4 d7c5 f2f4 d8h4 g2g3 h4f6 f1d1 c8h3 c3d5 f6d8 f4f5 g6g5 b2b4 c5d7 c4c5 a8c8 c2d2 h7h6 c5d6 c7d6 g1h1 d7f6 d5f6 d8f6 g3g4 h6h5 g4h5 g5g4 d1g1 c8c2 d2c2 f6d4 e2g4 h3g4 g1g4 g8h7 h1g2 d4b4 f5f6 e8g8 e4e5 h7h8 g4g8 h8g8 c2c8 g8h7 c8f5 h7h6 e5e6 b4d2 g2f3 d2d1 f3f2 d1d4 f2f3 d4c3 f3g4 c3c4 f5f4 c4f4 +Warning; PV continues after threefold repetition - move f3g4 from bk +Info; info depth 19 time 148 nodes 610114 score cp 79 nps 4100181 pv g4f4 f7e6 f4f3 b7b5 f3e3 h6h7 e3f3 h7h6 f3e3 h6h7 e3f3 h7h6 f3g4 +Position; fen rnbq1rk1/pppn1pbp/3p2p1/8/2PNP3/2N5/PP2BPPP/R1BQ1RK1 w - - 1 9 +Moves; c1e3 f8e8 d1c2 b8c6 a1d1 c6d4 e3d4 g7d4 d1d4 d7c5 f2f4 d8h4 g2g3 h4f6 f1d1 c8h3 c3d5 f6d8 f4f5 g6g5 b2b4 c5d7 c4c5 a8c8 c2d2 h7h6 c5d6 c7d6 g1h1 d7f6 d5f6 d8f6 g3g4 h6h5 g4h5 g5g4 d1g1 c8c2 d2c2 f6d4 e2g4 h3g4 g1g4 g8h7 h1g2 d4b4 f5f6 e8g8 e4e5 h7h8 g4g8 h8g8 c2c8 g8h7 c8f5 h7h6 e5e6 b4d2 g2f3 d2d1 f3f2 d1d4 f2f3 d4c3 f3g4 c3c4 f5f4 c4f4 +Finished game 150 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 40 - 46 - 64 [0.480] 150 +Elo difference: -13.90 +/- 42.32, LOS: 25.85 %, DrawRatio: 42.67 % +SPRT: llr -0.05 (1.6%), lbound -2.94, ubound 2.94 +Started game 170 of 200 (bk1 vs bk) +Finished game 156 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 40 - 47 - 64 [0.477] 151 +Started game 171 of 200 (bk vs bk1) +Finished game 151 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 41 - 47 - 64 [0.480] 152 +Started game 172 of 200 (bk1 vs bk) +Finished game 149 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 41 - 47 - 65 [0.480] 153 +Started game 173 of 200 (bk vs bk1) +Finished game 153 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 41 - 48 - 65 [0.477] 154 +Started game 174 of 200 (bk1 vs bk) +Finished game 164 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 41 - 48 - 66 [0.477] 155 +Started game 175 of 200 (bk vs bk1) +Finished game 154 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 41 - 48 - 67 [0.478] 156 +Started game 176 of 200 (bk1 vs bk) +Finished game 165 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 41 - 48 - 68 [0.478] 157 +Started game 177 of 200 (bk vs bk1) +Finished game 160 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 41 - 48 - 69 [0.478] 158 +Started game 178 of 200 (bk1 vs bk) +Finished game 161 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 41 - 48 - 70 [0.478] 159 +Started game 179 of 200 (bk vs bk1) +Finished game 166 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 41 - 49 - 70 [0.475] 160 +Elo difference: -17.39 +/- 40.57, LOS: 19.90 %, DrawRatio: 43.75 % +SPRT: llr -0.06 (2.2%), lbound -2.94, ubound 2.94 +Started game 180 of 200 (bk1 vs bk) +Finished game 157 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 41 - 49 - 71 [0.475] 161 +Started game 181 of 200 (bk vs bk1) +Finished game 162 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 41 - 50 - 71 [0.472] 162 +Started game 182 of 200 (bk1 vs bk) +Finished game 174 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 41 - 50 - 72 [0.472] 163 +Started game 183 of 200 (bk vs bk1) +Finished game 141 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 41 - 51 - 72 [0.470] 164 +Started game 184 of 200 (bk1 vs bk) +Finished game 170 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 41 - 52 - 72 [0.467] 165 +Started game 185 of 200 (bk vs bk1) +Finished game 167 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 42 - 52 - 72 [0.470] 166 +Started game 186 of 200 (bk1 vs bk) +Finished game 159 (bk vs bk1): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 42 - 52 - 73 [0.470] 167 +Started game 187 of 200 (bk vs bk1) +Finished game 168 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 42 - 53 - 73 [0.467] 168 +Started game 188 of 200 (bk1 vs bk) +Finished game 172 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 42 - 54 - 73 [0.464] 169 +Started game 189 of 200 (bk vs bk1) +Finished game 163 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 43 - 54 - 73 [0.468] 170 +Elo difference: -22.51 +/- 39.64, LOS: 13.11 %, DrawRatio: 42.94 % +SPRT: llr -0.09 (2.9%), lbound -2.94, ubound 2.94 +Started game 190 of 200 (bk1 vs bk) +Finished game 178 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 43 - 55 - 73 [0.465] 171 +Started game 191 of 200 (bk vs bk1) +Finished game 152 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 43 - 55 - 74 [0.465] 172 +Started game 192 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 11 time 70 nodes 120778 score cp -79 nps 1714242 pv g5h5 b5a6 h5g5 a6b5 g5h5 b5b7 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 12 time 95 nodes 169463 score cp -79 nps 1775357 pv g5h5 b5a6 h5g5 a6b5 g5h5 b5b7 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 13 time 162 nodes 292692 score cp -83 nps 1806297 pv g5h5 b5a6 h5g5 a6b5 g5h5 e5c6 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 14 time 295 nodes 540579 score cp -79 nps 1827714 pv g5h5 b5a6 h5g5 a6b5 g5h5 b5b7 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 15 time 492 nodes 896786 score cp -80 nps 1820115 pv g5h5 b5a6 h5g5 a6b5 g5h5 h3h4 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5h5 from bk1 +Info; info depth 16 time 1378 nodes 2536983 score cp -80 nps 1840778 pv g5h5 b5a6 h5g5 a6b5 g5h5 h3h4 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 +Warning; PV continues after threefold repetition - move g5f6 from bk +Info; info depth 6 time 10 nodes 9637 score cp 85 nps 956678 pv a6b5 g5f6 e5c6 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5f6 from bk +Info; info depth 7 time 14 nodes 17210 score cp 85 nps 1198634 pv a6b5 g5f6 h3h4 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5h5 from bk +Info; info depth 8 time 25 nodes 36844 score cp 85 nps 1455243 pv a6b5 g5h5 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5h5 from bk +Info; info depth 9 time 30 nodes 46023 score cp 85 nps 1522700 pv a6b5 g5h5 e5c6 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5h5 from bk +Info; info depth 10 time 53 nodes 86725 score cp 83 nps 1623012 pv a6b5 g5h5 e5c6 c7g3 f2g3 h5g5 g3g4 h6h5 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5h5 from bk +Info; info depth 11 time 106 nodes 180978 score cp 85 nps 1699485 pv a6b5 g5h5 h3h4 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5h5 from bk +Info; info depth 12 time 237 nodes 419654 score cp 84 nps 1766262 pv a6b5 g5h5 g1h1 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5f5 from bk +Info; info depth 13 time 640 nodes 1188868 score cp 79 nps 1856922 pv a6b5 g5f5 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5f5 from bk +Info; info depth 14 time 751 nodes 1392632 score cp 79 nps 1854321 pv a6b5 g5f5 h3h4 g8h7 b5a6 h7g8 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Warning; PV continues after threefold repetition - move g5f5 from bk +Info; info depth 15 time 751 nodes 1392632 score cp 79 nps 1854265 pv a6b5 g5f5 h3h4 g8h7 b5a6 h7g8 +Position; fen r1bqk2r/ppp2ppp/1b3n2/3pp3/4P3/1BPP4/PP3PPP/RNBQ1RK1 w kq - 1 9 +Moves; e4d5 f6d5 f1e1 e8g8 e1e5 c7c6 d3d4 h7h6 b3d5 c6d5 b1d2 c8e6 d2f3 a8c8 e5e1 b6c7 c1e3 f8e8 f3e5 d8h4 h2h3 a7a5 d1f3 b7b5 e3f4 b5b4 a1c1 c7b6 f4g3 h4g5 f3d3 b4c3 b2c3 b6c7 d3b5 g5h5 b5a6 h5f5 a6b5 f5g5 a2a4 g5f5 b5a6 f5g5 a6b5 g5h5 b5a6 h5g5 +Finished game 183 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 43 - 55 - 75 [0.465] 173 +Started game 193 of 200 (bk vs bk1) +Finished game 177 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 43 - 55 - 76 [0.466] 174 +Started game 194 of 200 (bk1 vs bk) +Warning; PV continues after threefold repetition - move e2d2 from bk1 +Info; info depth 17 time 210 nodes 522024 score cp -39 nps 2484091 pv d1c1 c8a8 c4a4 g7g5 f4f5 g8g7 c2c4 g7f6 a4a3 f6g7 a3a4 g7f6 a4a3 f6g7 a3a4 e2d2 +Position; fen r2qkbnr/1p1b1ppp/p2p4/2p1n3/3NP3/1BN4P/PPP2PP1/R1BQK2R w KQkq - 0 9 +Moves; d4f3 g8f6 e1g1 a8c8 b3d5 f6d5 c3d5 d7e6 b2b3 e5f3 d1f3 e6d5 e4d5 f8e7 c1b2 e8g8 f1e1 e7g5 a1d1 b7b5 a2a3 a6a5 f3f5 b5b4 g2g3 b4a3 b2a3 g5f6 f5f4 d8d7 g1h2 f6e5 f4g4 d7g4 h3g4 e5c3 e1e4 f8e8 e4c4 c3e1 f2f3 e8e2 h2h3 e1d2 f3f4 h7h6 a3c1 d2c1 +Warning; PV continues after threefold repetition - move e2d2 from bk1 +Info; info depth 19 time 865 nodes 2037906 score cp -38 nps 2355480 pv d1c1 c8a8 c4a4 g7g5 f4f5 g8g7 c2c4 g7f6 a4a3 f6g7 a3a4 g7f6 a4a3 f6g7 a3a4 e2d2 +Position; fen r2qkbnr/1p1b1ppp/p2p4/2p1n3/3NP3/1BN4P/PPP2PP1/R1BQK2R w KQkq - 0 9 +Moves; d4f3 g8f6 e1g1 a8c8 b3d5 f6d5 c3d5 d7e6 b2b3 e5f3 d1f3 e6d5 e4d5 f8e7 c1b2 e8g8 f1e1 e7g5 a1d1 b7b5 a2a3 a6a5 f3f5 b5b4 g2g3 b4a3 b2a3 g5f6 f5f4 d8d7 g1h2 f6e5 f4g4 d7g4 h3g4 e5c3 e1e4 f8e8 e4c4 c3e1 f2f3 e8e2 h2h3 e1d2 f3f4 h7h6 a3c1 d2c1 +Warning; PV continues after threefold repetition - move e2d2 from bk1 +Info; info depth 20 time 865 nodes 2037906 score cp -38 nps 2355398 pv d1c1 c8a8 c4a4 g7g5 f4f5 g8g7 c2c4 g7f6 a4a3 f6g7 a3a4 g7f6 a4a3 f6g7 a3a4 e2d2 +Position; fen r2qkbnr/1p1b1ppp/p2p4/2p1n3/3NP3/1BN4P/PPP2PP1/R1BQK2R w KQkq - 0 9 +Moves; d4f3 g8f6 e1g1 a8c8 b3d5 f6d5 c3d5 d7e6 b2b3 e5f3 d1f3 e6d5 e4d5 f8e7 c1b2 e8g8 f1e1 e7g5 a1d1 b7b5 a2a3 a6a5 f3f5 b5b4 g2g3 b4a3 b2a3 g5f6 f5f4 d8d7 g1h2 f6e5 f4g4 d7g4 h3g4 e5c3 e1e4 f8e8 e4c4 c3e1 f2f3 e8e2 h2h3 e1d2 f3f4 h7h6 a3c1 d2c1 +Finished game 176 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 43 - 56 - 76 [0.463] 175 +Started game 195 of 200 (bk vs bk1) +Finished game 173 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 43 - 56 - 77 [0.463] 176 +Started game 196 of 200 (bk1 vs bk) +Finished game 191 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 43 - 56 - 78 [0.463] 177 +Started game 197 of 200 (bk vs bk1) +Finished game 175 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 44 - 56 - 78 [0.466] 178 +Started game 198 of 200 (bk1 vs bk) +Finished game 194 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 45 - 56 - 78 [0.469] 179 +Started game 199 of 200 (bk vs bk1) +Finished game 179 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 45 - 56 - 79 [0.469] 180 +Elo difference: -21.26 +/- 38.19, LOS: 13.61 %, DrawRatio: 43.89 % +SPRT: llr -0.09 (3.0%), lbound -2.94, ubound 2.94 +Started game 200 of 200 (bk1 vs bk) +Finished game 193 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 45 - 57 - 79 [0.467] 181 +Finished game 187 (bk vs bk1): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 45 - 57 - 80 [0.467] 182 +Finished game 181 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 46 - 57 - 80 [0.470] 183 +Finished game 185 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 46 - 58 - 80 [0.467] 184 +Finished game 189 (bk vs bk1): 1-0 {White mates} +Score of bk vs bk1: 47 - 58 - 80 [0.470] 185 +Finished game 192 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 47 - 58 - 81 [0.470] 186 +Finished game 169 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 47 - 58 - 82 [0.471] 187 +Finished game 186 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 47 - 58 - 83 [0.471] 188 +Finished game 182 (bk1 vs bk): 1-0 {White mates} +Score of bk vs bk1: 47 - 59 - 83 [0.468] 189 +Finished game 171 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 47 - 59 - 84 [0.468] 190 +Elo difference: -21.97 +/- 37.06, LOS: 12.11 %, DrawRatio: 44.21 % +SPRT: llr -0.10 (3.2%), lbound -2.94, ubound 2.94 +Finished game 188 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 48 - 59 - 84 [0.471] 191 +Finished game 196 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 49 - 59 - 84 [0.474] 192 +Finished game 180 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 49 - 59 - 85 [0.474] 193 +Finished game 184 (bk1 vs bk): 1/2-1/2 {Draw by fifty moves rule} +Score of bk vs bk1: 49 - 59 - 86 [0.474] 194 +Finished game 195 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 49 - 60 - 86 [0.472] 195 +Finished game 200 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 49 - 60 - 87 [0.472] 196 +Finished game 197 (bk vs bk1): 0-1 {Black mates} +Score of bk vs bk1: 49 - 61 - 87 [0.470] 197 +Finished game 199 (bk vs bk1): 1/2-1/2 {Draw by insufficient mating material} +Score of bk vs bk1: 49 - 61 - 88 [0.470] 198 +Finished game 190 (bk1 vs bk): 0-1 {Black mates} +Score of bk vs bk1: 50 - 61 - 88 [0.472] 199 +Finished game 198 (bk1 vs bk): 1/2-1/2 {Draw by 3-fold repetition} +Score of bk vs bk1: 50 - 61 - 89 [0.473] 200 +Elo difference: -19.13 +/- 36.01, LOS: 14.76 %, DrawRatio: 44.50 % +SPRT: llr -0.09 (3.0%), lbound -2.94, ubound 2.94 +Finished match +Total Time: 00:28:52 (hours:minutes:seconds) \ No newline at end of file From 64b81daa9019c922366fc7adb9099f435abb864d Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Wed, 28 Jan 2026 08:10:22 -0500 Subject: [PATCH 03/19] chore: add failing unit test for en passant Added failing unit test for the case where an en passant square is currently incorrectly recognized. --- chess/src/move_making.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/chess/src/move_making.rs b/chess/src/move_making.rs index b6708650..02ec36ad 100644 --- a/chess/src/move_making.rs +++ b/chess/src/move_making.rs @@ -545,6 +545,8 @@ fn get_castling_right_to_remove(us: Side, from: u8) -> u8 { #[cfg(test)] mod tests { + use std::iter::zip; + use crate::{ bitboard::Bitboard, board::Board, definitions::Squares, move_generation::MoveGenerator, move_list::MoveList, moves::MoveType, pieces::Piece, side::Side, @@ -775,4 +777,30 @@ mod tests { assert_eq!(board.side_to_move(), Side::Black); } } + + #[test] + fn no_en_passant_when_not_legal() { + const FEN: [&str; 3] = [ + "r6/2q2p1k/2P1b1pp/bB2P1n1/R2B2PN/p4P1P/P1Q4K/1R6 b - - 2 38", + "8/p2r1pK1/6p1/1kp1P1P1/2p5/2P5/8/4R3 b - - 0 43", + "`4k3/4p3/2b3b1/3P1P2/4K3/8/8/8 b - -", + ]; + + const TEST_MOVES: [&str; 3] = ["f7f5", "f7f5", "e7e5"]; + + for (fen, mv) in zip(FEN, TEST_MOVES) { + let maybe_board = Board::from_fen(fen); + assert!(maybe_board.is_ok()); + + let mut board = maybe_board.unwrap(); + println!("before move:\n{}", board); + + let result = board.make_uci_move(&mv); + assert!(result.is_ok()); + println!("after move:\n{}", board); + + // en-passant capture is not possible due to being pinned + assert!(board.en_passant_square().is_none()); + } + } } From b804ffd7d6dccbca2ec35bc7a2d3543416f240d2 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Thu, 29 Jan 2026 22:14:26 -0500 Subject: [PATCH 04/19] feat: add `iter()` to `Bitboard` bench: 1084772 --- chess/src/bitboard.rs | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/chess/src/bitboard.rs b/chess/src/bitboard.rs index b6ebf1eb..5340f076 100644 --- a/chess/src/bitboard.rs +++ b/chess/src/bitboard.rs @@ -12,7 +12,7 @@ use std::{ }, }; -use crate::square::Square; +use crate::{bitboard_helpers, square::Square}; /// Bitboard representation of a chess board. /// LSB (bit 0) is a1, MSB (bit 63) is h8. @@ -107,6 +107,22 @@ impl Bitboard { pub const fn intersects(&self, other: Bitboard) -> bool { Bitboard::new(self.as_number() & other.as_number()).number_of_occupied_squares() > 0 } + + /// Iterate over the occupied squares in the bitboard. + /// + /// Returns an iterator over the square indices (0-63) of the occupied squares. + /// Implemented using `bitboard_helpers::next_bit` to efficiently find the next set + /// using the Carry Rippler method. + pub fn iter(&self) -> impl Iterator { + let mut bitboard = *self; + std::iter::from_fn(move || { + if bitboard.data == 0 { + None + } else { + Some(bitboard_helpers::next_bit(&mut bitboard) as u8) + } + }) + } } impl PartialOrd for Bitboard { @@ -445,4 +461,23 @@ mod tests { let bb = Bitboard::filled(); assert_eq!(bb.data, u64::MAX); } + + #[test] + fn iter() { + let bb = Bitboard::new(0b10110); + let squares: Vec = bb.iter().collect(); + assert_eq!(squares, vec![1, 2, 4]); + + // Now check the default position + let bb = Bitboard::new(0xFFFF00000000FFFF); + println!("{}", bb); + let squares: Vec = bb.iter().collect(); + assert_eq!( + squares, + vec![ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63 + ] + ); + } } From 15acca0f4b5390970039a9d00e9653a685088749 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Thu, 29 Jan 2026 22:15:24 -0500 Subject: [PATCH 05/19] chore: move move_making to folder bench: 1084772 --- chess/src/board.rs | 2 ++ chess/src/{ => board}/move_making.rs | 16 +++++++++++++++- chess/src/lib.rs | 1 - 3 files changed, 17 insertions(+), 2 deletions(-) rename chess/src/{ => board}/move_making.rs (97%) diff --git a/chess/src/board.rs b/chess/src/board.rs index 6378a87b..b442c9bd 100644 --- a/chess/src/board.rs +++ b/chess/src/board.rs @@ -3,6 +3,8 @@ // GNU General Public License v3.0 or later // https://www.gnu.org/licenses/gpl-3.0-standalone.html +pub mod move_making; + use std::fmt::Display; use std::iter::zip; diff --git a/chess/src/move_making.rs b/chess/src/board/move_making.rs similarity index 97% rename from chess/src/move_making.rs rename to chess/src/board/move_making.rs index 02ec36ad..3d73675d 100644 --- a/chess/src/move_making.rs +++ b/chess/src/board/move_making.rs @@ -4,6 +4,8 @@ // https://www.gnu.org/licenses/gpl-3.0-standalone.html use crate::{ + attacks, + bitboard::Bitboard, board::Board, definitions::{CastlingAvailability, Squares}, move_generation::MoveGenerator, @@ -257,7 +259,19 @@ impl Board { } else { to + 8u8 }; - self.set_en_passant_square(Some(en_passant_square)); + // TODO: Check to see if the en passant square is a legal move for the opponent + // 1. Check if there are any enemy pawns attacking the EP square + let enemy_pawn_attacks_overlap_ep = (attacks::for_piece(Piece::Pawn, self, them) + & Bitboard::from_square(en_passant_square)) + .number_of_occupied_squares() + > 0; + + // 2. Are there checkers other than the to be captured pawn? If so EP is not legal + + // TODO: Check the other conditions + if enemy_pawn_attacks_overlap_ep { + self.set_en_passant_square(Some(en_passant_square)); + } } else { self.set_en_passant_square(None); } diff --git a/chess/src/lib.rs b/chess/src/lib.rs index cd20cd28..a0acfcf2 100644 --- a/chess/src/lib.rs +++ b/chess/src/lib.rs @@ -21,7 +21,6 @@ pub mod magics; pub mod move_generation; pub mod move_history; pub mod move_list; -pub mod move_making; pub mod moves; pub mod non_slider_piece; pub mod perft; From 304207b09239d557827cbf82bcca3ed982b05c1e Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Thu, 29 Jan 2026 22:18:48 -0500 Subject: [PATCH 06/19] chore: rename attacks::for_piece to for_piece_on_sq bench: 1084772 --- chess/src/attacks.rs | 97 ++++++++++++++++++++++++++++++- engine/src/evaluation.rs | 2 +- tools/hce-tuner/src/epd_parser.rs | 2 +- 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index d6f3477a..11a30347 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -12,6 +12,7 @@ use crate::{ attacks, bitboard::Bitboard, bitboard_helpers, + board::Board, definitions::NumberOf, file::File, magics::{BISHOP_MAGICS, ROOK_MAGICS}, @@ -478,7 +479,7 @@ pub fn knight(square: u8) -> Bitboard { /// /// # Returns /// - A [`Bitboard`] representing the possible attacks of piece on the given square with the given occupancy. -pub fn for_piece(piece: Piece, square: u8, occupancy: Bitboard, side: Side) -> Bitboard { +pub fn for_piece_on_square(piece: Piece, square: u8, occupancy: Bitboard, side: Side) -> Bitboard { match piece { Piece::Bishop => attacks::bishop(square, occupancy), Piece::King => attacks::king(square), @@ -489,14 +490,56 @@ pub fn for_piece(piece: Piece, square: u8, occupancy: Bitboard, side: Side) -> B } } +/// Get attack bitboard for all pieces of a given type on the board for the given side. +/// +/// # Arguments +/// - `piece` - The [`Piece`] to get attacks for. +/// - `board` - The current [`Board`]. +/// - `side` - The side to get attacks for. +/// +/// # Returns +/// - A [`Bitboard`] representing the possible attacks of all pieces of the given type for the given side. +pub fn for_piece(piece: Piece, board: &Board, side: Side) -> Bitboard { + let mut attacks_bb = Bitboard::default(); + let occ = board.all_pieces(); + let piece_bb = board.piece_bitboard(piece, side); + for square in piece_bb.iter() { + attacks_bb |= for_piece_on_square(piece, square, occ, side); + } + + attacks_bb +} + +/// Get all pieces that are blocking the king from being in check. +/// +/// # Arguments +/// - `board` - The current [`Board`]. +/// - `side` - The side to check for blockers. +/// +/// # Returns +/// - A [`Bitboard`] representing all the pieces that are blocking the king from being in check. +pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { + let king_square = board.king_square(side); + let occupancy = board.all_pieces(); + + // Get attacks from king square as if it were a queen (to cover all directions) + let attacks_from_king = attacks::queen(king_square, Bitboard::default()); + let potential_attackers = attacks_from_king & board.pieces(Side::opposite(side)); + + Default::default() +} + #[cfg(test)] mod tests { use crate::{ attacks::{self, BISHOP_ATTACKS, ROOK_ATTACKS}, bitboard::Bitboard, + board::Board, definitions::NumberOf, magics::{BISHOP_MAGICS, ROOK_MAGICS}, move_generation::MoveGenerator, + pieces::Piece, + side::Side, }; const EXPECTED_ORTHOGONAL_ATTACKS: [u64; NumberOf::SQUARES] = [ @@ -1057,4 +1100,56 @@ mod tests { ); } } + + #[test] + fn test_attacks_for_piece_on_square() { + let board = Board::default(); + + for sq in 0..NumberOf::SQUARES as u8 { + for piece in Piece::iter() { + let occ = board.all_pieces(); + let side = Side::White; + let attacks = attacks::for_piece_on_square(piece, sq, occ, side); + let expected_attacks = match piece { + Piece::Bishop => attacks::bishop(sq, occ), + Piece::King => attacks::king(sq), + Piece::Knight => attacks::knight(sq), + Piece::Pawn => attacks::pawn(sq, side), + Piece::Queen => attacks::queen(sq, occ), + Piece::Rook => attacks::rook(sq, occ), + }; + + assert_eq!( + attacks, expected_attacks, + "Mismatch for piece {:?} on square {}", + piece, sq + ); + } + } + } + + #[test] + fn test_attacks_for_piece() { + let board = Board::default(); + + for piece in Piece::iter() { + for side in Side::iter() { + let attacks = attacks::for_piece(piece, &board, side); + let mut expected_attacks = Bitboard::default(); + let piece_bb = board.piece_bitboard(piece, side); + let occ = board.all_pieces(); + for square in piece_bb.iter() { + expected_attacks |= attacks::for_piece_on_square(piece, square, occ, side); + } + + println!("{}", attacks); + + assert_eq!( + attacks, expected_attacks, + "Mismatch for piece {:?} for side {:?}", + piece, side + ); + } + } + } } diff --git a/engine/src/evaluation.rs b/engine/src/evaluation.rs index 9dbfbfb4..5b73b428 100644 --- a/engine/src/evaluation.rs +++ b/engine/src/evaluation.rs @@ -147,7 +147,7 @@ impl> Eval for Evaluation 0 { let sq = bitboard_helpers::next_bit(&mut piece_bb); - let piece_attacks = attacks::for_piece(piece, sq as u8, occ, them); + let piece_attacks = attacks::for_piece_on_square(piece, sq as u8, occ, them); let overlap = piece_attacks & king_ring; let overlap_cnt = overlap.number_of_occupied_squares(); diff --git a/tools/hce-tuner/src/epd_parser.rs b/tools/hce-tuner/src/epd_parser.rs index 69bf503c..53367016 100644 --- a/tools/hce-tuner/src/epd_parser.rs +++ b/tools/hce-tuner/src/epd_parser.rs @@ -170,7 +170,7 @@ fn parse_epd_line(line: &str) -> Result { while piece_bb.as_number() > 0 { let sq = bitboard_helpers::next_bit(&mut piece_bb); let piece_attacks = - attacks::for_piece(piece, sq as u8, board.all_pieces(), opposite); + attacks::for_piece_on_square(piece, sq as u8, board.all_pieces(), opposite); let overlap = piece_attacks & king_ring; if overlap.number_of_occupied_squares() > 0 { From c36551412a6284d88ece41fa1879fe1b5a536619 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Wed, 4 Feb 2026 22:42:26 -0500 Subject: [PATCH 07/19] feat: add more_than_one to bitboard bench: 1015937 --- chess/src/bitboard.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/chess/src/bitboard.rs b/chess/src/bitboard.rs index 5340f076..3c025932 100644 --- a/chess/src/bitboard.rs +++ b/chess/src/bitboard.rs @@ -123,6 +123,14 @@ impl Bitboard { } }) } + + /// Check if more than one bit is set in the bitboard. + /// + /// # Returns + /// - `bool` - True if more than one bit is set, false otherwise. + pub fn more_than_one(&self) -> bool { + self.data & (self.data.saturating_sub(1)) != 0 + } } impl PartialOrd for Bitboard { @@ -480,4 +488,16 @@ mod tests { ] ); } + + #[test] + fn more_than_one() { + let bb = Bitboard::new(0b10110); + assert!(bb.more_than_one()); + + let bb2 = Bitboard::new(0b000001); + assert!(!bb2.more_than_one()); + + let bb3 = Bitboard::new(0b000000); + assert!(!bb3.more_than_one()); + } } From 58d5b6f700120f5f6905432abdbc7db97c269e68 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Thu, 5 Feb 2026 23:07:17 -0500 Subject: [PATCH 08/19] wip: fixes for checking if en passant is a legal move bench: 1015937 --- chess/src/attacks.rs | 87 ++++++++++++++++++++++++++++++---- chess/src/board/move_making.rs | 58 ++++++++++++++++++----- 2 files changed, 126 insertions(+), 19 deletions(-) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index 0da4f7f9..1d7f52f2 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -17,6 +17,7 @@ use crate::{ file::File, magics::{BISHOP_MAGICS, ROOK_MAGICS}, pieces::Piece, + rays, side::Side, }; @@ -499,12 +500,11 @@ pub fn for_piece_on_square(piece: Piece, square: u8, occupancy: Bitboard, side: /// /// # Returns /// - A [`Bitboard`] representing the possible attacks of all pieces of the given type for the given side. -pub fn for_piece(piece: Piece, board: &Board, side: Side) -> Bitboard { +pub fn for_piece(piece: Piece, board: &Board, side: Side, occupancy: Bitboard) -> Bitboard { let mut attacks_bb = Bitboard::default(); - let occ = board.all_pieces(); let piece_bb = board.piece_bitboard(piece, side); for square in piece_bb.iter() { - attacks_bb |= for_piece_on_square(piece, square, occ, side); + attacks_bb |= for_piece_on_square(piece, square, occupancy, side); } attacks_bb @@ -520,13 +520,64 @@ pub fn for_piece(piece: Piece, board: &Board, side: Side) -> Bitboard { /// - A [`Bitboard`] representing all the pieces that are blocking the king from being in check. pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { let king_square = board.king_square(side); - let occupancy = board.all_pieces(); + let mut blockers = Bitboard::default(); // Get attacks from king square as if it were a queen (to cover all directions) let attacks_from_king = attacks::queen(king_square, Bitboard::default()); - let potential_attackers = attacks_from_king & board.pieces(Side::opposite(side)); + // Get attacks for opponent's rooks, bishops and queens + let them = Side::opposite(side); + + let enemy_rooks = *board.piece_bitboard(Piece::Rook, them); + let enemy_bishops = *board.piece_bitboard(Piece::Bishop, them); + let enemy_queens = *board.piece_bitboard(Piece::Queen, them); + + let snipers = attacks_from_king & (enemy_rooks | enemy_bishops | enemy_queens); + + // Our pieces excluding the king + let our_pieces = board.pieces(side) ^ Bitboard::from_square(king_square); + for square in snipers.iter() { + let between_ray = rays::between(king_square, square); + let blkrs_bb = between_ray & our_pieces; + if blkrs_bb.number_of_occupied_squares() == 1 { + blockers |= blkrs_bb; + } + } - Default::default() + blockers +} + +pub fn checkers(board: &Board, side: Side) -> Bitboard { + let us = side; + let them = Side::opposite(us); + let king_bb = board.piece_bitboard(Piece::King, us); + let king_square = bitboard_helpers::next_bit(&mut king_bb.clone()) as u8; + let occupancy = board.all_pieces(); + + // ensure we definitely don't have the king in the occupancy + let kingless_occupancy = occupancy & !(*king_bb); + // an enemy king cannot check our king, so we ignore it + let knight_attacks = + attacks::for_piece_on_square(Piece::Knight, king_square, kingless_occupancy, us); + let rook_attacks = + attacks::for_piece_on_square(Piece::Rook, king_square, kingless_occupancy, us); + let bishop_attacks = + attacks::for_piece_on_square(Piece::Bishop, king_square, kingless_occupancy, us); + let queen_attacks = rook_attacks | bishop_attacks; + // note we use the opposite side for the pawn attacks + let pawn_attacks = attacks::pawn(king_square, Side::opposite(them)); + + let enemy_pawns = board.piece_bitboard(Piece::Pawn, them); + let enemy_knights = board.piece_bitboard(Piece::Knight, them); + let enemy_bishops = board.piece_bitboard(Piece::Bishop, them); + let enemy_rooks = board.piece_bitboard(Piece::Rook, them); + let enemy_queens = board.piece_bitboard(Piece::Queen, them); + + // calculate our checkers bb + knight_attacks & *enemy_knights + | rook_attacks & *enemy_rooks + | bishop_attacks & *enemy_bishops + | queen_attacks & *enemy_queens + | pawn_attacks & *enemy_pawns } #[cfg(test)] @@ -535,10 +586,12 @@ mod tests { attacks::{self, BISHOP_ATTACKS, ROOK_ATTACKS}, bitboard::Bitboard, board::Board, - definitions::NumberOf, + definitions::{NumberOf, Squares}, + file::File, magics::{BISHOP_MAGICS, ROOK_MAGICS}, move_generation::MoveGenerator, pieces::Piece, + rank::Rank, side::Side, }; @@ -1124,6 +1177,11 @@ mod tests { "Mismatch for piece {:?} on square {}", piece, sq ); + } + } + } + + #[test] fn check_rook_attacks() { for square in 0..NumberOf::SQUARES { let rook_bb = MoveGenerator::relevant_rook_bits(square as u8); @@ -1149,7 +1207,7 @@ mod tests { for piece in Piece::iter() { for side in Side::iter() { - let attacks = attacks::for_piece(piece, &board, side); + let attacks = attacks::for_piece(piece, &board, side, board.all_pieces()); let mut expected_attacks = Bitboard::default(); let piece_bb = board.piece_bitboard(piece, side); let occ = board.all_pieces(); @@ -1167,6 +1225,8 @@ mod tests { } } } + + #[test] fn check_bishop_attacks() { for square in 0..1 { let bishop_bb = MoveGenerator::relevant_bishop_bits(square as u8); @@ -1203,4 +1263,15 @@ mod tests { println!("attacks without edges: \n{attacks_without_edges}"); assert_eq!(attacks_without_edges, queen_bb); } + + #[test] + fn test_blockers_for_king() { + const FEN: &str = "r6/2q2p1k/2P1b1pp/bB2P1n1/R2B2PN/p4P1P/P1Q4K/1R6 b - - 2 38"; + let mut board = Board::from_fen(FEN).unwrap(); + board.make_uci_move("f7f5").unwrap(); + println!("{}\n{}", board.to_fen(), board); + let blockers = attacks::blockers_for_king(&board, Side::White); + let expected_blockers = Bitboard::from_square(Squares::E5); + assert_eq!(blockers, expected_blockers); + } } diff --git a/chess/src/board/move_making.rs b/chess/src/board/move_making.rs index 3d73675d..569197be 100644 --- a/chess/src/board/move_making.rs +++ b/chess/src/board/move_making.rs @@ -6,8 +6,10 @@ use crate::{ attacks, bitboard::Bitboard, + bitboard_helpers, board::Board, definitions::{CastlingAvailability, Squares}, + file::File, move_generation::MoveGenerator, moves::{self, Move}, pieces::{Piece, SQUARE_NAME}, @@ -259,19 +261,50 @@ impl Board { } else { to + 8u8 }; - // TODO: Check to see if the en passant square is a legal move for the opponent + + // Check to see if the en passant square is a legal move for the opponent + // These checks are based on this patch from Stockfish. + // https://github.com/official-stockfish/Stockfish/commit/94175524b1c06f1a4ce80a5640272a15120dcbbd // 1. Check if there are any enemy pawns attacking the EP square - let enemy_pawn_attacks_overlap_ep = (attacks::for_piece(Piece::Pawn, self, them) - & Bitboard::from_square(en_passant_square)) - .number_of_occupied_squares() - > 0; + let pawns = attacks::for_piece( + Piece::Pawn, + self, + them, + self.piece_kind_bitboard(Piece::Pawn), + ) & Bitboard::from_square(en_passant_square); // 2. Are there checkers other than the to be captured pawn? If so EP is not legal + let checkers_other_than_ep_pawn = + attacks::checkers(self, us) & !Bitboard::from_square(en_passant_square); + + // Is there more than one pawn that can capture en passant? + if pawns.more_than_one() { + // If there's more than one pawn that could capture en passant, and at least + // one are not pinned, EP is legal. + if !(attacks::blockers_for_king(self, them) & pawns).more_than_one() {} + + // If there's no pawn on the kings file, and both pawns are pinned by bishops then EP is not legal + // as the kings square must be infront of the to square. + let king_sq = self.king_square(them); + let (king_file, _) = square::from_square(king_sq); - // TODO: Check the other conditions - if enemy_pawn_attacks_overlap_ep { - self.set_en_passant_square(Some(en_passant_square)); + let king_file_bb = File::of(king_file).to_bitboard(); + let pawns_on_king_file = pawns & king_file_bb; + + if pawns_on_king_file.empty() { + self.set_en_passant_square(None); + } else { + // Remove the pawns on the king file from the pawns bitboard + // as an EP capture from it can never be legal + pawns &= !king_file_bb; + } } + + // Now we do a quick simulation of the en passant capture to see if it leaves us in check + let king_sq = self.king_square(them); + let cap_sq = to; + let occ = (self.all_pieces() ^ bitboard_helpers::next_bit(&pawns) ^ cap_sq.into()) + | (to - attacks::pawn_push(us)); } else { self.set_en_passant_square(None); } @@ -797,19 +830,22 @@ mod tests { const FEN: [&str; 3] = [ "r6/2q2p1k/2P1b1pp/bB2P1n1/R2B2PN/p4P1P/P1Q4K/1R6 b - - 2 38", "8/p2r1pK1/6p1/1kp1P1P1/2p5/2P5/8/4R3 b - - 0 43", - "`4k3/4p3/2b3b1/3P1P2/4K3/8/8/8 b - -", + "4k3/4p3/2b3b1/3P1P2/4K3/8/8/8 b - -", ]; const TEST_MOVES: [&str; 3] = ["f7f5", "f7f5", "e7e5"]; for (fen, mv) in zip(FEN, TEST_MOVES) { let maybe_board = Board::from_fen(fen); - assert!(maybe_board.is_ok()); + assert!( + maybe_board.is_ok(), + "Failed to create board from FEN: {fen}" + ); let mut board = maybe_board.unwrap(); println!("before move:\n{}", board); - let result = board.make_uci_move(&mv); + let result = board.make_uci_move(mv); assert!(result.is_ok()); println!("after move:\n{}", board); From beec953e3848de78f858b43cc69f8f28c8b532f9 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Fri, 6 Feb 2026 20:18:08 -0500 Subject: [PATCH 09/19] feat: add `empty()` to bitboard bench: 1015937 --- chess/src/bitboard.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/chess/src/bitboard.rs b/chess/src/bitboard.rs index 3c025932..3968394f 100644 --- a/chess/src/bitboard.rs +++ b/chess/src/bitboard.rs @@ -131,6 +131,14 @@ impl Bitboard { pub fn more_than_one(&self) -> bool { self.data & (self.data.saturating_sub(1)) != 0 } + + /// Check if the bitboard is empty. + /// + /// # Returns + /// - `bool` - True if the bitboard is empty. False otherwise. + pub fn empty(&self) -> bool { + self.data == 0 + } } impl PartialOrd for Bitboard { @@ -500,4 +508,13 @@ mod tests { let bb3 = Bitboard::new(0b000000); assert!(!bb3.more_than_one()); } + + #[test] + fn test_empty() { + let bb = Bitboard::new(0b101010); + let result = bb ^ bb; + println!("{}", result); + assert!(result.number_of_occupied_squares() == 0); + assert!(result.empty()); + } } From c0e0b9ef621774b2dbf49234cf2a3f7374a7a693 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Fri, 6 Feb 2026 20:18:31 -0500 Subject: [PATCH 10/19] wip: working on ep check bench: 1015937 --- chess/src/board/move_making.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/chess/src/board/move_making.rs b/chess/src/board/move_making.rs index 569197be..253b3e14 100644 --- a/chess/src/board/move_making.rs +++ b/chess/src/board/move_making.rs @@ -266,7 +266,7 @@ impl Board { // These checks are based on this patch from Stockfish. // https://github.com/official-stockfish/Stockfish/commit/94175524b1c06f1a4ce80a5640272a15120dcbbd // 1. Check if there are any enemy pawns attacking the EP square - let pawns = attacks::for_piece( + let mut pawns = attacks::for_piece( Piece::Pawn, self, them, @@ -301,10 +301,12 @@ impl Board { } // Now we do a quick simulation of the en passant capture to see if it leaves us in check - let king_sq = self.king_square(them); + let _king_sq = self.king_square(them); let cap_sq = to; - let occ = (self.all_pieces() ^ bitboard_helpers::next_bit(&pawns) ^ cap_sq.into()) - | (to - attacks::pawn_push(us)); + // TODO: Do we really need this line? + let pwn = Bitboard::from_square(bitboard_helpers::next_bit(&mut pawns) as u8); + let _occ = (self.all_pieces() ^ pwn ^ Bitboard::from_square(cap_sq)) + | Bitboard::from_square(en_passant_square); } else { self.set_en_passant_square(None); } From dd23a0dc31fb5cebb81c270dcb3e05ee76f745c3 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sat, 7 Feb 2026 23:41:17 -0500 Subject: [PATCH 11/19] feat: add impl for rays::line Implement a "line bitboard" function imitating what is done in stockfish. This is used as part of the fix for properly detecting legal EP squares when move making. --- chess/src/rays.rs | 1517 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1516 insertions(+), 1 deletion(-) diff --git a/chess/src/rays.rs b/chess/src/rays.rs index e0858268..1b2112aa 100644 --- a/chess/src/rays.rs +++ b/chess/src/rays.rs @@ -56,9 +56,37 @@ pub fn between(from: u8, to: u8) -> Bitboard { RAYS_BETWEEN[from as usize][to as usize] } +/// Returns a [`Bitboard`] representing the entire line (board edge to board edge) that intersects both `from` and `to`. +/// +/// # Arguments +/// - `from`: The starting square (0-63). +/// - `to`: The ending square (0-63). +/// +/// # Returns +/// - A [`Bitboard`] representing the line that intersects both `from` and `to`. If `from` and `to` are not aligned, +/// this returns an empty `Bitboard`. +pub fn line(from: u8, to: u8) -> Bitboard { + let bishop_from = attacks::bishop(from, Bitboard::default()); + let bishop_to = attacks::bishop(to, Bitboard::default()); + + let rook_from = attacks::rook(from, Bitboard::default()); + let rook_to = attacks::rook(to, Bitboard::default()); + + if bishop_from.intersects(Bitboard::from_square(to)) { + (bishop_from & bishop_to) | from.into() | to.into() + } else if rook_from.intersects(Bitboard::from_square(to)) { + rook_from & rook_to | from.into() | to.into() + } else { + Bitboard::default() + } +} + #[cfg(test)] mod tests { - use crate::{move_generation::MoveGenerator, pieces::SQUARE_NAME, square::Square}; + use crate::{ + bitboard::Bitboard, definitions::Squares, move_generation::MoveGenerator, + pieces::SQUARE_NAME, square::Square, + }; #[test] fn validate_rays_between() { @@ -103,4 +131,1491 @@ mod tests { } } } + + const EXPECTED_LINES: [(u16, u64); 1456] = [ + (1, 255), + (2, 255), + (3, 255), + (4, 255), + (5, 255), + (6, 255), + (7, 255), + (8, 72340172838076673), + (9, 9241421688590303745), + (16, 72340172838076673), + (18, 9241421688590303745), + (24, 72340172838076673), + (27, 9241421688590303745), + (32, 72340172838076673), + (36, 9241421688590303745), + (40, 72340172838076673), + (45, 9241421688590303745), + (48, 72340172838076673), + (54, 9241421688590303745), + (56, 72340172838076673), + (63, 9241421688590303745), + (64, 255), + (66, 255), + (67, 255), + (68, 255), + (69, 255), + (70, 255), + (71, 255), + (72, 258), + (73, 144680345676153346), + (74, 36099303471055874), + (81, 144680345676153346), + (83, 36099303471055874), + (89, 144680345676153346), + (92, 36099303471055874), + (97, 144680345676153346), + (101, 36099303471055874), + (105, 144680345676153346), + (110, 36099303471055874), + (113, 144680345676153346), + (119, 36099303471055874), + (121, 144680345676153346), + (128, 255), + (129, 255), + (131, 255), + (132, 255), + (133, 255), + (134, 255), + (135, 255), + (137, 66052), + (138, 289360691352306692), + (139, 141012904183812), + (144, 66052), + (146, 289360691352306692), + (148, 141012904183812), + (154, 289360691352306692), + (157, 141012904183812), + (162, 289360691352306692), + (166, 141012904183812), + (170, 289360691352306692), + (175, 141012904183812), + (178, 289360691352306692), + (186, 289360691352306692), + (192, 255), + (193, 255), + (194, 255), + (196, 255), + (197, 255), + (198, 255), + (199, 255), + (202, 16909320), + (203, 578721382704613384), + (204, 550831656968), + (209, 16909320), + (211, 578721382704613384), + (213, 550831656968), + (216, 16909320), + (219, 578721382704613384), + (222, 550831656968), + (227, 578721382704613384), + (231, 550831656968), + (235, 578721382704613384), + (243, 578721382704613384), + (251, 578721382704613384), + (256, 255), + (257, 255), + (258, 255), + (259, 255), + (261, 255), + (262, 255), + (263, 255), + (267, 4328785936), + (268, 1157442765409226768), + (269, 2151686160), + (274, 4328785936), + (276, 1157442765409226768), + (278, 2151686160), + (281, 4328785936), + (284, 1157442765409226768), + (287, 2151686160), + (288, 4328785936), + (292, 1157442765409226768), + (300, 1157442765409226768), + (308, 1157442765409226768), + (316, 1157442765409226768), + (320, 255), + (321, 255), + (322, 255), + (323, 255), + (324, 255), + (326, 255), + (327, 255), + (332, 1108169199648), + (333, 2314885530818453536), + (334, 8405024), + (339, 1108169199648), + (341, 2314885530818453536), + (343, 8405024), + (346, 1108169199648), + (349, 2314885530818453536), + (353, 1108169199648), + (357, 2314885530818453536), + (360, 1108169199648), + (365, 2314885530818453536), + (373, 2314885530818453536), + (381, 2314885530818453536), + (384, 255), + (385, 255), + (386, 255), + (387, 255), + (388, 255), + (389, 255), + (391, 255), + (397, 283691315109952), + (398, 4629771061636907072), + (399, 32832), + (404, 283691315109952), + (406, 4629771061636907072), + (411, 283691315109952), + (414, 4629771061636907072), + (418, 283691315109952), + (422, 4629771061636907072), + (425, 283691315109952), + (430, 4629771061636907072), + (432, 283691315109952), + (438, 4629771061636907072), + (446, 4629771061636907072), + (448, 255), + (449, 255), + (450, 255), + (451, 255), + (452, 255), + (453, 255), + (454, 255), + (462, 72624976668147840), + (463, 9259542123273814144), + (469, 72624976668147840), + (471, 9259542123273814144), + (476, 72624976668147840), + (479, 9259542123273814144), + (483, 72624976668147840), + (487, 9259542123273814144), + (490, 72624976668147840), + (495, 9259542123273814144), + (497, 72624976668147840), + (503, 9259542123273814144), + (504, 72624976668147840), + (511, 9259542123273814144), + (512, 72340172838076673), + (513, 258), + (521, 65280), + (522, 65280), + (523, 65280), + (524, 65280), + (525, 65280), + (526, 65280), + (527, 65280), + (528, 72340172838076673), + (529, 4620710844295151872), + (536, 72340172838076673), + (538, 4620710844295151872), + (544, 72340172838076673), + (547, 4620710844295151872), + (552, 72340172838076673), + (556, 4620710844295151872), + (560, 72340172838076673), + (565, 4620710844295151872), + (568, 72340172838076673), + (574, 4620710844295151872), + (576, 9241421688590303745), + (577, 144680345676153346), + (578, 66052), + (584, 65280), + (586, 65280), + (587, 65280), + (588, 65280), + (589, 65280), + (590, 65280), + (591, 65280), + (592, 66052), + (593, 144680345676153346), + (594, 9241421688590303745), + (601, 144680345676153346), + (603, 9241421688590303745), + (609, 144680345676153346), + (612, 9241421688590303745), + (617, 144680345676153346), + (621, 9241421688590303745), + (625, 144680345676153346), + (630, 9241421688590303745), + (633, 144680345676153346), + (639, 9241421688590303745), + (641, 36099303471055874), + (642, 289360691352306692), + (643, 16909320), + (648, 65280), + (649, 65280), + (651, 65280), + (652, 65280), + (653, 65280), + (654, 65280), + (655, 65280), + (657, 16909320), + (658, 289360691352306692), + (659, 36099303471055874), + (664, 16909320), + (666, 289360691352306692), + (668, 36099303471055874), + (674, 289360691352306692), + (677, 36099303471055874), + (682, 289360691352306692), + (686, 36099303471055874), + (690, 289360691352306692), + (695, 36099303471055874), + (698, 289360691352306692), + (706, 141012904183812), + (707, 578721382704613384), + (708, 4328785936), + (712, 65280), + (713, 65280), + (714, 65280), + (716, 65280), + (717, 65280), + (718, 65280), + (719, 65280), + (722, 4328785936), + (723, 578721382704613384), + (724, 141012904183812), + (729, 4328785936), + (731, 578721382704613384), + (733, 141012904183812), + (736, 4328785936), + (739, 578721382704613384), + (742, 141012904183812), + (747, 578721382704613384), + (751, 141012904183812), + (755, 578721382704613384), + (763, 578721382704613384), + (771, 550831656968), + (772, 1157442765409226768), + (773, 1108169199648), + (776, 65280), + (777, 65280), + (778, 65280), + (779, 65280), + (781, 65280), + (782, 65280), + (783, 65280), + (787, 1108169199648), + (788, 1157442765409226768), + (789, 550831656968), + (794, 1108169199648), + (796, 1157442765409226768), + (798, 550831656968), + (801, 1108169199648), + (804, 1157442765409226768), + (807, 550831656968), + (808, 1108169199648), + (812, 1157442765409226768), + (820, 1157442765409226768), + (828, 1157442765409226768), + (836, 2151686160), + (837, 2314885530818453536), + (838, 283691315109952), + (840, 65280), + (841, 65280), + (842, 65280), + (843, 65280), + (844, 65280), + (846, 65280), + (847, 65280), + (852, 283691315109952), + (853, 2314885530818453536), + (854, 2151686160), + (859, 283691315109952), + (861, 2314885530818453536), + (863, 2151686160), + (866, 283691315109952), + (869, 2314885530818453536), + (873, 283691315109952), + (877, 2314885530818453536), + (880, 283691315109952), + (885, 2314885530818453536), + (893, 2314885530818453536), + (901, 8405024), + (902, 4629771061636907072), + (903, 72624976668147840), + (904, 65280), + (905, 65280), + (906, 65280), + (907, 65280), + (908, 65280), + (909, 65280), + (911, 65280), + (917, 72624976668147840), + (918, 4629771061636907072), + (919, 8405024), + (924, 72624976668147840), + (926, 4629771061636907072), + (931, 72624976668147840), + (934, 4629771061636907072), + (938, 72624976668147840), + (942, 4629771061636907072), + (945, 72624976668147840), + (950, 4629771061636907072), + (952, 72624976668147840), + (958, 4629771061636907072), + (966, 32832), + (967, 9259542123273814144), + (968, 65280), + (969, 65280), + (970, 65280), + (971, 65280), + (972, 65280), + (973, 65280), + (974, 65280), + (982, 145249953336295424), + (983, 9259542123273814144), + (989, 145249953336295424), + (991, 9259542123273814144), + (996, 145249953336295424), + (999, 9259542123273814144), + (1003, 145249953336295424), + (1007, 9259542123273814144), + (1010, 145249953336295424), + (1015, 9259542123273814144), + (1017, 145249953336295424), + (1023, 9259542123273814144), + (1024, 72340172838076673), + (1026, 66052), + (1032, 72340172838076673), + (1033, 66052), + (1041, 16711680), + (1042, 16711680), + (1043, 16711680), + (1044, 16711680), + (1045, 16711680), + (1046, 16711680), + (1047, 16711680), + (1048, 72340172838076673), + (1049, 2310355422147575808), + (1056, 72340172838076673), + (1058, 2310355422147575808), + (1064, 72340172838076673), + (1067, 2310355422147575808), + (1072, 72340172838076673), + (1076, 2310355422147575808), + (1080, 72340172838076673), + (1085, 2310355422147575808), + (1089, 144680345676153346), + (1091, 16909320), + (1096, 4620710844295151872), + (1097, 144680345676153346), + (1098, 16909320), + (1104, 16711680), + (1106, 16711680), + (1107, 16711680), + (1108, 16711680), + (1109, 16711680), + (1110, 16711680), + (1111, 16711680), + (1112, 16909320), + (1113, 144680345676153346), + (1114, 4620710844295151872), + (1121, 144680345676153346), + (1123, 4620710844295151872), + (1129, 144680345676153346), + (1132, 4620710844295151872), + (1137, 144680345676153346), + (1141, 4620710844295151872), + (1145, 144680345676153346), + (1150, 4620710844295151872), + (1152, 9241421688590303745), + (1154, 289360691352306692), + (1156, 4328785936), + (1161, 9241421688590303745), + (1162, 289360691352306692), + (1163, 4328785936), + (1168, 16711680), + (1169, 16711680), + (1171, 16711680), + (1172, 16711680), + (1173, 16711680), + (1174, 16711680), + (1175, 16711680), + (1177, 4328785936), + (1178, 289360691352306692), + (1179, 9241421688590303745), + (1184, 4328785936), + (1186, 289360691352306692), + (1188, 9241421688590303745), + (1194, 289360691352306692), + (1197, 9241421688590303745), + (1202, 289360691352306692), + (1206, 9241421688590303745), + (1210, 289360691352306692), + (1215, 9241421688590303745), + (1217, 36099303471055874), + (1219, 578721382704613384), + (1221, 1108169199648), + (1226, 36099303471055874), + (1227, 578721382704613384), + (1228, 1108169199648), + (1232, 16711680), + (1233, 16711680), + (1234, 16711680), + (1236, 16711680), + (1237, 16711680), + (1238, 16711680), + (1239, 16711680), + (1242, 1108169199648), + (1243, 578721382704613384), + (1244, 36099303471055874), + (1249, 1108169199648), + (1251, 578721382704613384), + (1253, 36099303471055874), + (1256, 1108169199648), + (1259, 578721382704613384), + (1262, 36099303471055874), + (1267, 578721382704613384), + (1271, 36099303471055874), + (1275, 578721382704613384), + (1282, 141012904183812), + (1284, 1157442765409226768), + (1286, 283691315109952), + (1291, 141012904183812), + (1292, 1157442765409226768), + (1293, 283691315109952), + (1296, 16711680), + (1297, 16711680), + (1298, 16711680), + (1299, 16711680), + (1301, 16711680), + (1302, 16711680), + (1303, 16711680), + (1307, 283691315109952), + (1308, 1157442765409226768), + (1309, 141012904183812), + (1314, 283691315109952), + (1316, 1157442765409226768), + (1318, 141012904183812), + (1321, 283691315109952), + (1324, 1157442765409226768), + (1327, 141012904183812), + (1328, 283691315109952), + (1332, 1157442765409226768), + (1340, 1157442765409226768), + (1347, 550831656968), + (1349, 2314885530818453536), + (1351, 72624976668147840), + (1356, 550831656968), + (1357, 2314885530818453536), + (1358, 72624976668147840), + (1360, 16711680), + (1361, 16711680), + (1362, 16711680), + (1363, 16711680), + (1364, 16711680), + (1366, 16711680), + (1367, 16711680), + (1372, 72624976668147840), + (1373, 2314885530818453536), + (1374, 550831656968), + (1379, 72624976668147840), + (1381, 2314885530818453536), + (1383, 550831656968), + (1386, 72624976668147840), + (1389, 2314885530818453536), + (1393, 72624976668147840), + (1397, 2314885530818453536), + (1400, 72624976668147840), + (1405, 2314885530818453536), + (1412, 2151686160), + (1414, 4629771061636907072), + (1421, 2151686160), + (1422, 4629771061636907072), + (1423, 145249953336295424), + (1424, 16711680), + (1425, 16711680), + (1426, 16711680), + (1427, 16711680), + (1428, 16711680), + (1429, 16711680), + (1431, 16711680), + (1437, 145249953336295424), + (1438, 4629771061636907072), + (1439, 2151686160), + (1444, 145249953336295424), + (1446, 4629771061636907072), + (1451, 145249953336295424), + (1454, 4629771061636907072), + (1458, 145249953336295424), + (1462, 4629771061636907072), + (1465, 145249953336295424), + (1470, 4629771061636907072), + (1477, 8405024), + (1479, 9259542123273814144), + (1486, 8405024), + (1487, 9259542123273814144), + (1488, 16711680), + (1489, 16711680), + (1490, 16711680), + (1491, 16711680), + (1492, 16711680), + (1493, 16711680), + (1494, 16711680), + (1502, 290499906672525312), + (1503, 9259542123273814144), + (1509, 290499906672525312), + (1511, 9259542123273814144), + (1516, 290499906672525312), + (1519, 9259542123273814144), + (1523, 290499906672525312), + (1527, 9259542123273814144), + (1530, 290499906672525312), + (1535, 9259542123273814144), + (1536, 72340172838076673), + (1539, 16909320), + (1544, 72340172838076673), + (1546, 16909320), + (1552, 72340172838076673), + (1553, 16909320), + (1561, 4278190080), + (1562, 4278190080), + (1563, 4278190080), + (1564, 4278190080), + (1565, 4278190080), + (1566, 4278190080), + (1567, 4278190080), + (1568, 72340172838076673), + (1569, 1155177711073755136), + (1576, 72340172838076673), + (1578, 1155177711073755136), + (1584, 72340172838076673), + (1587, 1155177711073755136), + (1592, 72340172838076673), + (1596, 1155177711073755136), + (1601, 144680345676153346), + (1604, 4328785936), + (1609, 144680345676153346), + (1611, 4328785936), + (1616, 2310355422147575808), + (1617, 144680345676153346), + (1618, 4328785936), + (1624, 4278190080), + (1626, 4278190080), + (1627, 4278190080), + (1628, 4278190080), + (1629, 4278190080), + (1630, 4278190080), + (1631, 4278190080), + (1632, 4328785936), + (1633, 144680345676153346), + (1634, 2310355422147575808), + (1641, 144680345676153346), + (1643, 2310355422147575808), + (1649, 144680345676153346), + (1652, 2310355422147575808), + (1657, 144680345676153346), + (1661, 2310355422147575808), + (1666, 289360691352306692), + (1669, 1108169199648), + (1672, 4620710844295151872), + (1674, 289360691352306692), + (1676, 1108169199648), + (1681, 4620710844295151872), + (1682, 289360691352306692), + (1683, 1108169199648), + (1688, 4278190080), + (1689, 4278190080), + (1691, 4278190080), + (1692, 4278190080), + (1693, 4278190080), + (1694, 4278190080), + (1695, 4278190080), + (1697, 1108169199648), + (1698, 289360691352306692), + (1699, 4620710844295151872), + (1704, 1108169199648), + (1706, 289360691352306692), + (1708, 4620710844295151872), + (1714, 289360691352306692), + (1717, 4620710844295151872), + (1722, 289360691352306692), + (1726, 4620710844295151872), + (1728, 9241421688590303745), + (1731, 578721382704613384), + (1734, 283691315109952), + (1737, 9241421688590303745), + (1739, 578721382704613384), + (1741, 283691315109952), + (1746, 9241421688590303745), + (1747, 578721382704613384), + (1748, 283691315109952), + (1752, 4278190080), + (1753, 4278190080), + (1754, 4278190080), + (1756, 4278190080), + (1757, 4278190080), + (1758, 4278190080), + (1759, 4278190080), + (1762, 283691315109952), + (1763, 578721382704613384), + (1764, 9241421688590303745), + (1769, 283691315109952), + (1771, 578721382704613384), + (1773, 9241421688590303745), + (1776, 283691315109952), + (1779, 578721382704613384), + (1782, 9241421688590303745), + (1787, 578721382704613384), + (1791, 9241421688590303745), + (1793, 36099303471055874), + (1796, 1157442765409226768), + (1799, 72624976668147840), + (1802, 36099303471055874), + (1804, 1157442765409226768), + (1806, 72624976668147840), + (1811, 36099303471055874), + (1812, 1157442765409226768), + (1813, 72624976668147840), + (1816, 4278190080), + (1817, 4278190080), + (1818, 4278190080), + (1819, 4278190080), + (1821, 4278190080), + (1822, 4278190080), + (1823, 4278190080), + (1827, 72624976668147840), + (1828, 1157442765409226768), + (1829, 36099303471055874), + (1834, 72624976668147840), + (1836, 1157442765409226768), + (1838, 36099303471055874), + (1841, 72624976668147840), + (1844, 1157442765409226768), + (1847, 36099303471055874), + (1848, 72624976668147840), + (1852, 1157442765409226768), + (1858, 141012904183812), + (1861, 2314885530818453536), + (1867, 141012904183812), + (1869, 2314885530818453536), + (1871, 145249953336295424), + (1876, 141012904183812), + (1877, 2314885530818453536), + (1878, 145249953336295424), + (1880, 4278190080), + (1881, 4278190080), + (1882, 4278190080), + (1883, 4278190080), + (1884, 4278190080), + (1886, 4278190080), + (1887, 4278190080), + (1892, 145249953336295424), + (1893, 2314885530818453536), + (1894, 141012904183812), + (1899, 145249953336295424), + (1901, 2314885530818453536), + (1903, 141012904183812), + (1906, 145249953336295424), + (1909, 2314885530818453536), + (1913, 145249953336295424), + (1917, 2314885530818453536), + (1923, 550831656968), + (1926, 4629771061636907072), + (1932, 550831656968), + (1934, 4629771061636907072), + (1941, 550831656968), + (1942, 4629771061636907072), + (1943, 290499906672525312), + (1944, 4278190080), + (1945, 4278190080), + (1946, 4278190080), + (1947, 4278190080), + (1948, 4278190080), + (1949, 4278190080), + (1951, 4278190080), + (1957, 290499906672525312), + (1958, 4629771061636907072), + (1959, 550831656968), + (1964, 290499906672525312), + (1966, 4629771061636907072), + (1971, 290499906672525312), + (1974, 4629771061636907072), + (1978, 290499906672525312), + (1982, 4629771061636907072), + (1988, 2151686160), + (1991, 9259542123273814144), + (1997, 2151686160), + (1999, 9259542123273814144), + (2006, 2151686160), + (2007, 9259542123273814144), + (2008, 4278190080), + (2009, 4278190080), + (2010, 4278190080), + (2011, 4278190080), + (2012, 4278190080), + (2013, 4278190080), + (2014, 4278190080), + (2022, 580999813328273408), + (2023, 9259542123273814144), + (2029, 580999813328273408), + (2031, 9259542123273814144), + (2036, 580999813328273408), + (2039, 9259542123273814144), + (2043, 580999813328273408), + (2047, 9259542123273814144), + (2048, 72340172838076673), + (2052, 4328785936), + (2056, 72340172838076673), + (2059, 4328785936), + (2064, 72340172838076673), + (2066, 4328785936), + (2072, 72340172838076673), + (2073, 4328785936), + (2081, 1095216660480), + (2082, 1095216660480), + (2083, 1095216660480), + (2084, 1095216660480), + (2085, 1095216660480), + (2086, 1095216660480), + (2087, 1095216660480), + (2088, 72340172838076673), + (2089, 577588855528488960), + (2096, 72340172838076673), + (2098, 577588855528488960), + (2104, 72340172838076673), + (2107, 577588855528488960), + (2113, 144680345676153346), + (2117, 1108169199648), + (2121, 144680345676153346), + (2124, 1108169199648), + (2129, 144680345676153346), + (2131, 1108169199648), + (2136, 1155177711073755136), + (2137, 144680345676153346), + (2138, 1108169199648), + (2144, 1095216660480), + (2146, 1095216660480), + (2147, 1095216660480), + (2148, 1095216660480), + (2149, 1095216660480), + (2150, 1095216660480), + (2151, 1095216660480), + (2152, 1108169199648), + (2153, 144680345676153346), + (2154, 1155177711073755136), + (2161, 144680345676153346), + (2163, 1155177711073755136), + (2169, 144680345676153346), + (2172, 1155177711073755136), + (2178, 289360691352306692), + (2182, 283691315109952), + (2186, 289360691352306692), + (2189, 283691315109952), + (2192, 2310355422147575808), + (2194, 289360691352306692), + (2196, 283691315109952), + (2201, 2310355422147575808), + (2202, 289360691352306692), + (2203, 283691315109952), + (2208, 1095216660480), + (2209, 1095216660480), + (2211, 1095216660480), + (2212, 1095216660480), + (2213, 1095216660480), + (2214, 1095216660480), + (2215, 1095216660480), + (2217, 283691315109952), + (2218, 289360691352306692), + (2219, 2310355422147575808), + (2224, 283691315109952), + (2226, 289360691352306692), + (2228, 2310355422147575808), + (2234, 289360691352306692), + (2237, 2310355422147575808), + (2243, 578721382704613384), + (2247, 72624976668147840), + (2248, 4620710844295151872), + (2251, 578721382704613384), + (2254, 72624976668147840), + (2257, 4620710844295151872), + (2259, 578721382704613384), + (2261, 72624976668147840), + (2266, 4620710844295151872), + (2267, 578721382704613384), + (2268, 72624976668147840), + (2272, 1095216660480), + (2273, 1095216660480), + (2274, 1095216660480), + (2276, 1095216660480), + (2277, 1095216660480), + (2278, 1095216660480), + (2279, 1095216660480), + (2282, 72624976668147840), + (2283, 578721382704613384), + (2284, 4620710844295151872), + (2289, 72624976668147840), + (2291, 578721382704613384), + (2293, 4620710844295151872), + (2296, 72624976668147840), + (2299, 578721382704613384), + (2302, 4620710844295151872), + (2304, 9241421688590303745), + (2308, 1157442765409226768), + (2313, 9241421688590303745), + (2316, 1157442765409226768), + (2319, 145249953336295424), + (2322, 9241421688590303745), + (2324, 1157442765409226768), + (2326, 145249953336295424), + (2331, 9241421688590303745), + (2332, 1157442765409226768), + (2333, 145249953336295424), + (2336, 1095216660480), + (2337, 1095216660480), + (2338, 1095216660480), + (2339, 1095216660480), + (2341, 1095216660480), + (2342, 1095216660480), + (2343, 1095216660480), + (2347, 145249953336295424), + (2348, 1157442765409226768), + (2349, 9241421688590303745), + (2354, 145249953336295424), + (2356, 1157442765409226768), + (2358, 9241421688590303745), + (2361, 145249953336295424), + (2364, 1157442765409226768), + (2367, 9241421688590303745), + (2369, 36099303471055874), + (2373, 2314885530818453536), + (2378, 36099303471055874), + (2381, 2314885530818453536), + (2387, 36099303471055874), + (2389, 2314885530818453536), + (2391, 290499906672525312), + (2396, 36099303471055874), + (2397, 2314885530818453536), + (2398, 290499906672525312), + (2400, 1095216660480), + (2401, 1095216660480), + (2402, 1095216660480), + (2403, 1095216660480), + (2404, 1095216660480), + (2406, 1095216660480), + (2407, 1095216660480), + (2412, 290499906672525312), + (2413, 2314885530818453536), + (2414, 36099303471055874), + (2419, 290499906672525312), + (2421, 2314885530818453536), + (2423, 36099303471055874), + (2426, 290499906672525312), + (2429, 2314885530818453536), + (2434, 141012904183812), + (2438, 4629771061636907072), + (2443, 141012904183812), + (2446, 4629771061636907072), + (2452, 141012904183812), + (2454, 4629771061636907072), + (2461, 141012904183812), + (2462, 4629771061636907072), + (2463, 580999813328273408), + (2464, 1095216660480), + (2465, 1095216660480), + (2466, 1095216660480), + (2467, 1095216660480), + (2468, 1095216660480), + (2469, 1095216660480), + (2471, 1095216660480), + (2477, 580999813328273408), + (2478, 4629771061636907072), + (2479, 141012904183812), + (2484, 580999813328273408), + (2486, 4629771061636907072), + (2491, 580999813328273408), + (2494, 4629771061636907072), + (2499, 550831656968), + (2503, 9259542123273814144), + (2508, 550831656968), + (2511, 9259542123273814144), + (2517, 550831656968), + (2519, 9259542123273814144), + (2526, 550831656968), + (2527, 9259542123273814144), + (2528, 1095216660480), + (2529, 1095216660480), + (2530, 1095216660480), + (2531, 1095216660480), + (2532, 1095216660480), + (2533, 1095216660480), + (2534, 1095216660480), + (2542, 1161999622361579520), + (2543, 9259542123273814144), + (2549, 1161999622361579520), + (2551, 9259542123273814144), + (2556, 1161999622361579520), + (2559, 9259542123273814144), + (2560, 72340172838076673), + (2565, 1108169199648), + (2568, 72340172838076673), + (2572, 1108169199648), + (2576, 72340172838076673), + (2579, 1108169199648), + (2584, 72340172838076673), + (2586, 1108169199648), + (2592, 72340172838076673), + (2593, 1108169199648), + (2601, 280375465082880), + (2602, 280375465082880), + (2603, 280375465082880), + (2604, 280375465082880), + (2605, 280375465082880), + (2606, 280375465082880), + (2607, 280375465082880), + (2608, 72340172838076673), + (2609, 288794425616760832), + (2616, 72340172838076673), + (2618, 288794425616760832), + (2625, 144680345676153346), + (2630, 283691315109952), + (2633, 144680345676153346), + (2637, 283691315109952), + (2641, 144680345676153346), + (2644, 283691315109952), + (2649, 144680345676153346), + (2651, 283691315109952), + (2656, 577588855528488960), + (2657, 144680345676153346), + (2658, 283691315109952), + (2664, 280375465082880), + (2666, 280375465082880), + (2667, 280375465082880), + (2668, 280375465082880), + (2669, 280375465082880), + (2670, 280375465082880), + (2671, 280375465082880), + (2672, 283691315109952), + (2673, 144680345676153346), + (2674, 577588855528488960), + (2681, 144680345676153346), + (2683, 577588855528488960), + (2690, 289360691352306692), + (2695, 72624976668147840), + (2698, 289360691352306692), + (2702, 72624976668147840), + (2706, 289360691352306692), + (2709, 72624976668147840), + (2712, 1155177711073755136), + (2714, 289360691352306692), + (2716, 72624976668147840), + (2721, 1155177711073755136), + (2722, 289360691352306692), + (2723, 72624976668147840), + (2728, 280375465082880), + (2729, 280375465082880), + (2731, 280375465082880), + (2732, 280375465082880), + (2733, 280375465082880), + (2734, 280375465082880), + (2735, 280375465082880), + (2737, 72624976668147840), + (2738, 289360691352306692), + (2739, 1155177711073755136), + (2744, 72624976668147840), + (2746, 289360691352306692), + (2748, 1155177711073755136), + (2755, 578721382704613384), + (2763, 578721382704613384), + (2767, 145249953336295424), + (2768, 2310355422147575808), + (2771, 578721382704613384), + (2774, 145249953336295424), + (2777, 2310355422147575808), + (2779, 578721382704613384), + (2781, 145249953336295424), + (2786, 2310355422147575808), + (2787, 578721382704613384), + (2788, 145249953336295424), + (2792, 280375465082880), + (2793, 280375465082880), + (2794, 280375465082880), + (2796, 280375465082880), + (2797, 280375465082880), + (2798, 280375465082880), + (2799, 280375465082880), + (2802, 145249953336295424), + (2803, 578721382704613384), + (2804, 2310355422147575808), + (2809, 145249953336295424), + (2811, 578721382704613384), + (2813, 2310355422147575808), + (2820, 1157442765409226768), + (2824, 4620710844295151872), + (2828, 1157442765409226768), + (2833, 4620710844295151872), + (2836, 1157442765409226768), + (2839, 290499906672525312), + (2842, 4620710844295151872), + (2844, 1157442765409226768), + (2846, 290499906672525312), + (2851, 4620710844295151872), + (2852, 1157442765409226768), + (2853, 290499906672525312), + (2856, 280375465082880), + (2857, 280375465082880), + (2858, 280375465082880), + (2859, 280375465082880), + (2861, 280375465082880), + (2862, 280375465082880), + (2863, 280375465082880), + (2867, 290499906672525312), + (2868, 1157442765409226768), + (2869, 4620710844295151872), + (2874, 290499906672525312), + (2876, 1157442765409226768), + (2878, 4620710844295151872), + (2880, 9241421688590303745), + (2885, 2314885530818453536), + (2889, 9241421688590303745), + (2893, 2314885530818453536), + (2898, 9241421688590303745), + (2901, 2314885530818453536), + (2907, 9241421688590303745), + (2909, 2314885530818453536), + (2911, 580999813328273408), + (2916, 9241421688590303745), + (2917, 2314885530818453536), + (2918, 580999813328273408), + (2920, 280375465082880), + (2921, 280375465082880), + (2922, 280375465082880), + (2923, 280375465082880), + (2924, 280375465082880), + (2926, 280375465082880), + (2927, 280375465082880), + (2932, 580999813328273408), + (2933, 2314885530818453536), + (2934, 9241421688590303745), + (2939, 580999813328273408), + (2941, 2314885530818453536), + (2943, 9241421688590303745), + (2945, 36099303471055874), + (2950, 4629771061636907072), + (2954, 36099303471055874), + (2958, 4629771061636907072), + (2963, 36099303471055874), + (2966, 4629771061636907072), + (2972, 36099303471055874), + (2974, 4629771061636907072), + (2981, 36099303471055874), + (2982, 4629771061636907072), + (2983, 1161999622361579520), + (2984, 280375465082880), + (2985, 280375465082880), + (2986, 280375465082880), + (2987, 280375465082880), + (2988, 280375465082880), + (2989, 280375465082880), + (2991, 280375465082880), + (2997, 1161999622361579520), + (2998, 4629771061636907072), + (2999, 36099303471055874), + (3004, 1161999622361579520), + (3006, 4629771061636907072), + (3010, 141012904183812), + (3015, 9259542123273814144), + (3019, 141012904183812), + (3023, 9259542123273814144), + (3028, 141012904183812), + (3031, 9259542123273814144), + (3037, 141012904183812), + (3039, 9259542123273814144), + (3046, 141012904183812), + (3047, 9259542123273814144), + (3048, 280375465082880), + (3049, 280375465082880), + (3050, 280375465082880), + (3051, 280375465082880), + (3052, 280375465082880), + (3053, 280375465082880), + (3054, 280375465082880), + (3062, 2323998145211531264), + (3063, 9259542123273814144), + (3069, 2323998145211531264), + (3071, 9259542123273814144), + (3072, 72340172838076673), + (3078, 283691315109952), + (3080, 72340172838076673), + (3085, 283691315109952), + (3088, 72340172838076673), + (3092, 283691315109952), + (3096, 72340172838076673), + (3099, 283691315109952), + (3104, 72340172838076673), + (3106, 283691315109952), + (3112, 72340172838076673), + (3113, 283691315109952), + (3121, 71776119061217280), + (3122, 71776119061217280), + (3123, 71776119061217280), + (3124, 71776119061217280), + (3125, 71776119061217280), + (3126, 71776119061217280), + (3127, 71776119061217280), + (3128, 72340172838076673), + (3129, 144396663052566528), + (3137, 144680345676153346), + (3143, 72624976668147840), + (3145, 144680345676153346), + (3150, 72624976668147840), + (3153, 144680345676153346), + (3157, 72624976668147840), + (3161, 144680345676153346), + (3164, 72624976668147840), + (3169, 144680345676153346), + (3171, 72624976668147840), + (3176, 288794425616760832), + (3177, 144680345676153346), + (3178, 72624976668147840), + (3184, 71776119061217280), + (3186, 71776119061217280), + (3187, 71776119061217280), + (3188, 71776119061217280), + (3189, 71776119061217280), + (3190, 71776119061217280), + (3191, 71776119061217280), + (3192, 72624976668147840), + (3193, 144680345676153346), + (3194, 288794425616760832), + (3202, 289360691352306692), + (3210, 289360691352306692), + (3215, 145249953336295424), + (3218, 289360691352306692), + (3222, 145249953336295424), + (3226, 289360691352306692), + (3229, 145249953336295424), + (3232, 577588855528488960), + (3234, 289360691352306692), + (3236, 145249953336295424), + (3241, 577588855528488960), + (3242, 289360691352306692), + (3243, 145249953336295424), + (3248, 71776119061217280), + (3249, 71776119061217280), + (3251, 71776119061217280), + (3252, 71776119061217280), + (3253, 71776119061217280), + (3254, 71776119061217280), + (3255, 71776119061217280), + (3257, 145249953336295424), + (3258, 289360691352306692), + (3259, 577588855528488960), + (3267, 578721382704613384), + (3275, 578721382704613384), + (3283, 578721382704613384), + (3287, 290499906672525312), + (3288, 1155177711073755136), + (3291, 578721382704613384), + (3294, 290499906672525312), + (3297, 1155177711073755136), + (3299, 578721382704613384), + (3301, 290499906672525312), + (3306, 1155177711073755136), + (3307, 578721382704613384), + (3308, 290499906672525312), + (3312, 71776119061217280), + (3313, 71776119061217280), + (3314, 71776119061217280), + (3316, 71776119061217280), + (3317, 71776119061217280), + (3318, 71776119061217280), + (3319, 71776119061217280), + (3322, 290499906672525312), + (3323, 578721382704613384), + (3324, 1155177711073755136), + (3332, 1157442765409226768), + (3340, 1157442765409226768), + (3344, 2310355422147575808), + (3348, 1157442765409226768), + (3353, 2310355422147575808), + (3356, 1157442765409226768), + (3359, 580999813328273408), + (3362, 2310355422147575808), + (3364, 1157442765409226768), + (3366, 580999813328273408), + (3371, 2310355422147575808), + (3372, 1157442765409226768), + (3373, 580999813328273408), + (3376, 71776119061217280), + (3377, 71776119061217280), + (3378, 71776119061217280), + (3379, 71776119061217280), + (3381, 71776119061217280), + (3382, 71776119061217280), + (3383, 71776119061217280), + (3387, 580999813328273408), + (3388, 1157442765409226768), + (3389, 2310355422147575808), + (3397, 2314885530818453536), + (3400, 4620710844295151872), + (3405, 2314885530818453536), + (3409, 4620710844295151872), + (3413, 2314885530818453536), + (3418, 4620710844295151872), + (3421, 2314885530818453536), + (3427, 4620710844295151872), + (3429, 2314885530818453536), + (3431, 1161999622361579520), + (3436, 4620710844295151872), + (3437, 2314885530818453536), + (3438, 1161999622361579520), + (3440, 71776119061217280), + (3441, 71776119061217280), + (3442, 71776119061217280), + (3443, 71776119061217280), + (3444, 71776119061217280), + (3446, 71776119061217280), + (3447, 71776119061217280), + (3452, 1161999622361579520), + (3453, 2314885530818453536), + (3454, 4620710844295151872), + (3456, 9241421688590303745), + (3462, 4629771061636907072), + (3465, 9241421688590303745), + (3470, 4629771061636907072), + (3474, 9241421688590303745), + (3478, 4629771061636907072), + (3483, 9241421688590303745), + (3486, 4629771061636907072), + (3492, 9241421688590303745), + (3494, 4629771061636907072), + (3501, 9241421688590303745), + (3502, 4629771061636907072), + (3503, 2323998145211531264), + (3504, 71776119061217280), + (3505, 71776119061217280), + (3506, 71776119061217280), + (3507, 71776119061217280), + (3508, 71776119061217280), + (3509, 71776119061217280), + (3511, 71776119061217280), + (3517, 2323998145211531264), + (3518, 4629771061636907072), + (3519, 9241421688590303745), + (3521, 36099303471055874), + (3527, 9259542123273814144), + (3530, 36099303471055874), + (3535, 9259542123273814144), + (3539, 36099303471055874), + (3543, 9259542123273814144), + (3548, 36099303471055874), + (3551, 9259542123273814144), + (3557, 36099303471055874), + (3559, 9259542123273814144), + (3566, 36099303471055874), + (3567, 9259542123273814144), + (3568, 71776119061217280), + (3569, 71776119061217280), + (3570, 71776119061217280), + (3571, 71776119061217280), + (3572, 71776119061217280), + (3573, 71776119061217280), + (3574, 71776119061217280), + (3582, 4647714815446351872), + (3583, 9259542123273814144), + (3584, 72340172838076673), + (3591, 72624976668147840), + (3592, 72340172838076673), + (3598, 72624976668147840), + (3600, 72340172838076673), + (3605, 72624976668147840), + (3608, 72340172838076673), + (3612, 72624976668147840), + (3616, 72340172838076673), + (3619, 72624976668147840), + (3624, 72340172838076673), + (3626, 72624976668147840), + (3632, 72340172838076673), + (3633, 72624976668147840), + (3641, 18374686479671623680), + (3642, 18374686479671623680), + (3643, 18374686479671623680), + (3644, 18374686479671623680), + (3645, 18374686479671623680), + (3646, 18374686479671623680), + (3647, 18374686479671623680), + (3649, 144680345676153346), + (3657, 144680345676153346), + (3663, 145249953336295424), + (3665, 144680345676153346), + (3670, 145249953336295424), + (3673, 144680345676153346), + (3677, 145249953336295424), + (3681, 144680345676153346), + (3684, 145249953336295424), + (3689, 144680345676153346), + (3691, 145249953336295424), + (3696, 144396663052566528), + (3697, 144680345676153346), + (3698, 145249953336295424), + (3704, 18374686479671623680), + (3706, 18374686479671623680), + (3707, 18374686479671623680), + (3708, 18374686479671623680), + (3709, 18374686479671623680), + (3710, 18374686479671623680), + (3711, 18374686479671623680), + (3714, 289360691352306692), + (3722, 289360691352306692), + (3730, 289360691352306692), + (3735, 290499906672525312), + (3738, 289360691352306692), + (3742, 290499906672525312), + (3746, 289360691352306692), + (3749, 290499906672525312), + (3752, 288794425616760832), + (3754, 289360691352306692), + (3756, 290499906672525312), + (3761, 288794425616760832), + (3762, 289360691352306692), + (3763, 290499906672525312), + (3768, 18374686479671623680), + (3769, 18374686479671623680), + (3771, 18374686479671623680), + (3772, 18374686479671623680), + (3773, 18374686479671623680), + (3774, 18374686479671623680), + (3775, 18374686479671623680), + (3779, 578721382704613384), + (3787, 578721382704613384), + (3795, 578721382704613384), + (3803, 578721382704613384), + (3807, 580999813328273408), + (3808, 577588855528488960), + (3811, 578721382704613384), + (3814, 580999813328273408), + (3817, 577588855528488960), + (3819, 578721382704613384), + (3821, 580999813328273408), + (3826, 577588855528488960), + (3827, 578721382704613384), + (3828, 580999813328273408), + (3832, 18374686479671623680), + (3833, 18374686479671623680), + (3834, 18374686479671623680), + (3836, 18374686479671623680), + (3837, 18374686479671623680), + (3838, 18374686479671623680), + (3839, 18374686479671623680), + (3844, 1157442765409226768), + (3852, 1157442765409226768), + (3860, 1157442765409226768), + (3864, 1155177711073755136), + (3868, 1157442765409226768), + (3873, 1155177711073755136), + (3876, 1157442765409226768), + (3879, 1161999622361579520), + (3882, 1155177711073755136), + (3884, 1157442765409226768), + (3886, 1161999622361579520), + (3891, 1155177711073755136), + (3892, 1157442765409226768), + (3893, 1161999622361579520), + (3896, 18374686479671623680), + (3897, 18374686479671623680), + (3898, 18374686479671623680), + (3899, 18374686479671623680), + (3901, 18374686479671623680), + (3902, 18374686479671623680), + (3903, 18374686479671623680), + (3909, 2314885530818453536), + (3917, 2314885530818453536), + (3920, 2310355422147575808), + (3925, 2314885530818453536), + (3929, 2310355422147575808), + (3933, 2314885530818453536), + (3938, 2310355422147575808), + (3941, 2314885530818453536), + (3947, 2310355422147575808), + (3949, 2314885530818453536), + (3951, 2323998145211531264), + (3956, 2310355422147575808), + (3957, 2314885530818453536), + (3958, 2323998145211531264), + (3960, 18374686479671623680), + (3961, 18374686479671623680), + (3962, 18374686479671623680), + (3963, 18374686479671623680), + (3964, 18374686479671623680), + (3966, 18374686479671623680), + (3967, 18374686479671623680), + (3974, 4629771061636907072), + (3976, 4620710844295151872), + (3982, 4629771061636907072), + (3985, 4620710844295151872), + (3990, 4629771061636907072), + (3994, 4620710844295151872), + (3998, 4629771061636907072), + (4003, 4620710844295151872), + (4006, 4629771061636907072), + (4012, 4620710844295151872), + (4014, 4629771061636907072), + (4021, 4620710844295151872), + (4022, 4629771061636907072), + (4023, 4647714815446351872), + (4024, 18374686479671623680), + (4025, 18374686479671623680), + (4026, 18374686479671623680), + (4027, 18374686479671623680), + (4028, 18374686479671623680), + (4029, 18374686479671623680), + (4031, 18374686479671623680), + (4032, 9241421688590303745), + (4039, 9259542123273814144), + (4041, 9241421688590303745), + (4047, 9259542123273814144), + (4050, 9241421688590303745), + (4055, 9259542123273814144), + (4059, 9241421688590303745), + (4063, 9259542123273814144), + (4068, 9241421688590303745), + (4071, 9259542123273814144), + (4077, 9241421688590303745), + (4079, 9259542123273814144), + (4086, 9241421688590303745), + (4087, 9259542123273814144), + (4088, 18374686479671623680), + (4089, 18374686479671623680), + (4090, 18374686479671623680), + (4091, 18374686479671623680), + (4092, 18374686479671623680), + (4093, 18374686479671623680), + (4094, 18374686479671623680), + ]; + + #[test] + fn test_line() { + let from = Squares::C4; + let to = Squares::F7; + let line_bb = super::line(from.into(), to.into()); + let expected_line_bb = + super::between(Squares::A2, Squares::G8) | Squares::A2.into() | Squares::G8.into(); + + assert_eq!( + line_bb, expected_line_bb, + "Line between {} and {} does not match.", + SQUARE_NAME[from as usize], SQUARE_NAME[to as usize] + ); + + for sq1 in 0..64_u8 { + for sq2 in 0..64_u8 { + let line_bb = super::line(sq1, sq2); + let idx = sq1 as usize * 64 + sq2 as usize; + let expected_bb = EXPECTED_LINES + .iter() + .find(|(key, _)| (*key) as usize == idx) + .map_or(Bitboard::default(), |(_, value)| Bitboard::new(*value)); + + assert_eq!(line_bb, expected_bb); + } + } + } } From c4d2720aaa6fa9e08fe059a338f542f27b915ca0 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sat, 7 Feb 2026 23:41:55 -0500 Subject: [PATCH 12/19] chore: adjustment to calc of king blockers --- chess/src/attacks.rs | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index 1d7f52f2..18c31a16 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -522,24 +522,25 @@ pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { let king_square = board.king_square(side); let mut blockers = Bitboard::default(); - // Get attacks from king square as if it were a queen (to cover all directions) - let attacks_from_king = attacks::queen(king_square, Bitboard::default()); - // Get attacks for opponent's rooks, bishops and queens + let rook_attacks = attacks::rook(king_square, Bitboard::default()); + let bishop_attacks = attacks::bishop(king_square, Bitboard::default()); + let them = Side::opposite(side); - let enemy_rooks = *board.piece_bitboard(Piece::Rook, them); - let enemy_bishops = *board.piece_bitboard(Piece::Bishop, them); - let enemy_queens = *board.piece_bitboard(Piece::Queen, them); + let rooks = board.piece_kind_bitboard(Piece::Rook); + let bishops = board.piece_kind_bitboard(Piece::Bishop); + let queens = board.piece_kind_bitboard(Piece::Queen); + + // Snipers attack the king square when other other snipers are removed + let snipers = (rook_attacks & (rooks | queens)) + | (bishop_attacks & (bishops | queens)) & board.pieces(them); - let snipers = attacks_from_king & (enemy_rooks | enemy_bishops | enemy_queens); + let occ = board.all_pieces() ^ snipers; - // Our pieces excluding the king - let our_pieces = board.pieces(side) ^ Bitboard::from_square(king_square); - for square in snipers.iter() { - let between_ray = rays::between(king_square, square); - let blkrs_bb = between_ray & our_pieces; - if blkrs_bb.number_of_occupied_squares() == 1 { - blockers |= blkrs_bb; + for sq in snipers.iter() { + let bb = rays::between(king_square, sq) & occ; + if bb.number_of_occupied_squares() == 1 { + blockers |= bb; } } @@ -1273,5 +1274,11 @@ mod tests { let blockers = attacks::blockers_for_king(&board, Side::White); let expected_blockers = Bitboard::from_square(Squares::E5); assert_eq!(blockers, expected_blockers); + + const FEN_2: &str = "8/p2r1pK1/6p1/1kp1P1P1/2p5/2P5/8/4R3 b - - 0 43"; + let board_2 = Board::from_fen(FEN_2).unwrap(); + let b2_blockers = attacks::blockers_for_king(&board_2, Side::White); + let expected_b2_blockers = Bitboard::from_square(Squares::F7); + assert_eq!(b2_blockers, expected_b2_blockers); } } From 0c2f025c381b7fefec9dc7eb9e560f4650524e84 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sat, 7 Feb 2026 23:44:36 -0500 Subject: [PATCH 13/19] fix: bug when detecting if EP is legal This largely follows the same logic as the fix/patch in stockfish, including the latest changes and simplification (see https://github.com/official-stockfish/Stockfish/commit/2321cf2f77b241d685ee68c9896f6574a6f12d0d) bench: 1084774 --- chess/src/board/move_making.rs | 97 +++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 42 deletions(-) diff --git a/chess/src/board/move_making.rs b/chess/src/board/move_making.rs index 253b3e14..b96e754a 100644 --- a/chess/src/board/move_making.rs +++ b/chess/src/board/move_making.rs @@ -6,14 +6,13 @@ use crate::{ attacks, bitboard::Bitboard, - bitboard_helpers, board::Board, definitions::{CastlingAvailability, Squares}, - file::File, move_generation::MoveGenerator, moves::{self, Move}, pieces::{Piece, SQUARE_NAME}, rank::Rank, + rays, side::Side, square::{self, Square}, }; @@ -174,6 +173,8 @@ impl Board { // validate pre-conditions first before even bothering to go further self.check_move_preconditions(mv)?; + let previous_board = self.clone(); + let mut current_state = *self.board_state(); current_state.next_move = *mv; // update history before modifying the current state @@ -266,47 +267,34 @@ impl Board { // These checks are based on this patch from Stockfish. // https://github.com/official-stockfish/Stockfish/commit/94175524b1c06f1a4ce80a5640272a15120dcbbd // 1. Check if there are any enemy pawns attacking the EP square - let mut pawns = attacks::for_piece( - Piece::Pawn, - self, - them, - self.piece_kind_bitboard(Piece::Pawn), - ) & Bitboard::from_square(en_passant_square); - - // 2. Are there checkers other than the to be captured pawn? If so EP is not legal - let checkers_other_than_ep_pawn = - attacks::checkers(self, us) & !Bitboard::from_square(en_passant_square); + let pawns = + attacks::pawn(en_passant_square, us) & *self.piece_bitboard(Piece::Pawn, them); - // Is there more than one pawn that can capture en passant? - if pawns.more_than_one() { - // If there's more than one pawn that could capture en passant, and at least - // one are not pinned, EP is legal. - if !(attacks::blockers_for_king(self, them) & pawns).more_than_one() {} - - // If there's no pawn on the kings file, and both pawns are pinned by bishops then EP is not legal - // as the kings square must be infront of the to square. + // println!("pawns\n{}", pawns); + // Are there any pawns attacking attacking the EP square? If not, then EP capture is not possible. + if pawns.number_of_occupied_squares() >= 1 { let king_sq = self.king_square(them); let (king_file, _) = square::from_square(king_sq); - - let king_file_bb = File::of(king_file).to_bitboard(); - let pawns_on_king_file = pawns & king_file_bb; - - if pawns_on_king_file.empty() { - self.set_en_passant_square(None); - } else { - // Remove the pawns on the king file from the pawns bitboard - // as an EP capture from it can never be legal - pawns &= !king_file_bb; + let (from_file, _) = square::from_square(from); + + let king_blockers = attacks::blockers_for_king(&previous_board, them); + // println!("k blks:\n{}", king_blockers); + let not_blockers = !king_blockers; + // println!("k !blks:\n{}", not_blockers); + let no_discovery = !(Bitboard::from_square(from) & not_blockers).empty() + || king_file == from_file; + // println!("no discovery? {}", no_discovery); + + let bb = pawns & (not_blockers | rays::line(en_passant_square, king_sq)); + // println!("bb\n{}", bb); + if no_discovery && (pawns & bb).number_of_occupied_squares() >= 1 { + // If there are more than one pawn that can capture en passant, but all of them are pinned, then we can't set the en passant square as it won't be legal for the opponent to capture it anyway. + self.set_en_passant_square(Some(en_passant_square)); } + } else { + // If there are no pawns that can capture en passant, then we can just not set the en passant square as it won't be legal for the opponent to capture it anyway. + self.set_en_passant_square(None); } - - // Now we do a quick simulation of the en passant capture to see if it leaves us in check - let _king_sq = self.king_square(them); - let cap_sq = to; - // TODO: Do we really need this line? - let pwn = Bitboard::from_square(bitboard_helpers::next_bit(&mut pawns) as u8); - let _occ = (self.all_pieces() ^ pwn ^ Bitboard::from_square(cap_sq)) - | Bitboard::from_square(en_passant_square); } else { self.set_en_passant_square(None); } @@ -806,8 +794,9 @@ mod tests { // make the move let mv_ok = board.make_move(first_mv, &move_gen); assert!(mv_ok.is_ok()); - // check the en passant square - assert_eq!(board.en_passant_square(), Some(Squares::E3)); + println!("after move {}:\n{}", board.to_fen(), board); + // check the en passant square - it shouldn't be set in this case because the opponent can't capture en passant + assert_eq!(board.en_passant_square(), None); assert_eq!(board.side_to_move(), Side::Black); // make a null move board.null_move(); @@ -821,7 +810,7 @@ mod tests { let undo_ok = board.unmake_move(); assert!(undo_ok.is_ok()); // check the en passant square - assert_eq!(board.en_passant_square(), Some(Squares::E3)); + assert_eq!(board.en_passant_square(), None); // check side to move assert_eq!(board.side_to_move(), Side::Black); } @@ -845,7 +834,7 @@ mod tests { ); let mut board = maybe_board.unwrap(); - println!("before move:\n{}", board); + println!("before move {}:\n{}", board.to_fen(), board); let result = board.make_uci_move(mv); assert!(result.is_ok()); @@ -855,4 +844,28 @@ mod tests { assert!(board.en_passant_square().is_none()); } } + + #[test] + fn en_passant_when_legal() { + let test_fens = ["3rr3/p2b4/1p4Rp/4k3/2B1p1P1/2K1B2P/P4P2/4R3 w - - 4 31"]; + + let moves = ["f2f4"]; + for (fen, mv) in zip(test_fens, moves) { + let maybe_board = Board::from_fen(fen); + assert!( + maybe_board.is_ok(), + "Failed to create board from FEN: {fen}" + ); + + let mut board = maybe_board.unwrap(); + println!("before move:\n{}", board); + + let result = board.make_uci_move(mv); + assert!(result.is_ok()); + println!("after move:\n{}", board); + + // en-passant capture is possible + assert!(board.en_passant_square().is_some()); + } + } } From a54d1819d719ce3280a87d09647fdfe8c3223464 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sun, 8 Feb 2026 16:34:04 -0500 Subject: [PATCH 14/19] chore: clean up code and add better comments Cleaned up code that fixes the PV bug and tried to add better comments for my future self since I have a smooth brain. bench: 1084774 --- chess/src/board/move_making.rs | 41 +++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/chess/src/board/move_making.rs b/chess/src/board/move_making.rs index fc9303d3..885ab9ef 100644 --- a/chess/src/board/move_making.rs +++ b/chess/src/board/move_making.rs @@ -251,43 +251,53 @@ impl Board { update_zobrist_hash, ); } - // check if this is a double pawn push - // if so, set the en passant square + // Check if this is a double pawn push if mv.is_pawn_two_up() { - // get the en passant square from the new move - // if white, the en passant square is one rank below the destination square - // if black, the en passant square is one rank above the destination square + // Get the en passant square from the new move. + // If white, the en passant square is one rank below the destination square + // If black, the en passant square is one rank above the destination square let en_passant_square = if us == Side::White { to - 8u8 } else { to + 8u8 }; + // ----------------------------------------------------------------------------------------------- // Check to see if the en passant square is a legal move for the opponent - // These checks are based on this patch from Stockfish. - // https://github.com/official-stockfish/Stockfish/commit/94175524b1c06f1a4ce80a5640272a15120dcbbd - // 1. Check if there are any enemy pawns attacking the EP square + // These checks are based on this commit from Stockfish. + // https://github.com/official-stockfish/Stockfish/commit/2321cf2f77b241d685ee68c9896f6574a6f12d0d + // ----------------------------------------------------------------------------------------------- + + // Check if there are any enemy pawns attacking the EP square. We only consider pawns of the opponent + // who intersect our pawn attacks _from_ the EP square. let pawns = attacks::pawn(en_passant_square, us) & *self.piece_bitboard(Piece::Pawn, them); - // println!("pawns\n{}", pawns); // Are there any pawns attacking attacking the EP square? If not, then EP capture is not possible. if pawns.number_of_occupied_squares() >= 1 { + // Now that we know there's at least one pawn that can capture en passant, we need to check + // if the pawn(s) are pinned or not or if they give discovered check. + let king_sq = self.king_square(them); let (king_file, _) = square::from_square(king_sq); let (from_file, _) = square::from_square(from); + // Get the blockers from the opponent king's perspective. This is because we're now checking for check of the opponent king. + // We (side to move) are making a pawn double push, so we're now checking the potential of an EP capture on the part of the opponent. let king_blockers = attacks::blockers_for_king(&previous_board, them); - // println!("k blks:\n{}", king_blockers); let not_blockers = !king_blockers; - // println!("k !blks:\n{}", not_blockers); + + // Determine if there's no discovery check or if the pawn is on the same file as the king. If either is true, the EP capture does + // not result in a discovered check. let no_discovery = !(Bitboard::from_square(from) & not_blockers).empty() || king_file == from_file; - // println!("no discovery? {}", no_discovery); - let bb = pawns & (not_blockers | rays::line(en_passant_square, king_sq)); - // println!("bb\n{}", bb); - if no_discovery && (pawns & bb).number_of_occupied_squares() >= 1 { + // Now check if any of the pawns overlap with any non-blockers from the king's perspective and if they don't overlap + // the line intersecting the king and the EP square (if any). If they do overlap, then the EP capture would result + // in a check and is thus illegal. + let pawn_bb_check = + pawns & (not_blockers | rays::line(en_passant_square, king_sq)); + if no_discovery && pawn_bb_check.number_of_occupied_squares() >= 1 { // If there are more than one pawn that can capture en passant, but all of them are pinned, then we can't set the en passant square as it won't be legal for the opponent to capture it anyway. self.set_en_passant_square(Some(en_passant_square)); } @@ -296,6 +306,7 @@ impl Board { self.set_en_passant_square(None); } } else { + // Move is not a double pawn push, so ensure the EP square is cleared. self.set_en_passant_square(None); } } else { From 4c3332df9461f89b6376cc1400c9432c813c7d41 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sun, 8 Feb 2026 16:44:37 -0500 Subject: [PATCH 15/19] chore: add missing docs bench: 1084774 --- chess/src/attacks.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index 18c31a16..3d5ce30b 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -547,6 +547,14 @@ pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { blockers } +/// Calculate all pieces that are checking the king for the given side on the given board. +/// +/// # Arguments +/// - `board` - The current [`Board`]. +/// - `side` - The [`Side`] to check for (i.e. which king to check, not the attacking side). +/// +/// # Returns +/// - A [`Bitboard`] representing all the pieces that are checking the king for the given side on the given board. pub fn checkers(board: &Board, side: Side) -> Bitboard { let us = side; let them = Side::opposite(us); From 3c019485b5a3bf4ab98f66015e7044ba3531a622 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Sun, 8 Feb 2026 16:44:53 -0500 Subject: [PATCH 16/19] fix: appease clippy bench: 1084774 --- chess/src/rays.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chess/src/rays.rs b/chess/src/rays.rs index 1b2112aa..2982f26a 100644 --- a/chess/src/rays.rs +++ b/chess/src/rays.rs @@ -64,7 +64,7 @@ pub fn between(from: u8, to: u8) -> Bitboard { /// /// # Returns /// - A [`Bitboard`] representing the line that intersects both `from` and `to`. If `from` and `to` are not aligned, -/// this returns an empty `Bitboard`. +/// this returns an empty `Bitboard`. pub fn line(from: u8, to: u8) -> Bitboard { let bishop_from = attacks::bishop(from, Bitboard::default()); let bishop_to = attacks::bishop(to, Bitboard::default()); @@ -132,7 +132,7 @@ mod tests { } } - const EXPECTED_LINES: [(u16, u64); 1456] = [ + static EXPECTED_LINES: [(u16, u64); 1456] = [ (1, 255), (2, 255), (3, 255), @@ -1595,7 +1595,7 @@ mod tests { fn test_line() { let from = Squares::C4; let to = Squares::F7; - let line_bb = super::line(from.into(), to.into()); + let line_bb = super::line(from, to); let expected_line_bb = super::between(Squares::A2, Squares::G8) | Squares::A2.into() | Squares::G8.into(); From 3baf1433a89ee430e2b268501cc3fbd1a98fcd60 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Mon, 9 Feb 2026 23:01:49 -0500 Subject: [PATCH 17/19] chore: remove checkers We'll add this back in a follow up PR where we'll factor it out of the move generator. For now, it's not needed (or used) in this branch. bench: 1084774 --- chess/src/attacks.rs | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index 3d5ce30b..01956951 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -547,48 +547,6 @@ pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { blockers } -/// Calculate all pieces that are checking the king for the given side on the given board. -/// -/// # Arguments -/// - `board` - The current [`Board`]. -/// - `side` - The [`Side`] to check for (i.e. which king to check, not the attacking side). -/// -/// # Returns -/// - A [`Bitboard`] representing all the pieces that are checking the king for the given side on the given board. -pub fn checkers(board: &Board, side: Side) -> Bitboard { - let us = side; - let them = Side::opposite(us); - let king_bb = board.piece_bitboard(Piece::King, us); - let king_square = bitboard_helpers::next_bit(&mut king_bb.clone()) as u8; - let occupancy = board.all_pieces(); - - // ensure we definitely don't have the king in the occupancy - let kingless_occupancy = occupancy & !(*king_bb); - // an enemy king cannot check our king, so we ignore it - let knight_attacks = - attacks::for_piece_on_square(Piece::Knight, king_square, kingless_occupancy, us); - let rook_attacks = - attacks::for_piece_on_square(Piece::Rook, king_square, kingless_occupancy, us); - let bishop_attacks = - attacks::for_piece_on_square(Piece::Bishop, king_square, kingless_occupancy, us); - let queen_attacks = rook_attacks | bishop_attacks; - // note we use the opposite side for the pawn attacks - let pawn_attacks = attacks::pawn(king_square, Side::opposite(them)); - - let enemy_pawns = board.piece_bitboard(Piece::Pawn, them); - let enemy_knights = board.piece_bitboard(Piece::Knight, them); - let enemy_bishops = board.piece_bitboard(Piece::Bishop, them); - let enemy_rooks = board.piece_bitboard(Piece::Rook, them); - let enemy_queens = board.piece_bitboard(Piece::Queen, them); - - // calculate our checkers bb - knight_attacks & *enemy_knights - | rook_attacks & *enemy_rooks - | bishop_attacks & *enemy_bishops - | queen_attacks & *enemy_queens - | pawn_attacks & *enemy_pawns -} - #[cfg(test)] mod tests { use crate::{ From 2d47cc06707fd5266b775a8e91d2adb809a47b70 Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Mon, 16 Feb 2026 14:56:44 -0500 Subject: [PATCH 18/19] fix: minor build issue after rebase bench: 1084774 --- chess/src/attacks.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chess/src/attacks.rs b/chess/src/attacks.rs index 01956951..7e254cb9 100644 --- a/chess/src/attacks.rs +++ b/chess/src/attacks.rs @@ -525,7 +525,7 @@ pub fn blockers_for_king(board: &Board, side: Side) -> Bitboard { let rook_attacks = attacks::rook(king_square, Bitboard::default()); let bishop_attacks = attacks::bishop(king_square, Bitboard::default()); - let them = Side::opposite(side); + let them = side.opposite(); let rooks = board.piece_kind_bitboard(Piece::Rook); let bishops = board.piece_kind_bitboard(Piece::Bishop); From a77e2214a5aa9e6af0955a0c936eb61317d99c9e Mon Sep 17 00:00:00 2001 From: Paul Tsouchlos Date: Tue, 17 Feb 2026 19:09:12 -0500 Subject: [PATCH 19/19] chore: add illegal move pgn from open bench bench: 1084774 --- data/failures/20260216_rnd95.pgn | 102 +++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 data/failures/20260216_rnd95.pgn diff --git a/data/failures/20260216_rnd95.pgn b/data/failures/20260216_rnd95.pgn new file mode 100644 index 00000000..810c0646 --- /dev/null +++ b/data/failures/20260216_rnd95.pgn @@ -0,0 +1,102 @@ +[Event "Fastchess Tournament"] +[Site "?"] +[Date "2026.02.16"] +[Round "95"] +[White "Byte-Knight-base"] +[Black "Byte-Knight-dev"] +[Result "1-0"] +[SetUp "1"] +[FEN "r1bqkb1r/1pp2p2/p1np1n1p/3Np1p1/B3P3/3P1N2/PPP2PPP/R1BQ1RK1 w kq - 2 9"] +[GameDuration "00:02:07"] +[GameStartTime "2026-02-16T16:50:12 -0500"] +[GameEndTime "2026-02-16T16:52:20 -0500"] +[PlyCount "98"] +[Termination "illegal move"] +[TimeControl "44.65+0.45"] + +9. Nxg5 {+1.03/19 3.379s, n=7735994, sd=0} +Rg8 {-0.85/18 3.296s, n=5779437, sd=0} +10. Nf3 {+1.10/20 2.945s, n=6698616, sd=0} +Bh3 {-0.97/19 2.479s, n=4357137, sd=0} +11. Ne1 {+1.14/21 4.072s, n=9289522, sd=0} +Bg4 {-1.11/20 3.170s, n=5615993, sd=0} 12. f3 {+1.24/20 2.309s, n=5262341, sd=0} +Bd7 {-1.17/19 3.795s, n=6808982, sd=0} 13. f4 {+1.10/19 3.012s, n=7186707, sd=0} +Nxd5 {-1.19/19 2.431s, n=4467510, sd=0} +14. exd5 {+1.14/20 2.393s, n=5917176, sd=0} +Ne7 {-1.04/19 1.907s, n=3584629, sd=0} +15. Bxd7+ {+1.06/19 2.354s, n=5808237, sd=0} +Qxd7 {-0.96/18 2.078s, n=3954887, sd=0} +16. c4 {+1.09/19 2.062s, n=5303090, sd=0} Rg6 {-1.15/18 1.966s, n=3781647, sd=0} +17. Qe2 {+1.13/17 1.682s, n=4170137, sd=0} +Qg4 {-1.27/17 2.013s, n=3847163, sd=0} +18. Qxg4 {+1.39/20 2.195s, n=5665497, sd=0} +Rxg4 {-1.36/19 2.028s, n=3937796, sd=0} +19. h3 {+1.38/19 2.030s, n=5354708, sd=0} Rg8 {-1.30/18 1.923s, n=3779817, sd=0} +20. fxe5 {+1.36/19 1.916s, n=5097965, sd=0} +dxe5 {-1.36/19 1.985s, n=3960370, sd=0} +21. Nf3 {+1.30/19 4.255s, n=11401036, sd=0} +f6 {-1.41/19 2.188s, n=4519088, sd=0} 22. Nh4 {+1.37/18 1.196s, n=3302226, sd=0} +Bg7 {-1.43/17 1.296s, n=2658805, sd=0} +23. Be3 {+1.45/17 1.203s, n=3318734, sd=0} b6 {-1.49/18 2.552s, n=5452055, sd=0} +24. Rac1 {+1.50/17 1.108s, n=3244414, sd=0} +O-O-O {-1.50/18 2.740s, n=6066878, sd=0} +25. Nf5 {+1.44/18 1.039s, n=3267996, sd=0} +Nxf5 {-1.52/18 1.187s, n=2772165, sd=0} +26. Rxf5 {+1.49/19 1.515s, n=4878705, sd=0} +Kd7 {-1.48/17 1.395s, n=3282441, sd=0} +27. Rh5 {+1.49/18 1.203s, n=3868631, sd=0} a5 {-1.48/18 1.052s, n=2534563, sd=0} +28. b3 {+1.50/17 1.228s, n=4050325, sd=0} Rb8 {-1.52/15 0.876s, n=2069942, sd=0} +29. a4 {+1.50/18 1.078s, n=3484353, sd=0} Bf8 {-1.48/18 0.985s, n=2397318, sd=0} +30. g4 {+1.50/19 0.861s, n=2873110, sd=0} Rg6 {-1.48/21 1.309s, n=3280453, sd=0} +31. Kg2 {+1.50/21 1.776s, n=5956712, sd=0} +Bg7 {-1.48/20 2.294s, n=5492783, sd=0} +32. Kf2 {+1.50/18 0.951s, n=3122342, sd=0} +Bf8 {-1.55/18 1.118s, n=2691350, sd=0} +33. Kg2 {+1.50/21 1.149s, n=3894036, sd=0} +Rc8 {-1.55/18 1.425s, n=3466489, sd=0} +34. Kf3 {+1.64/19 0.760s, n=2575115, sd=0} +Ba3 {-1.71/17 0.779s, n=1874009, sd=0} +35. Rd1 {+1.69/18 0.637s, n=2100225, sd=0} +Bf8 {-1.73/18 0.611s, n=1492893, sd=0} +36. Ke4 {+1.71/19 0.584s, n=1976412, sd=0} +Ke8 {-1.80/17 0.717s, n=1709553, sd=0} +37. Rf1 {+1.92/19 1.079s, n=3614536, sd=0} +Bg7 {-1.96/18 1.059s, n=2537520, sd=0} 38. c5 {+2.58/20 1.460s, n=5058866, sd=0} +bxc5 {-2.46/17 0.590s, n=1449673, sd=0} +39. Rc1 {+2.76/20 0.835s, n=2934459, sd=0} +Bf8 {-2.56/17 0.641s, n=1597358, sd=0} +40. Kf5 {+2.91/19 0.493s, n=1737558, sd=0} +Rg8 {-2.85/19 0.601s, n=1506531, sd=0} +41. Bxc5 {+2.81/19 0.476s, n=1726739, sd=0} +Kd7 {-2.93/20 0.871s, n=2364932, sd=0} +42. Bxf8 {+2.85/20 0.464s, n=1771703, sd=0} +Rcxf8 {-3.10/20 0.608s, n=1697153, sd=0} +43. Rxh6 {+3.20/22 0.654s, n=2706041, sd=0} +Rh8 {-3.11/21 0.538s, n=1567516, sd=0} +44. Rxh8 {+3.43/23 0.575s, n=2708014, sd=0} +Rxh8 {-3.25/22 0.619s, n=1967771, sd=0} +45. Kxf6 {+3.47/23 0.720s, n=3762316, sd=0} +Rxh3 {-3.52/21 0.600s, n=2006437, sd=0} +46. Kxe5 {+3.62/22 0.448s, n=2502314, sd=0} +Rxd3 {-3.65/21 0.458s, n=1635311, sd=0} +47. Rc5 {+3.88/22 0.481s, n=2917040, sd=0} +Re3+ {-3.72/22 0.934s, n=3504283, sd=0} +48. Kf5 {+3.75/22 0.643s, n=4013158, sd=0} +Rxb3 {-3.72/20 0.462s, n=1733016, sd=0} +49. g5 {+4.01/23 0.667s, n=4254234, sd=0} Kd6 {-3.60/22 0.502s, n=1835979, sd=0} +50. Rxa5 {+4.03/22 0.433s, n=2684152, sd=0} +c5 {-3.62/22 0.512s, n=1812687, sd=0} +51. dxc6 {+5.75/22 0.439s, n=2829436, sd=0} +Kxc6 {-3.17/20 0.541s, n=1888788, sd=0} +52. g6 {+5.75/24 0.541s, n=3584355, sd=0} +Rf3+ {-3.17/21 0.398s, n=1456274, sd=0} +53. Kg5 {+8.47/20 0.425s, n=2940321, sd=0} +Rg3+ {-3.43/21 0.487s, n=1777968, sd=0} +54. Kf6 {+10.54/26 0.526s, n=3703012, sd=0} +Rf3+ {-3.43/23 0.683s, n=2538509, sd=0} +55. Rf5 {+11.72/26 0.527s, n=3801442, sd=0} +Rd3 {-8.42/21 0.446s, n=1627302, sd=0} +56. g7 {+11.72/28 0.468s, n=3328239, sd=0} +Rd8 {-8.61/23 0.401s, n=1506566, sd=0} +57. Kf7 {+12.05/27 0.574s, n=4143467, sd=0, Black makes an illegal move: c5c4} +1-0