move pgn binary to separate branch

pull/83/head
Thibault Duplessis 2012-10-12 20:47:18 +02:00
parent d55595c137
commit 0f05de9582
2 changed files with 0 additions and 75 deletions

View File

@ -1,38 +0,0 @@
package lila
package mongodb
object PgnBinary {
def encode(pgn: String): Array[Byte] = {
val ints = pgnToInts(pgn)
val bytes = ints grouped 4 map {
case Nil => 0
case a :: Nil => a
case a :: b :: Nil => a + 32
def decode(bytes: Array[Byte]): String = ""
private def pgnToInts(str: String): List[Int] =
stringToInt get (str take 1) map (i => (str drop 1, i)) orElse {
if (str startsWith "O-O-O") stringToInt("O-O-O") map (i => (str drop 5), i)
else if (str startsWith "O-O") stringToInt("O-O") map (i => (str drop 3), i)
else None
} fold ((int, rest) => int :: consumeString(rest), Nil)
private val symbols: List[String] = " " :: {
('a' to 'h').map(_.toString) ++
(1 to 8).map(_.toString) ++
"RNBQKPx=+#".toList.map(_.toString) ++
Seq("O-O", "O-O-O")
}.toList
private val stringToInt: Map[String, Int] = symbols.zipWithIndex.toMap
private val intToString: Map[Int, String] = (stringToByte map {
case (a, b) (b, a)
}).toMap
// utility methods for printing a byte array
def showArray(b: Array[Byte]) = b.map(showByte).mkString(" ")
def showByte(b: Byte) = pad(((b + 256) % 256).toHexString.toUpperCase)
private def pad(s: String) = if (s.length == 1) "0" + s else s
}

View File

@ -1,37 +0,0 @@
package lila
package mongodb
class PgnBinarySpec extends LilaSpec {
val pgns = List(
"",
"e4",
"e4 Nc6",
"""e4 Nc6 d4 e6 Bb5 d6 Bxc6+"""
// """e4 Nc6 d4 e6 Bb5 d6 Bxc6+ bxc6 Nf3 Nf6 Bg5 Be7 O-O Ba6 Re1 Nd7 b3 O-O Bxe7 Qxe7 c4 d5 c5 Nf6 e5 Ne4 Nbd2 f6 Nxe4 dxe4 Nd2 fxe5 dxe5 Qxc5 Re3 Qxe5 Rc1 Qf6 Nxe4 Qh4 Rcc3 Rf7 Rxc6 Raf8 f3 Bb7 Rxe6 Bxe4 R6xe4 Qd8 Qxd8 Rxd8 Re8+ Rxe8 Rxe8+ Rf8 Re7 Rf7 Rxf7 Kxf7 Kf2 Ke6 Ke3 Kd5 Kd3 c5 g3 g5 h3 h5 h4 gxh4 gxh4 a6 a3 a5 a4 Ke5 Ke3 Kd5 f4 c4 bxc4+ Kxc4 f5 Kd5 f6 Ke6 f7 Kxf7 Kf4 Kg6 Ke4 Kf6 Kf4 Kg6 Ke4 Kf6 Kf4 Kg6""",
// """e4 h6 Bc4 g5 Qg4 f6 Nf3 Bg7 O-O e5 d3 d6 Be3 c5 a3 Bxg4 Bxg8 Rxg8 Bxg5 hxg5 Nxe5 fxe5 Nc3 a6 b4 Nc6 bxc5 dxc5 d4 Nxd4 Rfd1 Nxc2 Rxd8+ Kxd8 Rc1 Nxa3 Ra1 Nc4 Rb1 Rc8 Rxb7 Bf6 h3 Be2 Nxe2 Nd2 Ra7 Nxe4 Rxa6 Bg7 Re6 Re8 Rg6 Bf8 Rg8 Be7 Rg6 Rf8 Ng3 Rc7 Nxe4 Ke8 g3 c4 h4 Rd7 hxg5 Rd6 Nxd6+ Bxd6 Rxd6 Rf7 g6 Re7 f4 exf4 gxf4 c3 Rc6 Re1+ Kf2 c2 Rxc2 Re4 Kf3 Re6 Rg2 Rf6 g7 Rf7 f5 Rxf5+ Kg4 Rf7 Kh5 Rf5+ Kh4 Rf4+ Kg5 Rf7 Kg6 Re7 g8=Q+ Kd7 Qf8 Re6+ Kf7 Re7+ Kg8 Re8 Qxe8+ Kxe8 Rf2 Kd8 Kf8 Kc7 Rc2+ Kd6 Kf7 Kd7 Rd2+ Kc7 Ke7 Kc6 Rc2+ Kd5 Kf6 Kd4 Rd2+ Kc3 Ra2 Kb3 Ra8 Kc4 Ke5 Kc5 Ke4 Kd6 Kd4 Ke6 Ke4 Kd6 Kd4 Ke6 Ke4 Kd6 Ra6+ Ke7 Ke5 Kf7 Kf5 Ke7 Ra7+ Kd6 Ke4 Kc5 Ra4 Kd6 Ra5 Ke6 Rc5 Kd6 Ra5 Ke6 Ra6+ Kf7 Kf5 Ke7 Ke5 Kf7 Kf5 Ke7 Ke5 Kf7 Ra7+ Kg6 Kf4 Kf6 Ra5 Ke6 Ke4 Kf6 Kf4 Ke6 Ra6+ Kd5 Ra5+ Kc4 Ke3 Kb3 Kd3 Kb2 Kd2 Kb3 Kd3 Kb2 Kd2 Kb3 Rh5 Kc4 Kc2 Kd4 Kb3 Kd3 Kb4 Kd4 Kb5 Kd3 Kc5 Kc3 Rh1 Kd3 Rh3+ Ke4 Kc4 Ke5 Re3+ Kf5 Kd5 Kg4 Re4+ Kf3 Rh4 Kg3 Rh8 Kf3 Rf8+ Ke3 Re8+ Kf3 Kd4 Kf4 Rf8+ Kg3 Ke3 Kg4 Ke4 Kg3 Ke3 Kg4 Ke4 Kg3 Kf5 Kf3 Ke5+ Ke3 Kd5 Kd3 Kc5 Kc3 Kb5 Kd3 Rf3+ Ke4 Rf1 Ke5 Kc5 Ke4 Kc4 Ke5 Re1+ Kf5 Kd4 Kg4 Ke4 Kg5 Rf1 Kg4 Ke5 Kg5 Ke6 Kg4 Kf6 Kh5 Kf5 Kh6 Rg1 Kh7 Kf6 Kh8 Rh1+ Kg8 Ke7 Kg7 Rf1 Kg6 Ke6 Kg5 Ke5 Kg6 Ke6 Kg5 Kf7 Kg4 Kf6 Kg3 Kf5 Kg2 Re1 Kf2 Ra1 Ke3 Ke5 Kd3 Ra3+ Kc2 Kd4 Kb2 Ra6 Kb3 Kc5 Kc2 Kc4 Kd2 Re6 Kc2 Rd6 Kb2 Rb6+ Kc1 Kd3 Kd1 Re6 Kc1 Kc3 Kd1 Rd6+ Ke2 Re6+ Kf3 Kd4 Kf4 Rf6+ Kg5 Rf1 Kg4 Ke4 Kg3 Ke3 Kg2 Re1 Kg3 Rg1+ Kh4 Kf3 Kh3 Kf4 Kh2 Re1 Kg2 Kg4 Kf2 Rd1 Ke3 Kf5 Ke2 Ra1 Ke3 Ke5 Kd3 Ra4 Ke3 Kd5 Kd3 Kc5 Ke3 Kd5 Kd3 Ra3+ Kd2 Kd4 Ke2 Ke4 Kf2 Kf4 Ke2 Ke4 Kd2 Kd4 Kc2 Kc4 Kb2 Rd3 Kc2 Rf3 Kd2 Kb3 Ke2 Rh3 Kd2 Ka3 Kc2 Kb4 Kd2 Kc4 Ke2 Rg3 Kf2 Rd3 Ke2 Rg3 Kf2 Rb3 Ke2 Kd4 Kd2 Rb2+ Kc1 Rh2 Kd1 Ke3 Ke1 Kf3 Kf1 Kg3 Kg1 Ra2 Kf1 Kh2 Ke1 Kg1 Kd1 Kf1 Kc1 Ke1 Kb1 Rd2 Kc1 Rh2 Kb1 Kd1 Ka1 Kc1""",
// """f4 f5 Nc3 g6 Nf3 Bg7 e3 d6 Bb5+ c6 Bc4 a6 O-O b5 Bb3 Nf6 Ng5 Qc7 a4 Qb6 Bf7+ Kf8 axb5 cxb5 Nd5 Nxd5 Bxd5 Ra7 Nf7 e6 Nxh8 exd5 Nxg6+ hxg6 Qf3 Bb7 d4 Nd7 Bd2 Nf6 Ba5 Qc6 c3 Qc4 Qh3 Ng4 Bb4 Qc7 Ba5 Qe7 Rf3 Qe4 Qh7 Ra8 h3 Kf7 Qh4 Rh8 Qg3 Nf6 Bb4 Bf8 Rff1 Nh5 Qf2 Be7 Rfe1 Qd3 Rad1 Qc4 Rf1 Qc7 Ra1 Qc4 Ba5 Qb3 Bb4 Ng7 Ra3 Qc4 Raa1 Bh4 Qf3 Be7 Rfc1 Ne8 Rc2 Bh4 Kh1 Qc7 Re2 Ng7 Ba5 Qc4 Bb4 Qc6 Rd2 Bd8 Kg1 Bb6 Ba5 Qc7 Bxb6 Qxb6 b4 Qc7 Rd3 Qc4 Qf1 Qb3 Qe1 Qc2 Qf1 Ne8 Rc1 Qb2 Rb1 Qc2 Rc1 Qb3 Rb1 Qc4 Qe2 Nf6 Qc2 Ne4 Rc1 Qc8 Rf1 Rh4 Ra1 Qh8 Qb3 Ke6 Kf1 Qf6 Qc2 Rh8 Ra5 Qh4 Ra2 Qg3 Qe2 Qh2 Ke1 Rc8 Ra3 Qg3+ Kf1 Rg8 Qf3 Qh4 Ra1 g5 fxg5 Rxg5 Qf4 Qh6 Ra2 Qg6 Rc2 Ng3+ Ke1 Nh5 Qf2 Nf6 Qe2 Ne4 Ra2 Rg3 Kd1 Kd7 Kc1 Kc6 Qf1 Kb6 Qe2 Qg5 Kb1 Nf6 Qf1 Nh5 Rf2 Bc8 Re2 Qg6 Ka1 Be6 Rd1 Bg8 Kb2 Bh7 Ka1 Qf6 Qe1 Qg5 Qf2 Bg6 Rh1 Qh6 Kb2 Qh7 Ra1 Be8 Kb3 Bd7 Rea2 Bc8 Rd2 Rg7 Qf3 Bb7 Rf2 Rf7 g4 Ng7 g5 Qg6 h4 Nh5 Qe2 Ng3 Qa2 Ne4 Rf4 Kc6 Raf1 Qh5 Rg1 Qg6 Qa5 Rd7 Re1 Nd2+ Kc2 Nc4 Qa1 Rh7 Qd1 Bc8 Qd3 Kb6 Re2 Na3+ Kd1 Nc4 Ke1 Rg7 Ra2 Qh5 Rg2 Be6 Ra2 Rg6 Qe2 Qh7 Kd1 Qe7 Qd3 Qh7 Kc2 Qh5 Kb1 Qh8 Kc1 Rg8 Kb1 Qg7 Kc1 Rh8 Kd1 Qg6 Kc2 Rf8 Kd1 Bg8 Raf2 Bh7 Kc1 Qf7 Kb1 Bg6 Re2 Qh7 Kc2 Qh5 Kb1 Na3+ Ka1 Nc4 Rg2 a5 bxa5+ Nxa5 Ra2 Nb3+ Kb2 Na5 Ka1 Nc4 Rh2 Ra8+ Ra2 Ra3 Rxa3 Nxa3 Kb2 Nc4+ Kc2 Qh8 Qe2 Bh5 Qe1 Qa8 Kd3 Qa6 Rxf5 Qa4 Rf2 Bg6+ Ke2 Qc2+ Kf3 Qe4+ Kg3 Nxe3 Re2 Qg4+ Kh2 Nc4 Re7 Qf4+ Qg3 Qd2+ Kg1 Qc1+ Kh2 Qc2+ Kg1 Qd1+ Re1 Qh5 Re7 Qd1+ Re1 Qd2 Re7 Kc6 Qh3 Nb6 Rg7 Be4 Rf7 Qd1+ Rf1 Qh5 Ra1 Bg6 Ra7 Be8 Qe6 Qd1+ Kf2 Qd2+ Qe2 Qf4+ Kg2 Bd7 Qe1 Qf5 Qg3 Qc2+ Kh1 Qe4+ Kh2 Qe2+ Kg1 Qd1+ Kf2 Qd2+ Kf1 Qd1+ Qe1 Qf3+ Kg1 Qg4+ Kf1 Qh3+ Ke2 Qg4+ Kf1 Qf3+ Kg1 Nc4 Qe7 Qg3+ Kh1 Qh3+ Kg1 Qg3+ Kh1 Qh3+ Kg1 Nb6 Qe1 Bg4 Rf7 Nd7 Re7 Bf5 Re3 Qg4+ Qg3 Qd1+ Re1 Qh5 Qf4 Bg6 Re3 Qd1+ Kf2 Qd2+ Kg3 Qd1 Re7 Qg1+ Kh3""",
// """Nc3 Nc6 Nf3 Nf6 a3 d6 h3 Bf5 d3 e6 Bf4 Be7 e3 Qd7 Be2 Rc8 Qd2 Rf8 Rf1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8 Rd1 Rc8 Rc1 Rd8""",
// """e4 c5 d3 Nc6 c4 e6 Nf3 Be7 Be2 d6 O-O Nf6 b3 Bd7 Bb2 O-O Nc3 Qb6 Qc2 Ng4 h3 Nb4 Qb1 Nh6 Ba3 a6 Bxb4 cxb4 Nd1 Rac8 Nb2 e5 Nd2 f5 Kh1 Bh4 f3 Qe3 Qd1 f4 Nb1 Nf7 Qd2 Qb6 Nd1 Ng5 Nb2 Ne6 Nd1 Qd4 Qb2 Qxb2 Nxb2 b5 Nd2 Kh8 a3 bxa3 Rxa3 Nd4 Bd1 Ra8 Nb1 Rfb8 Ra2 b4 Na4 Kg8 Nd2 Ra7 Kh2 Rc7 Nb2 Ra8 Na4 Bg3+ Kg1 Rb8 Kh1 a5 Nb2 Rc5 Nb1 Bh4 Nd2 Kf7 Nb1 g6 Nd2 h6 Nb1 Kg7 Nd2 Rf8 Nb1 Ra8 Nd2 Rcc8 Nb1 Be6 Nd2 Re8 Ra1 Re7 Ra2 Rea7 Ra4 Rc7 Ra2 Bg3 Ra4 Bf7 Ra2 Bh4 Ra4 Rcc8 Ra2 Be7 Ra4 Rc7 Ra2 Rb7 Ra4 Be6 Ra2 Bd7 Ra1 Bh4 Ra2 Bc6 Ra1 Rbb8 Ra2 Be7 Ra1 Bg5 Ra2 Bd7 Ra1 Bh4 Ra2 Be6 Ra1 Rb7 Ra2 Rc7 Ra1 Bf6 Ra2 h5 Ra1 Bg5 Ra2 Bh4 Ra1 Be7 Ra2 Bd7 Ra1 Rcc8 Ra2 Kf7 Ra1 Bh4 Ra2 Kg7 Ra1 Rcb8 Ra2 Rf8 Ra1 Rh8 Ra2 Rhg8 Ra1 Rgc8 Ra2 Be6 Ra1 Rcb8 Ra2 Bd7 Ra1 Rd8 Ra2 Bg5 Ra1 Rdb8 Ra2 Be6 Ra1 Rc8 Ra2 Rc7 Ra1 Bh4 Ra2 Bd7 Ra1 Kh7 Ra2 Bf6 Ra1 Rb7 Ra2 Rbb8 Ra1 Bh4 Ra2 Be7 Ra1 Kg7 Ra2 Bg5 Ra1 Bf6 Ra2 g5 Ra1 Kg6 Ra2 Be6 Ra1 Rb7 Ra2 Bd7 Ra1 Bc8 Ra2 Raa7 Ra1 Rc7 Ra2 Be6 Ra1 Rc8 Rb1 Rca8 Ra1 Rc7 Rb1 Rcc8 Ra1 Rd8 Ra2 Ra7 Ra1 Rda8 Ra2 Rc7 Ra1 Rc5 Ra2 Ra7 Ra1 Rcc7 Ra2 Rc8 Ra1 Rc6 Ra2 Bg7 Ra1 Ra8 Ra2 Bf6 Ra1 Rcc8 Ra2 Bg7 Ra1 Bh6 Rb1 Kf6 Ra1 Rc7 Ra2 Kg6 Ra1 Bg7 Rb1 Re7 Ra1 Rb7 Rb1 Rd7 Ra1 Bf6 Ra2 Rda7 Ra1 Bg7 Ra2 Rc7 Kh2 Bf6 Kh1 Rh7 Kh2 Rg7 Rg1 Rc7 g3 h4 g4 Rca7 Na4 Ra6 Ra1 Rb8 Ra2 Rb7 Ra1 Be7 Ra2 Rc7 Ra1 Bf8 Ra2 Bg7 Ra1 Rac6 Ra2 Rc8 Ra1 Ra6 Ra2 Rb8 Ra1 Rc6 Ra2 Rcc8 Ra1 Rc7 Ra2 Rc6 Nb2 Ra6 Kg2 Rb7 Kf2 Bf6 Nf1 Ra8 Nh2 Rbb8 Na4 Ra7 Ke1 Rh7 Kd2 Re7 Kc1 Ra7 Kb2 Rc7 Rg2 Rc6 Nf1 Bg7 Nd2 Rcc8 Be2 Rc7 Bd1 Bf6 Kc1 Ra7 Nb2 Rc8 Nf1 Re8 Kd2 Rea8 Ke1 Rc7 Ra4 Bd7 Ra1 Bc6 Kf2 Be8 Nd2 Raa7 Rg1 Bc6 Kg2 Rcb7 Rf1 Rf7 Rf2 Rf8 Nf1 Re8 Bc2 Rc8 Nd1 a4 bxa4 b3 Bb1 Rxa4 Rxa4 Bxa4 Nb2 Be8 Nd2 Bc6 Rf1 Ra8 Rc1 Be7 Rc3 Ra3 Kf1 Ra1 Kf2 Bd8""",
// """e4 c5 Nf3 Qb6 c4 Nf6 e5 Ng4 h3 Qh6 d3 Qh5 Be2 Nc6 O-O Ngxe5 Nxe5 Qxe5 g3 b6 h4 Nd4 Re1 Qf6 Be3 Ba6 Bxd4 Qxd4 Bh5 Qxb2 Qf3 O-O-O Qxf7 Qxa1 Bg4 Qxa2 Qf5 Bb7 Bf3 Qb2 Bxb7+ Kxb7 Qd5+ Kb8 Re5 Qc1+ Kg2 a5 d4 cxd4 Qxd4 Qxb1 Re4 Rc8 Re5 d6 Re6 Qb4 Re4 Kb7 Qd5+ Kc7 Qe6 Kb7 Qd5+ Kc7 Qe6 Rb8 c5 Qxc5 Rc4 a4 Rxc5+ bxc5 Qa2 Rb4 Qd2 Kc6 Qd1 e5 Qf3+ d5 Qf5 Re4 Qc8+ Kb5 Qb8+ Kc6 Qa8+ Kd6 Qd8+ Kc6 Qe8+ Kd6 Qb8+ Ke6 Qb6+ Kd7 Qb7+ Ke6 Qc6+ Bd6 Qa6 h6 Qa7 g5 Qg7 Re8 Qg6+ Kd7 hxg5 Ra8 gxh6 Ke7 h7 Re1 Qg7+ Ke6 h8=Q Rxh8 Qxh8 Kd7 Qh7+ Kc6 Qh8 Kd7 Qh7+ Kc6 Qg8 d4 Qg4 Kc7 Qg7+ Kd8 Qf6+ Kd7 Qf5+ Kd8 Qf6+ Kd7 Qf5+ Ke7 Qg5+ Ke8 Qg6+ Ke7 Qg5+ Kf7 Qf5+ Ke8 Qg6+ Ke7 Qg5+ Kf7 Qh5+ Ke7 Qh4+ Kf7 Qh5+ Kf8 Qf5+ Ke7 Qg5+ Kf7 Qf5+ Ke7 Qg5+ Kf7 Qf5+ Ke8 Qg6+ Kd7 Qg7+ Kd8 Qf6+ Kd7 Qf7+ Be7 Qd5+ Bd6 Qf7+ Kc6 Qa2 Be7 Qxa4+ Kd5 Qa2+ Ke4 Qc2+ Kd5 Qb3+ Kc6 Qa4+ Kd5 Qa2+ Kd6 Qa6+ Kd5 Qa2+ Kc6 Qd2 Re4 Qd3 Kd5 f3 Re3 Qd2 Ra3 Qe1 Ra2+ Kh3 c4 Qe4+ Kd6 g4 Bf6 Qg6 Ke7 Qh7+ Kd6 Qh6 Ke6 Qf8 Ra7 Qg8+ Rf7 Qe8+ Re7 Qc8+ Kd5 Qf5 Re6 Qe4+ Kd6 Qf5 Bg7 Kh4 d3 Qf7 d2 Qg8 Kc5 Qxe6 Bf6+ g5 Bxg5+ Kxg5 d1=Q Qxe5+ Kb4 Qb8+ Ka4 Qa7+ Kb3 Qb7+ Kc2 Qh7+ Kc3 Qg7+ Kb3 Qb7+ Kc3 Qg7+ Kb3 Qb7+ Ka4 Qa7+ Kb4 Qb7+ Ka5 Qa7+ Kb4 Qb7+ Ka5 Qc7+ Kb4 Qb7+ Kc3 f4 Qd6 f5 Kd2 f6 Kd3 Kg6 Qd8 f7 Ke3 Kg7 Qg5+ Kh8 Qf6+ Kg8 Qe6 Kg7 Qg4+ Kh8 Qh4+ Kg8 Qg5+ Kh7 Qd8 Kg7 Qg5+ Kh8 Qh6+ Kg8 Qg5+ Kh8 Qh4+ Kg7 Qg4+ Kh8 Qh4+ Kg8 Qg5+ Kh7 Qd8 Qg2 Qf8 Kg6 c3 Qc2 Qb4 Kg7 Qd4+ Kg8 Qd2 Qa4 Qg2+ Kh8 c2 Qe8+ Kd2 Qd8+ Ke2 Qe7+ Kd3 Qd8+ Kc3 Qc8+ Kb3 Qb8+ Ka2 Qa7+ Kb1 Qb6+ Ka1 Qa6+ Kb1 Qb5+ Ka1 Qa6+ Kb1 Qb6+ Ka1 Qa6+ Kb1 Qb5+ Ka1 Qa4+ Kb1 Qb3+ Ka1 Qa4+ Kb1 Qb3+ Ka1 Qa3+ Kb1 Qb4+ Ka2 Qa4+ Kb1 Qb3+ Ka1 Qa3+ Kb1 Qb3+ Ka1 Qa4+ Kb1 Qb5+ Ka1 Qa4+ Kb1 Qb4+ Ka2 Qa4+ Kb1 Qb3+ Ka1 Qa3+ Kb1 Qb3+ Ka1 Qc3+ Kb1 Qb3+ Ka1 Qa3+ Kb1 Qb4+ Ka2 Qa4+ Kb1 Qb3+ Ka1 Qa3+ Kb1""",
// """Nf3 d5 d3 e6 Bf4 Nf6 Nc3 Bd6 g3 e5 Be3 d4 Bxd4 exd4 Ne4 Nxe4 dxe4 O-O Nxd4 Bb4+ c3 Ba5 Nf5 b5 Qd5 c6 Qxd8 Rxd8 Ne7+ Kf8 Nxc8 Rxc8 a4 b4 O-O-O b3 e3 c5 Rd5 Bb6 Bc4 Nc6 f3 Na5 Be2 c4 Kd2 g6 h4 h5 g4 hxg4 Rg1 gxf3 Bf1 f2 Rgg5 Nc6 a5 Nxa5 Ke2 Kg7 Rd7 Nc6 Kxf2 Nb8 Rd2 Bd8 Rb5 Bxh4+ Ke2 a6 Rbd5 a5 Kd1 a4 Bh3 Rc7 Bg4 Nc6 Be2 Na5 Rd7 Rxd7 Rxd7 a3 bxa3 Bf6 e5 Bxe5 Bf3 Ra6 Bd5 Bxc3 Rxf7+ Kh6 a4 Bb4 Rc7 c3 Rc8 Ba3 Rxc3 b2 Ba2 Rd6+ Ke2 b1=Q Bxb1 Bb4 Rc1 Nb3 Rd1 Rf6 Bc2 Nc5 Rd4 Ba5 Rc4 Nd7 Rc8 Nb6 Rb8 Nd5 e4 Nf4+ Kf1 Re6 Kf2 Nh3+ Ke2 Nf4+ Kf2 Bd2 Ra8 Nh3+ Kg3 Ng1 Kf2 Nh3+ Kg3 Ng5 Rh8+ Kg7 Rd8 Be3 Bb3 Rxe4 Rd3 Bf4+ Kf2 Ne6 Rd5 Nd4 Rd7+ Kh6 Bd1 g5 a5 Bb8 Rb7 Re8 Rb6+ Kg7 a6 Rf8+ Ke3 Nf5+ Kd3 Ne7 Kc4 Nc8 Rb4 Nd6+ Kd3 Rd8 Bf3 Nf7+ Ke4 Nd6+ Kd3 Nf5+ Kc4 Ne3+ Kc3 Kg6 Re4 Nd5+ Kc4 Nf6 Re6 Kf5 Re7 Kf4 Bb7 Kg3 Re6 Nd7 Be4 Nf8 Rf6 g4 Rf7 Kh2 Rf2+ Kg1 a7 Bxa7 Rg2+ Kh1 Rb2+ Kg1 Rg2+ Kf1 Rxg4 Rc8+ Kd3 Rd8+ Kc4 Rc8+ Kd5 Rc5+ Kd6 Rc8 Bd3+ Kf2 Ba6 Rd8+ Kc7 Rd7+ Kc6 Rh7 Rf4+ Ke3 Ra4 Bd4 Bc8 Ke4 Kd6 Rh4 Bd7 Nxd7 Kxd7 Ke5 Rb4 Rh7+ Kd8 Ba7 Rb5+ Ke6 Rb1 Bc5 Rc1 Kd6 Rd1+ Kc6 Kc8 Bd6 Rc1+ Kd5 Rd1+ Ke6 Rf1 Rh8+ Kb7 Rh5 Kb6 Kd7 Rf7+ Ke6 Rf3 Be7 Re3+ Kd7 Rd3+ Ke8 Re3 Kf7 Rf3+ Kg6 Kc6 Kh6 Rc3 Bf6 Rc1 Kg7 Kd6 Kf7 Rf1 Rg5 Rd1 Be5+ Kd7 Rg6 Rf1+ Kg7 Rb1 Bd6 Rf1 Bf8 Rd1 Kg8 Rf1 Bd6 Rd1 Ba3 Ra1 Bf8 Ra8 Rg7+ Ke6 Rg6+ Kf5 Rg1 Ke6 Re1+ Kf5 Rf1+ Ke6 Kg7 Ra2 Kg6 Rb2 Ba3 Rb3 Ra1 Rg3+ Kh6 Kd5 Rd1+ Kc6 Bf8 Rf3 Kg7 Rg3+ Kf7 Rf3+ Ke7 Re3+ Kd8 Rf3 Bb4 Rf1 Rxf1 Kb6 Rf5 Kc6 Ke7 Kb6 Kd7 Kb7 Rf6 Ka8 Kc7 Ka7 Ba5 Ka8 Rf8+ Ka7 Bb4 Ka6 Kc6 Ka7 Kb5 Kb7 Bd6 Ka7 Ka5 Kb7 Rb8+ Kc6 Bb4 Kc7 Rb6 Kd8 Rb7 Ke8 Ka6 Kd8 Kb6 Ke8 Re7+ Kf8 Kc6 Kg8 Kd6 Kh8 Ke6 Kg8 Kf6 Kf8 Ke6 Kg8 Bd6 Kf8 Kf6 Kg8 Bc7 Kf8 Bd8 Kg8 Kg6 Kf8 Kh7""",
// """e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3 Bb7 c3 d5 exd5 Nxd5 d4 Na5 dxe5 Nxb3 axb3 h6 Qe2 Qc8 c4 bxc4 bxc4 Nb4 Nc3 Qe6 Rd1 Be7 Nd4 Qg6 f4 O-O f5 Qh7 Be3 Rae8 Qf2 Bc5 Nc2 Bxe3 Nxe3 Rxe5 Qf4 f6 c5 Bc8 Qc4+ Kh8 Qxb4 Rxe3 Nd5 Ree8 Nxc7 Re2 Re1 Rc2 g4 h5 c6 Rg8 Qb3 Bxf5 gxf5 Qxf5 Qg3 Qc5+ Re3 Qxc6 Ne6 Rxb2 Rae1 Qd7 Qg6 Rb5 Rg3 a5 Rg2 Qe8 Qd3 a4 Kh1 Ra5 Ree2 Qc6 Qb1 Rb5 Qg6 Qd7 h4 Qe8 Qd3 Qb8 Re1 Rb4 Nd4 Re8 Rf1 Re7 Nf5 Ree4 Qd7 Rb7 Qd1 Qe8 Kg1 Reb4 Qc1 Rb1 Qxb1 Rxb1 Rxb1 a3 Rc1 a2 Rd1 Qa8 Ra1 Qe4 Rf2 Qb1+ Rf1 Qb2 Rae1 Kh7 Kh1 Qb4 Rd1 Qb7+ Kh2 g6 Ne3 Qe7 Rfe1 Qb4 Kh3 g5 hxg5 fxg5 Rf1 Qa3 Rfe1 Kg6 Kg3 h4+ Kf3 Kh5 Ke2 g4 Rg1 Qa6+ Kf2 Qf6+ Ke2 Qf3+ Kd2 g3 Rdf1 Qb7 Rf5+ Kg6 Rff1 Qb5 Ra1 Qb2+ Kd3 Qb3+ Ke2 Kg5 Raf1 Qb2+ Kd3 Qa3+ Ke2 Qa6+ Kf3 Qd6 Rc1 Qf4+ Ke2 h3 Rgf1 Qb8 Rc5+ Kg6 Rcc1 Qb7 Rg1 Kh7 Ng4 Qe4+ Ne3 h2 Rh1 Kg6 Ra1 Kg5 Rad1 Kh4 Rc1 Qe5 Kd3 Kh3 Rhf1 Qe6 Kd2 Qe4 Rfe1 Qd4+ Kc2 Qb4 Kd3 Qb3+ Ke4 Qb7+ Kd4 Qg7+ Kc4 Qb2 Kd3 Qb5+ Kd4 Qa5 Rf1 Qa7+ Kd3 Qd7+ Kc3 Qb7 Rfd1 g2 Nxg2 Kxg2 Rh1 Qf3+ Kb2 Qe2+ Kb3 Qe6+ Kb2 Qa6 Rhe1 Qa5 Red1 Qa8 Kb3 Kg3 Rc3+ Kf2 Rcc1 Kf3 Re1 Qd5+ Ka3 Kg4 Rcd1 Qa8+ Kb3 Kh3 Kb2 Qg2+ Kc3 Qb7 Re3+ Kg4 Ree1 Kf3 Rc1 Kf2 Rf1+ Kg3 Rcd1 Qb5 Rc1 Kh3 Rcd1 Qb7 Rde1 Kg2 Rh1 Qb8 Rc1 Kf3 Rhf1+ Kg3 Rcd1 Qb7 Rh1 Qf3+ Kb2 Qe2+ Kb3 Qf2 Rc1 Kg2 Rhd1 Kh3 Rf1 Qe2 Rfe1 Qg2 Rcd1 Qf2 Rf1 Qe2 Rfe1 Qa6 Kb2 Qc4 Rc1 Qd5 Rcd1 Qa5 Rf1 Kg2 Rh1 Qa7 Rc1 Qf7 Rhd1 Qb7+ Kxa2 Qf7+ Kb2 Qf6+ Kb3 Qb6+ Kc4 Qc6+ Kd3 Qd5+ Ke3 Qg5+ Ke4 Qh4+ Ke3 Qh6+ Ke4 Qe6+ Kd4 Qd7+ Ke5 Qg7+ Ke4 Qg4+ Ke3 Qf3+ Kd4 Qf4+ Kd3 Qf5+ Kd4 Qf2+ Kd3 Qg3+ Ke4 Qg6+ Kf4 Qf6+ Ke4 Qe7+ Kd4 Qd8+ Ke4 Qe8+ Kd4 Qd7+ Ke5 Qg7+ Ke4 Qg6+ Kf4 Qf7+ Ke4 Qb7+ Ke3 Qb3+ Ke4 Qb4+ Ke3 Qb6+ Ke4 Qb4+ Ke3 Qa3+ Ke4 Qf3+ Kd4 Qf4+ Kd3 Qd6+ Ke4 Qe6+ Kd4 Qd6+ Ke4 Qg6+""",
// """Nf3 Nc6 Nc3 Nf6 e3 e6 Bb5 a6 Ba4 b5 Bb3 Na5 O-O Bd6 h3 Nxb3 axb3 Bb7 d3 b4 Na2 a5 c3 h5 e4 Rb8 Re1 e5 Bd2 Qe7 Qe2 Bc6 Nc1 Ra8 Ng5 a4 d4 a3 bxa3 Rxa3 Rxa3 bxa3 d5 Bb7 c4 h4 Nf3 Nh5 Na2 Nf4 Bxf4 exf4 e5 Bc5 d6 Qd8 b4 Ba7 c5 Bd5 Nc3 Bb7 Qd3 Bb8 Nd5 c6 Nxf4 Kf8 Qxa3 Rh6 Qa5 Qc8 Qa2 Qd8 Ne2 Rh5 Qc4 Kg8 Nf4 Rh6 Re4 g5 Ne2 Rg6 Rg4 Kf8 Qe4 Ba6 Ned4 Rg7 Qf5 Kg8 Nxg5 Bd3 Qf4 Qe8 Rxh4 Qd8 Ngf3 Ba7 Nf5 Bxf5 Qxf5 Rg6 Qh5 Qxh4 Qxh4 Kg7 Qd8 Rh6 Qa8 Bxc5 bxc5 Rh8 Qb7 Rd8 Qc7 Ra8 Qxd7 Ra1+ Kh2 Ra3 Qxc6 Rd3 d7 Kg8 Qd6 Rxd6 exd6 Kg7 c6 f6 c7 Kf7 d8=Q Kg7 c8=Q Kh7 d7 Kg6 Qe7 Kf5 d8=Q+ Kg6 h4 Kh6 g4 Kg6 Qxf6+ Kh7 Qfa6 Kg7 Qca8 Kh7 Qdb8 Kg7 Qf1 Kh7 Qbb1+ Kg7 Qbe1 Kf7 Qaa1 Kg8 Qad1 Kh8 g5 Kg8 g6 Kg7 Qg1 Kh6 g7 Kh7 g8=Q+ Kh6 Qa2 Kh7 Qg4 Kh6 Qh3 Kg6 Qae2 Kh7 h5 Kh6 Kh1 Kh7 h6 Kh8 h7 Kg7 h8=Q+ Kg6 Qha1 Kf7 Qac1 Kg8 Nh2 Kf8 Qhf1 Kg8 f4 Kh8 f5 Kh7 f6 Kh8 f7 Kg7 f8=B+ Kg8 Qf7+ Kxf7 Qf3+ Kg8 Qf7+ Kxf7 Qf2+ Kg8 Qf7+ Kxf7 Qf3+ Ke6 Qf5+ Kxf5 Qf4+ Kxf4 Kg2 Ke4 Kg3 Kd5 Kf4 Kc6 Ke5 Kb7 Kd6 Ka8 Kc6 Ka7 Bb4 Ka8 Bc5 Kb8 Nf3 Ka8 Nd4 Kb8 Ne6 Ka8 Nc7+ Kb8 Bd4 Kc8 Ba7 Kd8 Nd5 Ke8 Bb8 Kf7 Ne3 Ke6 Bg3 Ke7 Kc7 Ke6 Kd8 Kf6 Kd7 Kg5 Ke7 Kg6 Bf4 Kh5 Bg3 Kg6 Kf8 Kf6 Ke8 Ke6 Bf4 Kf6 Kd7 Kg6 Ke7 Kh5 Bg3 Kg6 Ke6 Kg7 Bd6 Kg6 Ke7 Kg5 Bg3 Kg6 Bh4 Kh5 Bf6 Kg6 Ke6 Kh7 Kf7 Kh6 Bh4 Kh5 Bg3 Kg5 Kf8 Kf6 Ke8 Ke6 Bf4 Kf6 Kd7 Kg6 Ke7 Kh5 Bg3 Kg6 Ke6 Kg7 Bd6 Kg6 Ke7 Kg5 Bg3 Kg6 Bh4 Kh5 Bf6 Kg6 Ke6 Kh7 Kf7 Kh6 Kg8 Kg6 Bh4 Kh5 Be7 Kh6 Kf7 Kh5 Bf6 Kh6 Bh4 Kh5 Be7 Kh6 Kg8 Kh5 Kf7 Kh6 Bh4 Kh5 Bg3 Kg5 Kg7 Kh5 Kf6 Kh6 Bf2 Kh5 Kf5 Kh6 Bh4 Kg7 Ke6 Kg6 Be7 Kh5 Kf5 Kh6 Nd5 Kg7 Bh4 Kf7 Nc7 Kg7 Bg5 Kf7 Bf6 Kg8 Ne6 Kf7 Ng7 Kg8 Kg6 Kf8 Bg5 Kg8 Be7 Kh8 Nf5 Kg8 Nh6+ Kh8 Bf6#""",
// """d3 Nc6 e3 Ne5 Nd2 d5 Ne2 Nh6 Nf3 f6 Nc3 Be6 Nd4 Bg4 Nce2 e6 Bd2 Bc5 Nb3 Bd6 Qc1 Kf7 Rb1 c6 Ng3 c5 Na1 Qb6 c4 Rae8 cxd5 Qa6 dxe6+ Bxe6 d4 Nc4 b3 b6 Bxc4 Qb7 Bxe6+ Kxe6 Qc4+ Ke7 dxc5 bxc5 Bc3 Kd8 O-O a6 Rfd1 Qc6 Qf4 Kd7 Rd2 Rd8 Rbd1 Ke7 Qc4 Kf8 Qe2 Rg8 Nc2 Rh8 Kf1 Rd7 Kg1 Nf7 Kf1 Kg8 Kg1 Ne5 Kf1 Nf7 Kg1 Qb7 Kf1 Qc6 Na3 Qa8 Nc4 Qc6 Qg4 a5 Rd3 h5 Qe2 h4 Ne4 Qxe4 Nxd6 Qc6 Nxf7 Rxf7 Rd8+ Rf8 Rd1d7 Qe4 Qd2 Kh7 f3 Qb1+ Ke2 Rxd8 Rxd8 Rxd8 Qxd8 Qxa2+ Qd2 Qxd2+ Bxd2 h3 g3 Kg6 Bxa5 Kg5 Bb6 Kf5 Bxc5 Ke6 Bd4 Kd5 b4 Kc6 Bc5 Kb5 f4 g5 f5 Kc4 g4 Kb5 Kf3 Kc6 e4 Kd7 Ke3 Kc6 Kd2 Kb7 Kc1 Ka6 Kc2 Kb7 Kd3 Ka6 Ke2 Kb7 Kf3 Ka6 Kg3 Kb7 Kxh3 Kc6 Kg3 Kd7 Kf3 Kd8 Ke3 Kc7 Kd4 Kd8 Kd5 Kd7 Bd6 Ke8 Ke6 Kd8 Kxf6 Kd7 Bc5 Ke8 Kxg5 Kf7 h4 Ke8 h5 Kf7 Kf4 Kf6 e5+ Kf7 e6+ Ke8 Kg5 Kd8 h6 Kc8 h7 Kc7 Kg6 Kb7 g5 Ka6 f6 Kb5 e7 Ka6 Kh6 Kb7 Kg6 Ka6 Kf5 Kb7 Kf4 Ka6 Ke4 Kb7 Ke5 Ka6 Kf5 Kb7 Ke6 Ka6 Ke5 Kb7 Kd5 Ka6 Kd4 Kb7 Kc4 Ka6 b5+ Kb7 Kd4 Kc7 b6+ Kb7 Kd5 Ka6 Kd6 Ka5 Kc6 Ka4 Kd7 Kb5 Kd6 Ka6 Bg1 Kb7 Kd5 Ka6 Ke5 Kb7 Kd4 Ka6 Ke4 Ka5 Kd3 Ka6 Ke3 Kb7 Kd2 Ka6 Ke2 Kb7 Kd1 Ka6 Ke1 Ka5 Kf1 Ka6 Kg2 Ka5 Kh3 Kb4 Kh4 Kb3 Kh5 Kc3 Kh6 Kb3 Kg6 Ka3 Kg7 Ka2 Kf7 Kb2 Kf8 Kc2 Kf7 Kd1 g6 Kc1 Ke6 Kd2 Kd7 Kc2 Ke6 Kd3 Kd5 Kc3 Ke6 Kd3 Kd6 Kd2 Kd7 Kd1 Ke6 Ke1 Kf5 Kf1 Kg4 Kg2 Bc5 Kf1 Bd6 Kg2 Bc7 Kf2 Kf5 Kg1 Ke6 Kf2 Kf5 Kf3 Ke6 Ke2 Kf7 Kd3 Kg7 Kc4 Kf7 Kd3 Kg7 Kc4 Kf7 Kd3 Kg7 Kc4 Kh6 Kb3 Kg5 Kb4 Kg4 Kb3 Kf4 Kb4 Kf5 Kc5 Ke5 Kc4 Ke6 Kc3 Ke5 Kd2 Ke6 Kd1 f7 Ke1 Kf5 Kf1 Kf6 Kg2 Kg7 Kg1 Kh6 Kg2 Kg7 Kg1 Kh8 Kg2 Kg7 Kg1 Kf8 Kg2 Ke8 Kg1 Kd7 Kg2 e8=Q Kg1 Ke7 Kg2 f8=Q Kg1 g7 Kg2 g8=Q+ Kh3 h8=Q#""",
// """e4 Nf6 e5 Nd5 d4 Nc6 c3 d6 exd6 cxd6 Bc4 Nb6 Bb3 Na5 Ne2 Bg4 O-O h6 Qe1 Nxb3 axb3 g5 Ng3 Be6 Nd2 Qc7 Qe2 Qc6 Re1 Qd5 Nge4 Kd8 Ng3 a6 Nh5 Rg8 Ng3 Bg7 Nh5 Bf8 Ng3 Rh8 Nh5 Rb8 Qe4 Qf5 Qxf5 Bxf5 Ng3 Bd3 Re3 Bc2 b4 Rc8 Re2 Nd5 Nde4 Bb3 Nd2 Bd1 Re1 Bc2 Re2 Bg7 Nde4 Bd3 Rd2 Nf4 Rd1 Ne2+ Nxe2 Bxe4 Be3 Bd5 Ra5 e6 Nc1 Kc7 Nd3 Bf6 f4 Kd7 fxg5 Bxg5 Bxg5 hxg5 Nf2 Ke7 Ng4 Rcg8 Re1 f5 Nf2 Kf6 Nd3 Be4 Nf2 d5 Nxe4+ dxe4 Rc5 Rg7 Re5 g4 g3 b6 Ra1 Ra8 Rc1 Rc7 Kg2 Rh7 Rh1 Rc8 h3 gxh3+ Rxh3 Rhh8 Rxh8 Rxh8 Kg1 Rh7 Kg2 Rh5 Kg1 Rh6 Kg2 b5 Kg1 Rh8 Kg2 Rh7 Kg1 Rh3 Kg2 Rh5 Kg1 Ke7 Kg2 Kf7 Kg1 Rh6 Kg2 Ke7 Kg1 Kd6 Kg2 Rh5 Kg1 Rh3 Kg2 Rh7 Kg1 Rh8 Kg2 Rg8 Kh2 Rc8 Rc5 Ra8 Kg2 Rf8 Kf2 Rh8 Kg2 Rd8 Kh2 Re8 Kg2 Rb8 Kh2 Rb7 Rc8 Ra7 Kg2 Rh7 Ra8 Kc6 Rxa6+ Kd5 Rb6 Rh8 Rxb5+ Kd6 Rc5 Rg8 Kh2 Kd7 Ra5 Ke7 Ra7+ Kf6 Ra6 Ke7 Ra7+ Kf6 b5 e3 Kg2 e2 Kf2 Rxg3 Kxe2 Rh3 b6 Rg3 b7 Rg2+ Kf3 Rxb2 c4 Rb1 c5 Rb3+ Kf4 Rb4 c6 e5+ Kf3 Rb3+ Ke2 Rb2+ Kd3 e4+ Ke3 Rb3+ Ke2 Rb2+ Kd1 Rb1+ Kc2 e3 Kxb1 e2 b8=Q e1=Q+ Kc2 Qe2+ Kc3 Qf3+ Kd2 Qg2+ Kd3 Qe4+ Kd2 Qg2+ Ke1 Qh1+ Ke2 Qg2+ Ke3 Qe4+ Kf2 Qxd4+ Kg3 Qe3+ Kg2 Qd2+ Kf3 Qc3+ Kf2 Qc2+ Kf3 Qc3+ Kf2 Qd2+ Kf3 Qc3+ Kg2 Qd2+ Kh3 Qh6+ Kg2 Qd2+ Kh1 Qe1+ Kg2 Qd2+ Kh3 Qh6+ Kg2 Qd2+ Kf3 Qd3+ Kf2 Qc2+ Ke3 Qc3+ Ke2 Qc2+ Ke3 Qc3+ Kf4 Qc1+ Kf3 Qc3+ Kg2 Qd2+ Kh3 Qh6+ Kg2 Qd2+ Kh3 Qh6+ Kg2 Qd2+ Kf3 Qc3+ Ke2 Qc4+ Kd2 Qd5+ Ke3 Qe4+ Kd2 Qd4+ Kc1 Qe3+ Kb2 Qd2+ Ka3 Qe3+ Ka4 Qe4+ Ka5 Qe1+ Kb6 Qb4+ Kc7 Qc5 Kd7 Qe7+ Kc8 Qe6+ Kb7 Kg6 Qg3+ Kf6 Qh4+ Kg6 Qg3+ Kf6 Qc3+ Kg5 Qc1+ f4 Ra5+ Kg4 Qg1+ Kh4 Qh2+ Kg4 Qg2+ Kh4 Qh2+ Kg4 Qh5+ Kg3 Ra3+ Qe3 Rxe3+ fxe3 Qe5+ Kf3 c7 Ke2 c8=Q Kf2 Qf8+ Ke2 Qfe8 Kd1 Qxe3 Kc2 Qe8e4+ Kb2 Qg2+ Ka1 Qeg1#""",
// """d4 Nf6 c4 d5 c5 Nc6 Nf3 Bf5 e3 Ne4 Nfd2 e5 Nxe4 dxe4 d5 Ne7 Nc3 a6 a3 Qd7 b4 O-O-O Bc4 f6 O-O Kb8 Qd2 g5 Rd1 Bh6 d6 Qc8 Qc2 cxd6 Rxd6 Rxd6 cxd6 Qxc4 dxe7 Qc7 Bd2 Qd6 Rc1 Re8 Rd1 Rc8 Be1 Qxe7 Qb3 Bg7 Bd2 Be6 Qb2 Bg4 Rc1 Rc4 Na4 Qc7 Rxc4 Qxc4 Qc3 Qa2 Qb2 Qf7 Nc5 Qc4 Qc3 Qd5 g3 Bd1 Be1 Bf8 Qd2 Qxd2 Bxd2 Bxc5 bxc5 Kc7 Bb4 Be2 Kg2 Bf3+ Kf1 Kc6 Ke1 Bg4 Kd2 Kd5 Kc3 h6 Kb3 Bf3 Kc3 Be2 Kc2 Bd3+ Kc3 g4 a4 h5 a5 f5 c6 bxc6 Be7 c5 Bf8 Bb5 Bh6 Be2 Bg5 Ke6 Bd8 c4 Bb6 Kd5 Bc7 Bd1 Bb8 Bb3 Bc7 Ba2 Bb8 Ke6 Bc7 Bb1 Kxc4 Bc2 Kc5 Ba4 Kb6 Bb5 Kc5 Bd3 Bb6 Bb1 Kc6 Ba2 Kc7 Bc4 Kd8 Kd6 Ke8 Bd5 Kf8 Bb7 Kf7 Bc6 Kg6 Kd5 Kxf5 Bd7+ Kg5 Be8 Kf5 Bd7+ Kf6 Kd6 Kg6 Kd5 Kxh5 Bf5 Kg5 Bc8 Kg6 Be6 Kf6 Kd6 Kg5 Bd7 Kh4 Be6 Kg5 Kd5 Kf6 Kd6 Kg7 Bc4 Kf8 Bb3 Ba7 Kd5 Kf7 Bc4 Kf6 Bd3 Bb8 Bb5 Bxe5 Be2 Bd4 Bc4 Kf5 Be2 Kf4 Bd1 Kg5 Be2 Kh4 Kd6 h3 Bc4 hxg4 Ke7 Kh5 Bf7+ Kh6 Bc4 g5 Kf7 g6+ Kg8 g7 Bf7 Kg5 Bc4 Kf4 Bd3 g4 Bc2 g5 Bb1 Ke5 Bd3 Kd6 Bb5 Bf6 Bd3 Kd5 Kf7 Ke5 Bc4 Kf4 Bd5 Kg3 Bb7 Kg2 Bd5 Kf1 Bc4+ Ke1 Kg8 Kd2 Bb5 Kc3 Bc6 Kd4 Ba8 Ke5 Bc6 Kd6 Bb5 Kc5 Bd3 Kd4 Kf7 Ke5 Bc4 Kf4 Bd5 Kg3 Bb7 Kg4 Kg8 Kh5 Bc6 Kh6 Bd5 g6 Be6 Kg5 Bc4 Kf4 Bd5 Ke5 Bc6 Kd6 Be8 Ke7 Ba4 Ke6 Bb5 Ke5 Bc6 Kf5 Ba8 Kf4 Bd5 Kg3 Bc4 f3 exf3 Kxf3 Bb3 Kf4 Ba4 e4 Be8 Kf5 Ba4 e5 Bc2+ Kg5 Bb3 Kf5 Bc2+ Ke6 Bxg6 Ke7 Bc2 e6 Ba4 Kd6 Bb5 e7 Kf7 Ke5 Kg8 Ke6 Bc6 Kd6 Ba4 Kc7 Bb5 Kd8 Kf7 g8=Q+ Kxg8 e8=Q+ Bxe8 Kxe8 Kh7 Kd7 Kh6 Bd4 Kg5 Kc6 Kf4 Kb6 Ke4 Bc5 Kf5 Kxa6 Ke4 Kb6 Ke5 a6 Ke4 a7 Kf3 a8=Q+ Kg3 Kb5 Kg4 Qf8 Kh4 Qg8 Kh5 Kc4 Kh4 Kd5 Kh5 Ke5 Kh4 Kf5 Kh3 Kf4 Kh2 Kf3 Kh3 Qg3#""",
// """Nf3 Nf6 Nc3 d5 e3 Bg4 Bb5+ c6 Be2 e6 h3 Bxf3 gxf3 d4 Ne4 dxe3 dxe3 Qxd1+ Kxd1 Nxe4 fxe4 Nd7 Bd2 O-O-O Rg1 Nc5 f3 g6 Rb1 Bg7 Ke1 Bf6 Ba5 Rd7 Kf2 Na4 b3 Bc3 Rgd1 Bxa5 Rxd7 Kxd7 bxa4 Kc7 Rd1 g5 f4 gxf4 exf4 Rg8 Kf3 Rg6 Bc4 Rh6 Kg4 Rg6+ Kf3 Bb4 h4 Rg7 h5 a6 Rb1 Bc3 Rd1 Bf6 e5 Bh4 a5 Rg3+ Ke4 Be7 f5 Rg4+ Kd3 exf5 Bxf7 Ra4 Bg8 Rxa5 Re1 h6 Bb3 c5 c4 Kd7 e6+ Kd6 Re2 Ra3 Re1 Bf6 Re2 a5 e7 Bxe7 Rd2 Bg5 Rd1 Bf6 Kc2+ Bd4 Kb1 a4 Bc2 Rf3 Bxa4 Rh3 Be8 f4 Rf1 f3 Bf7 f2 Bd5 b5 Kc2 Ra3 Kb1 Ke5 Bc6 b4 Kc2 Kf4 Bg2 Rg3 Bb7 Rg1 Rxf2+ Bxf2 Bc6 Bd4 Kb3 Rg3+ Kc2 Rd3 Kxd3 Bf6 Bd5 Bb2 Bc6 Ke5 Bd5 Ba3 Ke3 Bc1+ Kd3 Bb2 Ke3 Bc1+ Kd3 Bb2 Ke3 Bd4+ Kf3 Bc3 Ke3 Be1 Bf3 Bh4 Bc6 Bg5+ Kd3 Kf4 Be4 Bf6 Bd5 Be5 Bc6 Bd4 Bd5 Be5 Bc6 Bd4 Bd5 Kg4 Bf7 Kf5 Bg6+ Kf4 Be4 Bc3 Bd5 Bd4 Bc6 Be5 Bd5 Bc7 Be4 Bb8 Bc6 Be5 Bd5 Bd6 Be4 Ke5 Ke3 Be7 Bc6 Bg5+ Kd3 Kf5 Bd7+ Kf4 Bc6 Bh4 Be4 Bf2 Bd5 Be3 Be4 Bf2 Bd5 Kg4 Bf7 Kf5 Ke2 Bd4 Kf3 Bg1 Bg8 Ke5 Bd5 Kd4 Kf4 Kc3 Kf5 Kb2 Kg6 Be3 Kf5 Kxa2 Ke4 Bc1 Ke5 b3 Be4 b2 Bd3 b1=Q Bxb1+ Kxb1 Kd5 Ba3 Ke6 Kc2 Kf6 Kc3 Ke6 Kxc4 Kf5 Kd3 Kf4 c4 Kf5 c3 Kg6 c2 Kxh6 c1=N Kg6 Bb2 h6 Ke4 h7 Nd3 Kf7 Nf4 Kg8 Ng6 Kf7 Kf5 Ke8 Bg7 Kd7 Nf8+ Kc6 Nxh7 Kb7 Ke6 Ka8 Nf6 Kb7 Kd6 Kb6 Nd5+ Kb5 Nf4 Kb6 Nd3 Kb7 Nc5+ Kb6 Na4+ Kb5 Nb2 Kb6 Bd4+ Kb7 Na4 Ka8 Kc6 Kb8 Bg7 Ka8 Nc5 Ka7 Nd7 Ka8 Be5 Ka7 Bb2 Ka8 Nc5 Ka7 Nd7 Ka8 Nc5 Ka7 Bd4 Ka8 Kb6 Kb8 Be5+ Ka8 Kb5 Ka7 Ne6 Ka8 Kc6 Ka7 Bd4+ Ka8 Nc7+ Kb8 Bb6 Kc8 Ba7 Kd8 Nd5 Kc8 Ne7+ Kd8 Kd6 Ke8 Ke6 Kf8 Nf5 Ke8 Nd6+ Kf8 Kf6 Kg8 Be3 Kh7 Kf7 Kh8 Ne4 Kh7 Nf6+ Kh8 Nd7 Kh7 Nf8+ Kh8 Bd4#""",
// """d4 d5 c4 dxc4 Nf3 Nf6 e3 g6 Bxc4 Bg7 O-O O-O Nc3 Bg4 Qe2 Bxf3 Qxf3 Nc6 Bb5 Qd7 Bxc6 Qxc6 Qxc6 bxc6 a3 e6 Bd2 Rfd8 f4 Nd5 Ne4 f5 Nc5 Rab8 b4 Re8 Kf2 Bf8 Rac1 Bxc5 Rxc5 Rb6 Rg1 Rd8 Rb1 Rd6 Rbc1 Kf7 g3 Ke7 Rc5c4 Kd7 Rc4c2 h5 Rc5 Rb5 Kg2 a6 h4 Nb6 Rc5c2 Na4 Be1 Rb6 Kf3 Rb5 Rd1 Rb8 Bd2 Rd5 Kf2 Rb6 Kf3 Rb8 Rf1 Rd6 Re1 Ra8 Rd1 Rb8 Re1 Rb5 Rh1 Rbd5 Ra1 Rb5 Re1 Rb7 Rec1 Nb6 Rh1 Nd5 Rg1 Ra7 Rgc1 Rb7 Be1 Rb6 Bf2 Rb7 Rd2 Ra7 Bg1 a5 bxa5 Rxa5 Rd3 Ra4 Bf2 Ra6 Rb1 Kc8 Rdb3 Ra8 Bg1 Rd8 e4 Ne7 Be3 Kd7 Bd2 Ng8 e5 Ne7 Bc3 Nd5 Ba1 Rdc8 Kf2 Ke7 Rc1 Kd7 Bc3 Rcb8 Rxb8 Rxb8 Ba1 Rb3 a4 Ra3 Kg2 Rxa4 Bb2 Rb4 Ba1 Ne3+ Kf3 Nd5 Re1 Rb3+ Kg2 Ra3 Bb2 Rb3 Re2 Rd3 Kf2 Rb3 Kg2 Ne3+ Kh3 Nc4 Ba1 Re3 Rxe3 Nxe3 Bb2 Nd5 Kg2 Kc8 Kf2 Kb7 Kf3 Ka6 Ba3 Kb5 Bc5 Ka6 Ke2 Kb7 Ba3 Ka6 Kd3 Kb5 Bc5 Nb4+ Kc3 Nd5+ Kd3 Ka6 Kd2 Kb5 Kd3 Nb4+ Kc3 Nd5+ Kd3 Ka6 Kd2 Ka5 Kd3 Ka4 Bf8 Kb5 Bc5 Ka6 Kd2 Kb7 Kd3 Ka6 Kd2 Kb5 Kd3 Ka6 Kd2 Nb6 Kd3 Nd7 Kc4 Nb8 Ba3 Kb6 Bc1 Nd7 Be3 Kb7 Bf2 Nb6+ Kd3 Kc8 Be1 Kd7 Ke3 Nc4+ Kd3 Nb6 Ke3 Kc8 Kd3 Kb7 Bc3 Nd5 Ba1 Kb6 Bb2 c5 Kc4 cxd4 Bxd4+ Kc6 Kd3 Kb5 Bf2 c6 Bg1 c5 Bh2 c4+ Kd2 c3+ Kc2 Kc4 Bg1 Kb4 Ba7 Kc4 Kc1 Kb3 Bd4 c2 Kd2 Nb4 Be3 Na2 Ke1 c1=Q+ Bxc1 Nxc1 Kd2 Na2 Kd3 Kb4 Kc2 Kc5 Kb2 Nb4 Kb3 Nd3 Kc3 Ne1 Kd2 Nf3+ Ke2 Nd4+ Kd3 Nf3 Ke2 Nd4+ Kd3 Nb5 Kc2 Kd4 Kd1 Nc3+ Kd2 Ne4+ Ke2 Nxg3+ Kf2 Ne4+ Ke2 Nc3+ Kf2 Ke4 Kg3 Ne2+ Kh2 Nxf4 Kg1 Kxe5 Kf2 Ke4 Kg3 Nd3 Kh2 Kf4 Kh3 Ne5 Kh2 Ng4+ Kh3 e5 Kg2 e4 Kf1 e3 Ke2 Nh2 Ke1 Kf3 Kd1 Kf2 Kc2 e2 Kd3 e1=Q Kc2 Qe3 Kb1 Ke2 Kb2 Qd3 Kc1 Qc3+ Kb1 Kd2 Ka2 Qb4 Ka1 Kc2 Ka2 Qb2#""",
// """e4 c5 c4 e6 d3 Nc6 Be2 Nf6 Nf3 Bd6 O-O Qc7 Bd2 O-O Bg5 Qb8 Bxf6 gxf6 Nc3 a6 Na4 b6 b3 b5 Nb2 Bb7 Qc2 Qc7 g3 Rae8 Nd1 Nd4 Qd2 bxc4 bxc4 Bc6 Rb1 Rb8 Ne3 Nxf3+ Bxf3 Rxb1 Rxb1 Rb8 Rxb8+ Qxb8 Qc1 Be5 Kg2 Bd4 Nc2 Bb2 Qb1 Qb7 Ne3 d6 Nd1 Be5 Qxb7 Bxb7 Be2 f5 f3 f4 g4 Kf8 Nf2 Ke7 Bd1 Bc6 Bb3 h6 h4 Bf6 h5 a5 a4 Bd7 Nh3 Ba1 Nxf4 Bd4 Ne2 Be3 Nc3 Bf4 Ne2 Bg5 Ng3 Be3 Ne2 Bg5 Nc3 Bc1 Ne2 Bg5 Kg3 Be3 f4 e5 fxe5 dxe5 Nc3 Bf4+ Kh3 Kd6 Nd5 Bc8 Nf6 Ke6 Nd5 Bg5 Nb6 Bb7 Nd5 Bc6 Nc3 Bd7 Ne2 Bc6 Ng3 Bd2 Nf5 Bd7 Ng7+ Kd6 Nf5+ Ke6 Ng7+ Kf6 Nf5 Ke6 Ng3 Bc6 Nf1 Bf4 Ng3 Bd2 Nf5 Bc1 Ng3 Bd2 Nf1 Bf4 Ng3 Kf6 Ne2 Be3 Bd1 Bg5 Ng3 Bf4 Nh1 Ke6 Ng3 Kf6 Nf5 Bd7 Ng3 Bc6 Ne2 Bd2 Ng3 Bf4 Nh1 Bd2 Ng3 Bf4 Nh1 Bd2 Ng3 Bf4 Nh1 Bd2 Ng3 Bd7 Nh1 Kg5 Kg3 Bc1 Nf2 Bb2 Nh3+ Kf6 Nf2 Bc6 Bc2 Ba1 Nd1 Bd7 Nf2 Bd4 Bd1 Bc6 Nh3 Be3 Nf2 Ke7 Nh1 f6 Kf3 Bd2 Ng3 Kd7 Nf5 Bg5 Ne3 Ke6 Nf5 Bf4 Ng7+ Kd7 Nf5 Kc7 Ne7 Kd6 Nf5+ Kc7 Ne3 Kd6 Nd5 Bxd5 exd5 Bd2 Ke4 Bg5 Kf5 Bh4 Bf3 Kd7 Kg6 e4 Bxe4 Ke7 Kxh6 Kf7 Bf5 Bg5+ Kh7 Bc1 Bg6+ Kf8 d6 Bb2 d7 Ke7 Bf5 Bc1 Kg6 Be3 d8=Q+ Kxd8 Kxf6 Bd4+ Kg6 Bb2 Kf7 Bc1 Be6 Bd2 Kg6 Ke7 Kf5 Be1 g5 Bc3 g6 Bg7 Bd5 Bh6 g7 Bxg7 Kg6 Bb2 h6 Kf8 h7 Bh8 Be4 Be5 Kf5 Bh8 Ke6 Bd4 Kd5 Kf7 h8=Q Bxh8 Kxc5 Bc3 d4 Ke6 d5+ Ke7 Kb5 Bb4 c5 Kd7 c6+ Kd8 Kb6 Bd6 Kxa5 Kc7 Kb5 Ba3 a5 Bc1 a6 Be3 Ka4 Ba7 Bd3 Bd4 Bc4 Be3 Kb3 Bc5 Kc3 Kd6 Kd3 Bf2 Ke4 Kc7 Kf5 Ba7 Ke6 Bb6 Bb5 Bc5 Ke5 Kc8 d6 Ba7 Ke6 Bb8 Ke7 Bc7 dxc7 Kxc7 Ke6 Kb8 Kd7 Ka7 Bf1 Kb6 c7 Kc5 c8=Q+ Kd5 a7 Ke5 a8=Q Kf4 Qf8+ Ke3 Qaa3+ Kd2 Qf2+ Kd1 Qa1#""",
// """d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 a5 Nd3 Nd7 Bg5 f6 Bd2 h6 Qc1 Kh7 b3 f5 Qa3 Nf6 f3 b6 Rac1 Bd7 Kh1 f4 Nb5 g5 Qa4 Ng6 Rg1 h5 Bc3 Ng8 Rc2 Nh6 Rgc1 Rg8 Qa3 Bf8 Qa4 Nh4 g3 Ng6 Rg1 Be7 gxf4 gxf4 Rcc1 Qe8 Qa3 Bxb5 cxb5 Nh4 Rxg8 Qxg8 Rg1 Qf7 Qc1 Rg8 b4 axb4 Nxb4 Bd8 Nc6 Ng6 Nxd8 Rxd8 Qf1 Ra8 Bc4 Ng8 Qh3 Nf6 Qf5 Rg8 Rg5 Rg7 Rg2 Kh8 a4 Nh4 Rxg7 Qxg7 Qh3 Ng6 Be2 Qd7 Qg2 Kg7 Kg1 Qc8 Kf2 Qa8 Bd1 Qd8 Qh3 Qd7 Qf1 h4 Qc4 h3 a5 bxa5 Bxa5 Ne8 Ke2 Ne7 Ke1 Qc8 Be2 Qb7 Bf1 Qa7 Qc3 Ng6 Bxh3 Nh4 Bg4 Ng2+ Ke2 Qg1 h3 Ne3 Qe1 Qg2+ Qf2 Qh1 Be1 Kf8 Kd2 Nf6 Kd3 Ke7 Qe2 Nd7 Bh4+ Ke8 Be1 Nc5+ Kc3 Ng2 b6 cxb6 Bf2 Qa1+ Kc2 Qa2+ Kd1 Qb1+ Kd2 b5 Bxc5 dxc5 Qd1 Qb2+ Qc2 Qd4+ Qd3 Qxd3+ Kxd3 Ke7 Bh5 Kd6 Kc3 Ne3 Bg4 Ng2 Kb3 Kc7 Bf5 Kb6 d6 Nh4 Bg4 Kc6 d7 Kc7 Kc2 Ng6 Bf5 Nh4 Bg4 Kd8 Kc3 Ke7 Kd2 Ng6 Bf5 Nf8 h4 Nxd7 h5 Nf6 h6 Kf7 Kd3 Kg8 Kc3 Ne8 Bg6 Nd6 Kc2 Nc4 Kd3 Ne3 Kc3 Ng2 h7+ Kg7 Be8 Kxh7 Bxb5 Ne3 Bc4 Kg6 Kd3 Kg5 Bf7 Kh4 Be8 Kg3 Bh5 Kf2 Kd2 Kg3 Kd3 Kh4 Be8 Kg5 Bf7 Kf6 Be8 Ke7 Bb5 Kd6 Kc3 Kc7 Be8 Kb6 Bf7 Ka5 Bc4 Kb6 Bf7 Kc6 Bc4 Ng2 Bd5+ Kd6 Bc4 Nh4 Be2 Kc6 Bd1 Ng6 Ba4+ Kd6 Be8 Ne7 Kd3 Nc8 Kc4 Nb6+ Kb5 Nc8 Kc4 Na7 Kd3 Ke7 Ba4 Nc8 Kc4 Kd6 Be8 Ne7 Kc3 Ng8 Bf7 Nf6 Bg6 Nd7 Kb3 Nb6 Be8 Ke7 Bb5 Kf6 Kc3 Kg5 Bd3 Kh4 Be2 Kg3 Bd1 Kf2 Kd3 Ke1 Bb3 Kf2 Bd1 c4+ Kd2 Nd7 Kc3 Ke1 Bc2 Ke2 Kxc4 Kxf3 Kd5 Ke3 Kd6 f3 Ba4 f2 Bb5 Kxe4 Be2 Ke3 Bb5 e4 Kd5 Nf6+ Ke5 Ng4+ Kd5 Nh2 Ke6 f1=Q Bc6 Kd4 Bxe4 Kxe4 Kd6 Qb5 Ke7 Ke5 Kf7 Qc6 Kg7 Ng4 Kf7 Qf6+ Ke8 Qg7 Kd8 Kd6 Ke8 Qe7#""",
// """e4 c5 d3 h6 c4 e5 Nf3 d6 h3 Nf6 Nc3 Be6 Be2 Nc6 Be3 Be7 a3 Nd4 Bxd4 exd4 Nd5 Bxd5 cxd5 Qa5+ Qd2 Qxd2+ Nxd2 O-O b4 cxb4 axb4 Rfc8 O-O Nd7 Bg4 Rd8 Bxd7 Rxd7 Nc4 Rc8 e5 dxe5 Nxe5 Rxd5 Rfe1 Bf6 f4 Bh4 Re4 f6 Ng6 Rc7 Rxa7 Bg3 Re8+ Kf7 Re7+ Kxg6 Rxc7 Bxf4 Re7 Rb5 Rexb7 Re5 Rxg7+ Kh5 Ra6 Be3+ Kh1 Bf4 Kg1 f5 g4+ fxg4 Rxg4 Be3+ Kh1 Bd2 Rxd4 Re1+ Kg2 Be3 Rd5+ Kh4 b5 Rg1+ Kf3 Bg5 b6 Rg3+ Ke4 Re3+ Kd4 Rxh3 b7 Be3+ Ke4 Bf2 b8=Q Re3+ Kf4 Bg3+ Kf5 Bxb8 Ra4+ Kh3 Kg6 Re6+ Kh7 Re3 Rh5+ Kg2 Rg4+ Bg3 Rxh6 Rxd3 Ra6 Rd7+ Kg8 Kh3 Rag6 Rd8+ Kf7 Rd3 Ke8 Re3+ Kd7 Rd3+ Kc8 Rc3+ Kb7 Rc7+ Ka8 Rc8+ Kb7 Rb8+ Ka6 Ra8+ Kb7 Rb8+ Ka6 Rb3 Rg4g5 Ra3+ Kb7 Rb3+ Kc8 Rc3+ Kd7 Rd3+ Ke8 Rb3 Kf7 Rb7+ Kg8 Bh4 Rh5 Rb4 Kh7 Kh2 Kh6 Kh3 Ra6 Rb3 Ra4 Rb6+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kh8 Rb8+ Kh7 Rb7+ Kg6 Rb6+ Kf5 Rb5+ Kg6 Rxh5 Kxh5 Bg3 Rg4 Kg2 Kg5 Kh3 Ra4 Kh2 Ra2+ Kh3 Rc2 Bh4+ Kh5 Bg3 Rc1 Kg2 Rc2+ Kh3 Rc3 Kh2 Kg4 Be1 Rc2+ Kg1 Kf3 Kf1 Re2 Bh4 Ke3 Bg5+ Kd3 Bh4 Rh2 Bf2 Rh1+ Bg1 Kd2 Kg2 Rh4 Bf2 Rg4+ Bg3 Ke2 Kh3 Kf3 Bb8 Rg5 Kh4 Rg4+ Kh3 Rg8 Bg3 Rxg3+ Kh4 Kf4 Kh5 Rh3+ Kg6 Ke5 Kf7 Kd6 Ke8 Kc7 Kf7 Kd6 Ke8 Kc7 Kf7 Kd7 Kf6 Re3 Kf5 Kd6 Kf4 Re5 Kf3 Kd5 Kf4 Re4+ Kf3 Ke5 Kf2 Kf4 Kg2 Re3 Kf2 Ke4 Kg2 Kf4 Kf2 Rd3 Ke2 Re3+ Kd2 Kf3 Kc2 Ke2 Kc1 Ra3 Kb2 Rd3 Kc2 Rd4 Kc3 Ra4 Kb3 Ra1 Kb2 Rd1 Kc2 Rd3 Kb2 Kd2 Kb1 Kd1 Kb2 Kd2 Ka2 Rc3 Kb2 Rd3 Ka2 Kc3 Ka3 Kc4+ Kb2 Rd2+ Kc1 Kc3 Kb1 Kb3 Kc1 Rf2 Kd1 Kb2 Ke1 Rh2 Kf1 Kc3 Kg1 Rd2 Kf1 Kd3 Ke1 Ke3 Kf1 Kf3 Ke1 Ke3 Kf1 Rc2 Ke1 Rc1#"""
)
"encode/decode pgn" should {
"be transitive" in {
forall(pgns) { pgn
PgnBinary.decode(PgnBinary.encode(pgn)) must_== pgn
}
}
}
}