emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 01/01: Initial import of chess.el.


From: Mario Lang
Subject: [elpa] 01/01: Initial import of chess.el.
Date: Sun, 18 May 2014 13:25:45 +0000

mlang pushed a commit to branch master
in repository elpa.

commit a2d612990a43edce7d8e9f49c9daa34d880c8bf5
Author: Mario Lang <address@hidden>
Date:   Sun May 18 15:23:44 2014 +0200

    Initial import of chess.el.
    
    Authors are John Wiegley and myself.
    Piece images are not included yet, as we need to work out copyright yet.
    Plan is to convert OpenClipart pieces to the required XPM format.
    Version currently set to -1, will go to 2.0 on first release.
---
 packages/chess/.elpaignore        |    5 +
 packages/chess/Makefile           |   26 +
 packages/chess/chess-ai.el        |  342 ++
 packages/chess/chess-algebraic.el |  205 +
 packages/chess/chess-announce.el  |  125 +
 packages/chess/chess-autosave.el  |  141 +
 packages/chess/chess-chat.el      |   48 +
 packages/chess/chess-clock.el     |  104 +
 packages/chess/chess-common.el    |  109 +
 packages/chess/chess-crafty.el    |  163 +
 packages/chess/chess-database.el  |  100 +
 packages/chess/chess-display.el   | 1261 +++++
 packages/chess/chess-eco.el       |  142 +
 packages/chess/chess-eco.fen      |    2 +
 packages/chess/chess-eco.pos      |10565 +++++++++++++++++++++++++++++++++++++
 packages/chess/chess-engine.el    |  458 ++
 packages/chess/chess-epd.el       |  145 +
 packages/chess/chess-fen.el       |  140 +
 packages/chess/chess-file.el      |  105 +
 packages/chess/chess-fruit.el     |   59 +
 packages/chess/chess-game.el      |  333 ++
 packages/chess/chess-german.el    |  121 +
 packages/chess/chess-glaurung.el  |   59 +
 packages/chess/chess-gnuchess.el  |   83 +
 packages/chess/chess-ics.el       | 1085 ++++
 packages/chess/chess-ics1.el      |  139 +
 packages/chess/chess-images.el    |  569 ++
 packages/chess/chess-input.el     |  138 +
 packages/chess/chess-irc.el       |  148 +
 packages/chess/chess-kibitz.el    |   68 +
 packages/chess/chess-link.el      |   84 +
 packages/chess/chess-log.el       |   20 +
 packages/chess/chess-message.el   |   46 +
 packages/chess/chess-module.el    |  108 +
 packages/chess/chess-network.el   |  220 +
 packages/chess/chess-none.el      |   28 +
 packages/chess/chess-perft.el     |  225 +
 packages/chess/chess-pgn.el       |  426 ++
 packages/chess/chess-phalanx.el   |   68 +
 packages/chess/chess-plain.el     |  311 ++
 packages/chess/chess-ply.el       |  474 ++
 packages/chess/chess-polyglot.bin |  Bin 0 -> 100000 bytes
 packages/chess/chess-polyglot.el  |  549 ++
 packages/chess/chess-pos.el       | 1131 ++++
 packages/chess/chess-puzzle.el    |  105 +
 packages/chess/chess-random.el    |   65 +
 packages/chess/chess-scid.el      |  211 +
 packages/chess/chess-sjeng.el     |  121 +
 packages/chess/chess-sound.el     |  110 +
 packages/chess/chess-stockfish.el |   70 +
 packages/chess/chess-test.el      |   73 +
 packages/chess/chess-transport.el |   43 +
 packages/chess/chess-tutorial.el  |   45 +
 packages/chess/chess-ucb.el       |   90 +
 packages/chess/chess-uci.el       |  141 +
 packages/chess/chess-var.el       |   89 +
 packages/chess/chess.el           |  231 +
 packages/chess/chess.info         | 1542 ++++++
 packages/chess/chess.texi         | 1576 ++++++
 packages/chess/dir                |   18 +
 60 files changed, 25208 insertions(+), 0 deletions(-)

diff --git a/packages/chess/.elpaignore b/packages/chess/.elpaignore
new file mode 100644
index 0000000..aeefd45
--- /dev/null
+++ b/packages/chess/.elpaignore
@@ -0,0 +1,5 @@
+.elpaignore
+chess-eco.pos
+chess-test.el
+chess.texi
+Makefile
diff --git a/packages/chess/Makefile b/packages/chess/Makefile
new file mode 100644
index 0000000..781f382
--- /dev/null
+++ b/packages/chess/Makefile
@@ -0,0 +1,26 @@
+# This Makefile is used to generate the info documentation and preprocessed
+# Lisp data for Emacs Chess.
+#
+# If you update chess.texi or chess-eco.pos, run make on this file.
+#
+# NOTE: The "test" target is unnecessarily slow as it requires compiled Lisp
+# files for decent performance.
+
+EMACS = emacs --batch --no-site-file
+MAKEINFO = makeinfo
+INSTALL_INFO = install-info
+
+all: chess-eco.fen chess.info dir
+
+test:
+       $(EMACS) -L . -l chess-perft -f ert-run-tests-batch
+
+chess-eco.fen: chess-eco.pos
+       $(EMACS) -L . -l chess-eco.el -f chess-generate-fen-table $< $@
+
+chess.info: chess.texi
+       $(MAKEINFO) --no-split -o $@ $<
+
+dir: chess.info
+       $(INSTALL_INFO) $< $@
+
diff --git a/packages/chess/chess-ai.el b/packages/chess/chess-ai.el
new file mode 100644
index 0000000..63fd9ab
--- /dev/null
+++ b/packages/chess/chess-ai.el
@@ -0,0 +1,342 @@
+;;; chess-ai.el --- A native Emacs Lisp Chess playing module
+
+;; Copyright (C) 2014  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This file implements simple alpha-beta and quiescence search for chess
+;; positions.  Contrary to other engine modules, it does not delegate position
+;; evaluation to an external program, it directly tries to calculate move
+;; evaluations in Emacs Lisp.
+
+;; See `chess-ai-best-move' for programmatic access.
+
+;; Use "C-u M-x chess RET ai RET" to play against this engine.
+
+;;; Code:
+
+(require 'chess)
+(require 'chess-common)
+(require 'chess-polyglot)
+(require 'chess-pos)
+(require 'chess-ply)
+(require 'cl-lib)
+
+(defgroup chess-ai ()
+  "A simple chess engine written in Emacs Lisp.
+
+This module does not allow to configure search time used to calculate
+reply moves.  You can only specify the search depth (see `chess-ai-depth')."
+  :group 'chess)
+
+(defcustom chess-ai-depth 2
+  "The default search depth used to prune the search tree.
+
+If `chess-ai-quiescence' is non-nil, quiescence search will be performed after
+this ply depth limit has been reached."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-quiescence-depth 2
+  "Search depth for quiescence search."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-pawn-value 100
+  "Value of a Pawn."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-knight-value 300
+  "Value of a Knight."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-bishop-value 300
+  "Value of a Bishop."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-rook-value 500
+  "Value of a Rook."
+  :group 'chess-ai
+  :type 'intger)
+
+(defcustom chess-ai-queen-value 900
+  "Value of a Queen."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-passed-pawn 50
+  "Extra score for a passed Pawn."
+  :group 'chess-ai
+  :type 'integer)
+
+(defcustom chess-ai-mobility t
+  "Non-nil if piece mobility should be considered during static evaluation."
+  :group 'chess-ai
+  :type 'boolean)
+
+(defcustom chess-ai-quiescence t
+  "Non-nil if quiescence search should be performed."
+  :group 'chess-ai
+  :type 'boolean)
+
+;;;; Static evaluation
+
+(defun chess-ai-eval-static (position)
+  "Calculate the static score for POSITION."
+  (cl-assert (vectorp position))
+  (let ((v 0)
+       (status (chess-pos-status position)))
+    (if (eq status :checkmate)
+       -32767
+      (if (eq status :stalemate)
+         0
+       (let (white-queens black-queens white-rooks black-rooks
+                          white-bishops black-bishops white-knights 
black-knights
+                          white-pawns black-pawns)
+         (dotimes (i 64)
+           (let ((piece (aref position i)))
+             (unless (= piece ? )
+               (cond
+                ((= piece ?P) (push i white-pawns) (cl-incf v 
chess-ai-pawn-value))
+                ((= piece ?p) (push i black-pawns) (cl-decf v 
chess-ai-pawn-value))
+                ((= piece ?Q) (push i white-queens) (cl-incf v 
chess-ai-queen-value))
+                ((= piece ?q) (push i black-queens) (cl-decf v 
chess-ai-queen-value))
+                ((= piece ?R) (push i white-rooks) (cl-incf v 
chess-ai-rook-value))
+                ((= piece ?r) (push i black-rooks) (cl-decf v 
chess-ai-rook-value))
+                ((= piece ?B) (push i white-bishops) (cl-incf v 
chess-ai-bishop-value))
+                ((= piece ?b) (push i black-bishops) (cl-decf v 
chess-ai-bishop-value))
+                ((= piece ?N) (push i white-knights) (cl-incf v 
chess-ai-knight-value))
+                ((= piece ?n) (push i black-knights) (cl-decf v 
chess-ai-knight-value))))))
+         ;; Reward passed Pawns
+         (when (and white-pawns (< (length black-pawns) 7))
+           (setq v (+ v (* (length
+                            (chess-pos-passed-pawns position t white-pawns))
+                           chess-ai-passed-pawn))))
+         (when (and black-pawns (< (length white-pawns) 7))
+           (setq v (- v
+                      (* (length
+                          (chess-pos-passed-pawns position nil black-pawns))
+                         chess-ai-passed-pawn))))
+         ;; Mobility
+         (when chess-ai-mobility
+           (let ((chess-ply-checking-mate t))
+             (setq
+              v
+              (+
+               v
+               (-
+                (+
+                 (if white-queens
+                     (length (chess-legal-plies position :piece ?Q
+                                                :candidates white-queens))
+                   0)
+                 (if white-rooks
+                     (length (chess-legal-plies position :piece ?R
+                                                :candidates white-rooks))
+                   0)
+                 (if white-bishops
+                     (length (chess-legal-plies position :piece ?B
+                                                :candidates white-bishops))
+                   0)
+                 (if white-knights
+                     (length (chess-legal-plies position :piece ?N
+                                                :candidates white-knights))
+                   0))
+                (+
+                 (if black-queens
+                     (length (chess-legal-plies position :piece ?q
+                                                :candidates black-queens))
+                   0)
+                 (if black-rooks
+                     (length (chess-legal-plies position :piece ?r
+                                                :candidates black-rooks))
+                   0)
+                 (if black-bishops
+                     (length (chess-legal-plies position :piece ?b
+                                                :candidates black-bishops))
+                   0)
+                 (if black-knights
+                     (length (chess-legal-plies position :piece ?n
+                                                :candidates black-knights))
+                   0)))))))
+
+         (if (chess-pos-side-to-move position)
+             v
+           (- v)))))))
+
+;;;; Move ordering
+
+(defun chess-ai-plies (position &optional capture-only)
+  "Return an ordered list of all legal plies for POSITION.
+Move ordering is rather naive at the moment.  Capturing
+moves come first, the rest is sorted according to the square
+index."
+  (let* ((side-to-move (chess-pos-side-to-move position))
+        (plies (chess-legal-plies position :color side-to-move)))
+    (if (not capture-only)
+       (sort plies
+             (lambda (a b)
+               (let ((l '(?Q ?R ?B ?N ?P ? ))
+                     (p1 (cadr (chess-ply-changes a)))
+                     (p2 (cadr (chess-ply-changes b))))
+                 (or (< (length (memq (chess-pos-piece position p1) l))
+                        (length (memq (chess-pos-piece position p2) l)))
+                     (funcall (if side-to-move #'< #'>) p1 p2)))))
+      (cl-delete-if (lambda (ply)
+                     (= (chess-pos-piece position
+                                         (cadr (chess-ply-changes ply)))
+                        ? ))
+                   plies))))
+
+;;;; Searching
+
+(defun chess-ai-quiescence (position depth lower-bound upper-bound eval-fn)
+  "Try to find a quiet position by evaluating only capturing moves."
+  (let ((stand-pat (funcall eval-fn position)))
+    (if (>= stand-pat upper-bound)
+       upper-bound
+      (when (> stand-pat lower-bound) (setq lower-bound stand-pat))
+      (if (zerop depth)
+         lower-bound
+       (cl-loop for ply in (chess-ai-plies position t)
+                for value = (- (chess-ai-quiescence
+                                (chess-ply-next-pos ply)
+                                (1- depth) (- upper-bound) (- lower-bound) 
eval-fn))
+                when (> value lower-bound) do (setq lower-bound value)
+                until (>= lower-bound upper-bound))
+       lower-bound))))
+
+(defun chess-ai-search (position depth lower-bound upper-bound eval-fn)
+  (if (zerop depth)
+      (if chess-ai-quiescence
+         (chess-ai-quiescence position chess-ai-quiescence-depth
+                              lower-bound upper-bound eval-fn)
+       (funcall eval-fn position))
+    (let ((plies (chess-ai-plies position)))
+      (if (null plies)
+         (funcall eval-fn position)
+       (cl-loop for ply in plies
+                for value = (- (chess-ai-search (chess-ply-next-pos ply)
+                                                (1- depth)
+                                                (- upper-bound) (- lower-bound)
+                                                eval-fn))
+                when (> value lower-bound) do (setq lower-bound value)
+                until (>= lower-bound upper-bound))
+       lower-bound))))
+
+(defun chess-ai-eval (position depth lower-bound upper-bound eval-fn)
+  "Evaluate POSITION using a simple alpha-beta search algorithm using at least
+DEPTH plies.  If `chess-ai-quiescence' is non-nil additionally only capturing
+moves are examined until a quiet position is reached.  EVAL-FN is called
+for all leave nodes of the resulting tree.
+A `cons' cell is returned where `cdr' is the supposedly best move from POSITION
+and `car' is the score of that move.  If there is no legal move from POSITION
+\(or DEPTH is 0), `cdr' will be nil."
+  (let ((chess-ply-allow-interactive-query nil))
+    (if (zerop depth)
+       (cons (funcall eval-fn position) nil)
+      (let ((plies (let ((chess-ai-mobility nil)
+                        (chess-ai-quiescence nil))
+                    (sort
+                     (mapcar
+                      (lambda (ply)
+                        (chess-ply-set-keyword
+                         ply :score
+                         (- (chess-ai-search (chess-ply-next-pos ply)
+                                             1
+                                             (1+ most-negative-fixnum)
+                                             most-positive-fixnum
+                                             #'chess-ai-eval-static)))
+                        ply)
+                      (chess-legal-plies
+                       position :color (chess-pos-side-to-move position)))
+                     (lambda (lhs rhs)
+                       (> (chess-ply-keyword lhs :score)
+                          (chess-ply-keyword rhs :score)))))))
+       (if (null plies)
+           (cons (funcall eval-fn position) nil)
+         (let* ((best-ply (car plies))
+                (progress (make-progress-reporter
+                           (format "Thinking... (%s) "
+                                   (chess-ply-to-algebraic best-ply))
+                           0 (length plies))))
+           (cl-loop for i from 1
+                    for ply in plies
+                    do (let ((value (- (chess-ai-search
+                                        (chess-ply-next-pos ply)
+                                        (1- depth) (- upper-bound) (- 
lower-bound)
+                                        eval-fn))))
+                         (progress-reporter-update progress i)
+                           (accept-process-output nil 0.05)
+                         (when (> value lower-bound)
+                           (setq lower-bound value
+                                 best-ply ply)
+                           (progress-reporter-force-update
+                            progress
+                            i
+                            (format "Thinking... (%s {cp=%d}) "
+                                    (chess-ply-to-algebraic best-ply)
+                                    lower-bound))))
+                    until (>= lower-bound upper-bound))
+           (progress-reporter-done progress)
+           (cons lower-bound best-ply)))))))
+
+(defun chess-ai-best-move (position &optional depth eval-fn)
+  "Find the best move for POSITION.
+DEPTH defaults to the value of `chess-ai-depth'."
+  (cdr (chess-ai-eval position (or depth chess-ai-depth)
+                     (1+ most-negative-fixnum) most-positive-fixnum
+                     (or eval-fn #'chess-ai-eval-static))))
+
+(defun chess-ai-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (setq chess-engine-opponent-name "Emacs AI")
+      t)
+
+     ((eq event 'new)
+      (chess-engine-set-position nil))
+
+     ((eq event 'move)
+      (when (= 1 (chess-game-index game))
+       (chess-game-set-tag game "White" chess-full-name)
+       (chess-game-set-tag game "Black" chess-engine-opponent-name))
+      (when (chess-game-over-p game)
+       (chess-game-set-data game 'active nil)))
+
+     ((eq event 'post-move)
+      (unless (chess-game-over-p game)
+       (let ((chess-display-handling-event nil)
+             (position (chess-engine-position nil)))
+         (funcall chess-engine-response-handler 'move
+                  (or (and (bufferp chess-polyglot-book)
+                           (buffer-live-p chess-polyglot-book)
+                           (chess-polyglot-book-ply chess-polyglot-book 
position))
+                      (chess-ai-best-move position))))))
+
+     (t
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-ai)
+;;; chess-ai.el ends here
diff --git a/packages/chess/chess-algebraic.el 
b/packages/chess/chess-algebraic.el
new file mode 100644
index 0000000..6af6a0c
--- /dev/null
+++ b/packages/chess/chess-algebraic.el
@@ -0,0 +1,205 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Convert a ply to/from standard chess algebraic notation
+;;
+;; A thing to deal with in chess is algebraic move notation, such as
+;; Nxf3+.  (I leave description of this notation to better manuals
+;; than this).  This notation is a shorthand way of representing where
+;; a piece is moving from and to, by specifying the piece is involved,
+;; where it's going, and whether or not a capture or check is
+;; involved.
+;;
+;; You can convert from algebraic notation to a ply (one pair in most
+;; cases, but two for a castle) using the following function (NOTE:
+;; POSITION determines which side is on move (by calling
+;; `chess-pos-side-to-move')):
+;;
+;;    (chess-algebraic-to-ply POSITION STRING)
+;;
+;; The function also checks if a move is legal, and will raise an
+;; error if not.
+;;
+;; To convert from a ply to algebraic notation, use:
+;;
+;;    (chess-ply-to-algebraic PLY)
+;;
+;; Castling is determined by the movement of both a king and a rook.
+;;
+;; Lastly, there is a regexp for quickly checking if a string is in
+;; algebraic notation or not, or searching out algebraic strings in a
+;; buffer:
+;;
+;;    chess-algebraic-regexp
+;;
+
+(eval-when-compile (require 'cl))
+
+(require 'chess-message)
+(require 'chess-pos)
+
+(defconst chess-algebraic-pieces-regexp "[RNBKQ]")
+
+;; jww (2008-09-01): use rx here, like in chess-ics
+(defconst chess-algebraic-regexp
+  (format (concat "\\("
+                   "O-O\\(-O\\)?\\|"
+                   "\\(%s?\\)/?"       ; what is the / doing here?
+                   "\\([a-h]?[1-8]?\\)"
+                   "\\([x-]?\\)"
+                   "\\([a-h][1-8]\\)"
+                   "\\(=\\(%s\\)\\)?"
+                 "\\)"
+                 "\\([#+]\\)?")
+         chess-algebraic-pieces-regexp
+         chess-algebraic-pieces-regexp)
+  "A regular expression that matches all possible algebraic moves.
+This regexp handles both long and short form.")
+
+(defconst chess-algebraic-regexp-entire
+  (concat chess-algebraic-regexp "$"))
+
+(defconst chess-algebraic-regexp-ws
+  (concat chess-algebraic-regexp "\\s-"))
+
+(chess-message-catalog 'english
+  '((clarify-piece     . "Clarify piece to move by rank or file")
+    (could-not-clarify . "Could not determine which piece to use")
+    (could-not-diff    . "Could not differentiate piece")
+    (no-candidates     . "There are no candidate moves for '%s'")
+    (at-move-string    . "At algebraic move '%s': %s")))
+
+(defun chess-algebraic-to-ply (position move &optional trust)
+  "Convert the algebraic notation MOVE for POSITION to a ply."
+  (assert (vectorp position))
+  (assert (stringp move))
+  (let ((case-fold-search nil))
+    (when (string-match chess-algebraic-regexp-entire move)
+      (let ((color (chess-pos-side-to-move position))
+           (mate (match-string 9 move))
+           (piece (aref move 0))
+           changes long-style)
+       (if (eq piece ?O)
+           (setq changes (chess-ply-castling-changes
+                          position (= (length (match-string 1 move)) 5)))
+         (let ((promotion (match-string 8 move)))
+           (setq
+            changes
+            (let ((source (match-string 4 move))
+                  (target (chess-coord-to-index (match-string 6 move))))
+              (if (and source (= (length source) 2))
+                  (prog1
+                      (list (chess-coord-to-index source) target)
+                    (setq long-style t))
+                (if (= (length source) 0)
+                    (setq source nil)
+                  (setq source (aref source 0)))
+                (let (candidates which)
+                  (unless (< piece ?a)
+                    (setq source piece piece ?P))
+                  ;; we must use our knowledge of how pieces can
+                  ;; move, to determine which piece is meant by the
+                  ;; piece indicator
+                  (if (setq candidates
+                            (chess-search-position position target
+                                                   (if color piece
+                                                     (downcase piece))
+                                                   nil t))
+                      (if (= (length candidates) 1)
+                          (list (car candidates) target)
+                        (if (null source)
+                            (chess-error 'clarify-piece)
+                          (nconc changes (list :which source))
+                          (while candidates
+                            (if (if (>= source ?a)
+                                    (eq (chess-index-file (car candidates))
+                                        (- source ?a))
+                                  (eq (chess-index-rank (car candidates))
+                                      (- 7 (- source ?1))))
+                                (setq which (car candidates)
+                                      candidates nil)
+                              (setq candidates (cdr candidates))))
+                          (if (null which)
+                              (chess-error 'could-not-clarify)
+                            (list which target))))
+                    (chess-error 'no-candidates move))))))
+           (if promotion
+               (nconc changes (list :promote (aref promotion 0))))))
+
+       (when changes
+         (if (and trust mate)
+             (nconc changes (list (if (equal mate "#")
+                                      :checkmate
+                                    :check))))
+         (unless long-style
+           (nconc changes (list :san move)))
+
+         (condition-case err
+             (apply 'chess-ply-create position trust changes)
+           (error
+            (chess-error 'at-move-string
+                         move (error-message-string err)))))))))
+
+(defun chess-ply--move-text (ply long)
+  (or
+   (and (chess-ply-keyword ply :castle) "O-O")
+   (and (chess-ply-keyword ply :long-castle) "O-O-O")
+   (let* ((pos (chess-ply-pos ply))
+         (from (chess-ply-source ply))
+         (to (chess-ply-target ply))
+         (from-piece (chess-pos-piece pos from))
+         (color (chess-pos-side-to-move pos))
+         (rank 0) (file 0)
+         (from-rank (chess-index-rank from))
+         (from-file (chess-index-file from))
+         (differentiator (chess-ply-keyword ply :which)))
+       (unless differentiator
+         (let ((candidates (chess-search-position pos to from-piece nil t)))
+           (when (> (length candidates) 1)
+             (dolist (candidate candidates)
+               (if (= (/ candidate 8) from-rank)
+                   (setq rank (1+ rank)))
+               (if (= (mod candidate 8) from-file)
+                   (setq file (1+ file))))
+             (cond
+              ((= file 1)
+               (setq differentiator (+ from-file ?a)))
+              ((= rank 1)
+               (setq differentiator (+ (- 7 from-rank) ?1)))
+              (t (chess-error 'could-not-diff)))
+             (chess-ply-set-keyword ply :which differentiator))))
+       (concat
+        (unless (= (upcase from-piece) ?P)
+          (char-to-string (upcase from-piece)))
+        (if long
+            (chess-index-to-coord from)
+          (if differentiator
+              (prog1
+                  (char-to-string differentiator)
+                (chess-ply-changes ply))
+            (if (and (not long) (= (upcase from-piece) ?P)
+                     (/= (chess-index-file from)
+                         (chess-index-file to)))
+                (char-to-string (+ (chess-index-file from) ?a)))))
+        (if (or (/= ?  (chess-pos-piece pos to))
+                (chess-ply-keyword ply :en-passant))
+            "x" (if long "-"))
+        (chess-index-to-coord to)
+        (let ((promote (chess-ply-keyword ply :promote)))
+          (if promote
+              (concat "=" (char-to-string promote))))
+        (if (chess-ply-keyword ply :check) "+"
+          (if (chess-ply-keyword ply :checkmate) "#"))))))
+
+(defun chess-ply-to-algebraic (ply &optional long)
+  "Convert the given PLY to algebraic notation.
+If LONG is non-nil, render the move into long notation."
+  (assert (listp ply))
+  (or (and (not long) (chess-ply-keyword ply :san))
+      (and (null (chess-ply-source ply)) "")
+      (let ((move (chess-ply--move-text ply long)))
+       (unless long (chess-ply-set-keyword ply :san move))
+       move)))
+
+(provide 'chess-algebraic)
+
+;;; chess-algebraic.el ends here
diff --git a/packages/chess/chess-announce.el b/packages/chess/chess-announce.el
new file mode 100644
index 0000000..916b5c1
--- /dev/null
+++ b/packages/chess/chess-announce.el
@@ -0,0 +1,125 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Scheme to verbally announce moves
+;;
+
+(require 'chess-game)
+(require 'chess-message)
+
+(chess-message-catalog 'english
+  '((queen       . "queen")
+    (king        . "king")
+    (bishop      . "bishop")
+    (knight      . "knight")
+    (rook        . "rook")
+    (pawn        . "pawn")
+    (short-castle . "short castle")
+    (long-castle  . "long castle")
+    (check       . "check")
+    (checkmate   . "checkmate")
+    (stalemate   . "stalemate")
+    (en-passant          . "on possont")
+    (promote     . "promote to %s")
+    (piece-moves  . "%s to %s")
+    (piece-takes  . "%s takes %s at %s")))
+
+(defvar chess-announce-names
+  '((?q . queen)
+    (?k . king)
+    (?b . bishop)
+    (?n . knight)
+    (?r . rook)
+    (?p . pawn)))
+
+(autoload 'festival-start-process "festival")
+(autoload 'festival-kill-process "festival")
+
+(defvar chess-announce-functions
+  (if (and (executable-find "festival")
+          (not (featurep 'emacspeak)))
+      (if (fboundp 'festival-say-string)
+         '(festival-start-process festival-say-string festival-kill-process)
+       '(ignore chess-announce-festival ignore))
+    '(ignore message ignore))
+  "These three functions are used to for announcing moves.
+The first is called one start of the announcer.  The second is called
+with the string to announce each time.  The third is called to
+shutdown the announcer process, if necessary.")
+
+(defsubst chess-piece-name (char)
+  (chess-string (cdr (assq (downcase char)
+                          chess-announce-names))))
+
+(defun chess-announce-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (funcall (nth 0 chess-announce-functions))
+    t)
+
+   ((eq event 'destroy)
+    (funcall (nth 2 chess-announce-functions)))
+
+   ((eq event 'move)
+    (let* ((ply (chess-game-ply game (1- (chess-game-index game))))
+          (pos (chess-ply-pos ply)))
+      (unless (eq (chess-game-data game 'my-color)
+                 (chess-pos-side-to-move pos))
+       (let* ((source (chess-ply-source ply))
+              (target (chess-ply-target ply))
+              (s-piece (and source (chess-pos-piece pos source)))
+              (t-piece (and target (chess-pos-piece pos target)))
+              (which (chess-ply-keyword ply :which))
+              text)
+         (if which
+             (setq which (char-to-string which)))
+         (cond
+          ((chess-ply-keyword ply :castle)
+           (setq text (chess-string 'short-castle)))
+          ((chess-ply-keyword ply :long-castle)
+           (setq text (chess-string 'long-castle)))
+          ((and s-piece t-piece (= t-piece ? ) target)
+           (setq text
+                 (concat which
+                         (chess-string 'piece-moves
+                                       (chess-piece-name s-piece)
+                                       (chess-index-to-coord target)))))
+          ((and s-piece t-piece target)
+           (setq text
+                 (concat which
+                         (chess-string 'piece-takes
+                                       (chess-piece-name s-piece)
+                                       (chess-piece-name t-piece)
+                                       (chess-index-to-coord target))))))
+
+         (let ((promotion (chess-ply-keyword ply :promote)))
+           (if promotion
+               (setq text
+                     (concat text ", "
+                             (chess-string 'promote
+                                           (chess-piece-name promotion))))))
+         (if (chess-ply-keyword ply :en-passant)
+             (setq text (concat text ", " (chess-string 'en-passant))))
+         (if (chess-ply-keyword ply :check)
+             (setq text (concat text ", " (chess-string 'check))))
+         (if (chess-ply-keyword ply :checkmate)
+             (setq text (concat text ", " (chess-string 'checkmate))))
+         (if (chess-ply-keyword ply :stalemate)
+             (setq text (concat text ", " (chess-string 'stalemate))))
+
+         (funcall (nth 1 chess-announce-functions) text)))))
+   ((eq event 'kibitz)
+    (funcall (nth 1 chess-announce-functions) (car args)))))
+
+(defun chess-announce-festival (text)
+  "Announce the given text using festival.
+This is less efficient than festival.el, which should be installed if
+possible.  Debian installs it automatically when you apt-get install
+festival."
+  (let ((proc (start-process "announce" nil "/usr/bin/festival" "--tts")))
+    (when (and proc (eq (process-status proc) 'run))
+      (process-send-string proc (concat text "\n"))
+      (process-send-eof proc))))
+
+(provide 'chess-announce)
+
+;;; chess-announce.el ends here
diff --git a/packages/chess/chess-autosave.el b/packages/chess/chess-autosave.el
new file mode 100644
index 0000000..96dbdf2
--- /dev/null
+++ b/packages/chess/chess-autosave.el
@@ -0,0 +1,141 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A special kind of display that merely autosaves the game
+;;
+
+(require 'chess-game)
+(require 'chess-database)
+(require 'chess-message)
+(require 'chess-module)
+
+(defgroup chess-autosave nil
+  "A special display that autosaves after each move."
+  :group 'chess-display)
+
+(defcustom chess-autosave-file "~/.chess-save"
+  "Filename in which to autosave chess games."
+  :type '(choice file (const :tag "Do not auto-save" nil))
+  :group 'chess-autosave)
+
+(defcustom chess-autosave-database nil
+  "If non-nil, a chess database file in which completed games are appended.
+If a function, it will receive a game object and is expected to do the
+work of saving the game object to whichever database(s) it chooses.
+Whether it closes those databases or caches them for later use is up
+to the user."
+  :type '(choice (const :tag "Do not save completed games" nil)
+                file function)
+  :group 'chess-autosave)
+
+(chess-message-catalog 'english
+  '((chess-read-autosave    . "There is a chess autosave file, read it? ")
+    (chess-delete-autosave  . "Delete the autosave file? ")
+    (chess-disable-autosave . "Disable autosaving for this game? ")
+    (autosave-available     . "There is an autosave file; type ~ after 
connecting to read it")))
+
+(defun chess-autosave-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (kill-buffer (current-buffer))
+    (set-buffer (find-file-noselect chess-autosave-file t))
+    (buffer-disable-undo)
+    (setq buffer-auto-save-file-name nil)
+    t)
+
+   ((eq event 'check-autosave)
+    (if (file-readable-p chess-autosave-file)
+       (if (y-or-n-p (chess-string 'chess-read-autosave))
+           (progn
+             (chess-autosave-read game chess-autosave-file)
+             (erase-buffer))
+         (if (y-or-n-p (chess-string 'chess-delete-autosave))
+             (erase-buffer)
+           (if (y-or-n-p (chess-string 'chess-disable-autosave))
+               (chess-autosave-handler game 'disable-autosave))))))
+
+   ((eq event 'announce-autosave)
+    (if (file-readable-p chess-autosave-file)
+       (chess-message 'autosave-available)))
+
+   ((eq event 'disable-autosave)
+    (chess-autosave-handler game 'destroy)
+    (chess-module-destroy (current-buffer)))
+
+   ((eq event 'post-move)
+    (if (not (chess-game-over-p game))
+       (chess-autosave-write game chess-autosave-file)
+      (erase-buffer)
+      (if chess-autosave-database
+         (if (functionp chess-autosave-database)
+             (funcall chess-autosave-database game)
+           (let ((database (chess-database-open chess-autosave-database)))
+             (when database
+               (chess-database-write database game)
+               (chess-database-close database)))))))
+
+   ((eq event 'destroy)
+    (set-buffer-modified-p nil)
+    (if (file-exists-p chess-autosave-file)
+       (delete-file chess-autosave-file)))))
+
+(defun chess-prin1-ply (ply)
+  (insert "([")
+  (let ((pos (chess-ply-pos ply)))
+    (dotimes (i 74)
+      (prin1 (aref pos i) (current-buffer))
+      (insert ? )))
+  (insert "nil]")
+  (let ((changes (chess-ply-changes ply)))
+    (if changes
+       (insert ? ))
+    (while changes
+      (if (eq (car changes) :next-pos)
+         (setq changes (cddr changes))
+       (prin1 (car changes) (current-buffer))
+       (if (cdr changes)
+           (insert ? ))
+       (setq changes (cdr changes)))))
+  (insert ")"))
+
+(defun chess-autosave-write (game file)
+  "Write a chess GAME to FILE as raw Lisp."
+  (let ((index (chess-game-index game)))
+    (if (or (= 1 index) (and (bobp) (eobp)))
+       (progn
+         (erase-buffer)
+         (prin1 (chess-game-tags game)
+                (current-buffer))
+         (insert "\n(\n;;## ply 0\n"))
+      (goto-char (point-max))
+      (re-search-backward "^;;## ply")
+      (forward-line)
+      (delete-region (point) (point-max)))
+    (chess-prin1-ply (chess-game-ply game (1- index)))
+    (insert (format "\n;;## ply %d\n" index))
+    (chess-prin1-ply (chess-game-ply game))
+    (insert ")\n")
+    (basic-save-buffer)
+    (message nil)))
+
+(defun chess-autosave-read (game file)
+  "Read a chess game as raw Lisp from FILE."
+  (goto-char (point-min))
+  (chess-game-set-tags game (read (current-buffer)))
+  (let* ((plies (read (current-buffer)))
+        (game-plies plies)
+        prev-ply)
+    (while plies
+      (if prev-ply
+         (chess-pos-set-preceding-ply (chess-ply-pos (car plies))
+                                      prev-ply))
+      (if (cdr plies)
+         (chess-ply-set-keyword (car plies) :next-pos
+                                (chess-ply-pos (cadr plies))))
+      (setq prev-ply (car plies)
+           plies (cdr plies)))
+
+    (chess-game-set-plies game game-plies)))
+
+(provide 'chess-autosave)
+
+;;; chess-autosave.el ends here
diff --git a/packages/chess/chess-chat.el b/packages/chess/chess-chat.el
new file mode 100644
index 0000000..dd6f694
--- /dev/null
+++ b/packages/chess/chess-chat.el
@@ -0,0 +1,48 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Implements chess chat, which is very much like kibitzing, but not
+;; saved.  RET is used to send each chat line.
+;;
+
+(require 'chess-module)
+
+(defvar chess-chat-input-last nil)
+
+(make-variable-buffer-local 'chess-chat-input-last)
+
+(define-derived-mode chess-chat-mode text-mode "Chat"
+  "A mode for editing chess annotations."
+  (set-buffer-modified-p nil)
+  (setq chess-chat-input-last (copy-marker (point-max) t))
+  (let ((map (current-local-map)))
+    (define-key map [return] 'chess-chat-send)
+    (define-key map [(control ?m)] 'chess-chat-send)))
+
+(defun chess-chat-send ()
+  (interactive)
+  (chess-game-run-hooks chess-module-game 'chat
+                       (buffer-substring-no-properties
+                        chess-chat-input-last (point-max)))
+  (set-marker chess-chat-input-last (point-max))
+  (set-buffer-modified-p nil))
+
+(defun chess-chat-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (kill-buffer (current-buffer))
+    (set-buffer (generate-new-buffer "*Chat*"))
+    (chess-chat-mode)
+    t)
+
+   ((eq event 'switch-to-chat)
+    (switch-to-buffer-other-window (current-buffer)))
+
+   ((eq event 'chat)
+    (chess-chat-handler 'switch-to-chat)
+    (save-excursion
+      (goto-char chess-chat-input-last)
+      (insert (car args))))))
+
+(provide 'chess-chat)
+
+;;; chess-chat.el ends here
diff --git a/packages/chess/chess-clock.el b/packages/chess/chess-clock.el
new file mode 100644
index 0000000..bf12d43
--- /dev/null
+++ b/packages/chess/chess-clock.el
@@ -0,0 +1,104 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Implements a chess clock
+;;
+
+(require 'chess-game)
+(require 'chess-module)
+
+(defvar chess-clock-last-time nil)
+(defvar chess-clock-timer nil)
+
+(make-variable-buffer-local 'chess-clock-last-time)
+(make-variable-buffer-local 'chess-clock-timer)
+
+(defsubst chess-clock-add-seconds (time seconds)
+  "To TIME, add SECONDS.  Return result as a time value."
+  (let* ((secint (truncate seconds))
+        (hi (/ secint 65536))
+        (lo (% secint 65536))
+        (calc (+ (cadr time) lo)))
+    (if (< calc 65536)
+       (list (+ (car time) hi) calc)
+      (list (+ (car time) (1+ hi)) (% calc 65536)))))
+
+(defsubst chess-clock-time-to-seconds (time)
+  "Convert TIME to a floating point number."
+  (+ (* (car time) 65536.0)
+     (cadr time)
+     (/ (or (car (cdr (cdr time))) 0) 1000000.0)))
+
+(defsubst chess-clock-time-diff (t1 t2)
+  "Return the difference in seconds between T1 and T2."
+  (- (chess-clock-time-to-seconds t1)
+     (chess-clock-time-to-seconds t2)))
+
+(defun chess-clock-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (unless (or (null (car args))
+               (chess-game-data game 'white-remaining))
+      (chess-game-set-data game 'white-remaining (float (car args)))
+      (chess-game-set-data game 'black-remaining (float (car args))))
+    t)
+
+   ((eq event 'post-undo)
+    (let* ((last-ply (car (last (chess-game-plies game) 2)))
+          (white (chess-ply-keyword last-ply :white))
+          (black (chess-ply-keyword last-ply :black)))
+      (when (and white black)
+       (chess-game-set-data game 'white-remaining white)
+       (chess-game-set-data game 'black-remaining black))))
+
+   ((eq event 'move)
+    (let ((white (chess-game-data game 'white-remaining))
+         (black (chess-game-data game 'black-remaining)))
+      (when (and white black
+                (chess-game-data game 'active)
+                (> (chess-game-index game) 0))
+       (unless chess-clock-timer
+         (setq chess-clock-timer
+               (run-with-timer 0 1 'chess-clock-tick-tock
+                               (current-buffer))))
+       (let ((last-ply (car (last (chess-game-plies game) 2))))
+         (chess-ply-set-keyword last-ply :white white)
+         (chess-ply-set-keyword last-ply :black black))))
+
+    (if (chess-game-over-p game)
+       (chess-clock-handler game 'destroy)))
+
+   ((eq event 'set-data)
+    (if (and (eq (car args) 'active)
+            (not (chess-game-data game 'active)))
+       (chess-clock-handler game 'destroy)))
+
+   ((eq event 'destroy)
+    (if chess-clock-timer
+      (cancel-timer chess-clock-timer)
+      (setq chess-clock-timer nil)))))
+
+(defvar chess-clock-tick-tocking nil)
+
+(defun chess-clock-tick-tock (module)
+  (unless chess-clock-tick-tocking
+    (let ((chess-clock-tick-tocking t))
+      (with-current-buffer module
+       (let ((last-time chess-clock-last-time)
+             (chess-game-inhibit-events t)
+             counter)
+         (setq chess-clock-last-time (current-time))
+         (when (and last-time
+                    (> (chess-game-index chess-module-game) 0)
+                    (not (chess-game-status chess-module-game)))
+           (if (chess-pos-side-to-move (chess-game-pos chess-module-game))
+               (setq counter 'white-remaining)
+             (setq counter 'black-remaining))
+           (chess-game-set-data
+            chess-module-game counter
+            (- (chess-game-data chess-module-game counter)
+               (chess-clock-time-diff chess-clock-last-time last-time))))))
+      (force-mode-line-update))))
+
+(provide 'chess-clock)
+
+;;; chess-clock.el ends here
diff --git a/packages/chess/chess-common.el b/packages/chess/chess-common.el
new file mode 100644
index 0000000..0b258e4
--- /dev/null
+++ b/packages/chess/chess-common.el
@@ -0,0 +1,109 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Define handler functions that are common to the (relatively)
+;; standard chess engine communication protocol:
+;;
+;;   http://www.tim-mann.org/xboard/engine-intf.html
+;;
+
+(require 'chess)
+(require 'chess-engine)
+(require 'chess-message)
+
+(defvar chess-common-engine-name nil)
+(defvar chess-common-temp-files nil)
+(make-variable-buffer-local 'chess-common-engine-name)
+(make-variable-buffer-local 'chess-common-temp-files)
+
+(defmacro chess-with-temp-file (&rest body)
+  `(let ((file (make-temp-file "chess")))
+     (with-temp-file file
+       ,@body)
+     (push file chess-common-temp-files)
+     file))
+
+(put 'chess-with-temp-file 'lisp-indent-function 1)
+
+(chess-message-catalog 'english
+  '((starting-engine      . "Starting chess program '%s'...")
+    (starting-engine-done  . "Starting chess program '%s'...done")
+    (could-not-find-engine . "Cannot find %s executable; check `%s'")
+    (draw-offer-declined   . "Your draw offer was declined")
+    (illegal-move          . "Illegal move")
+    (not-yet-implemented   . "This feature is not yet implemented")))
+
+(defun chess-common-handler (game event &rest args)
+  "Initialize the network chess engine."
+  (cond
+   ((eq event 'initialize)
+    (let* ((name (car args))
+          (path (intern (concat "chess-" name "-path")))
+          proc)
+      (chess-message 'starting-engine name)
+      (unless (and (boundp path) (symbol-value path))
+       (chess-error 'could-not-find-engine name path))
+      (setq proc (start-process (concat "chess-" name)
+                               (current-buffer) (symbol-value path)))
+      (chess-message 'starting-engine-done name)
+      proc))
+
+   ((eq event 'ready)
+    (chess-game-set-data game 'active t)
+    (chess-game-run-hooks game 'check-autosave))
+
+   ((eq event 'destroy)
+    (let ((proc (get-buffer-process (current-buffer))))
+      (if (and (processp proc)
+              (memq (process-status proc) '(run open)))
+         (chess-engine-send nil "quit\n")))
+
+    (dolist (file chess-common-temp-files)
+      (if (file-exists-p file)
+         (delete-file file)))
+    (setq chess-common-temp-files nil))
+
+   ((eq event 'pass)
+    (chess-engine-send nil "go\n"))
+
+   ((eq event 'draw)
+    (chess-message 'draw-offer-declined))
+
+   ((eq event 'resign)
+    (chess-engine-send nil "resign\n")
+    (chess-game-set-data game 'active nil))
+
+   ((eq event 'new)
+    (chess-engine-send nil "new\n")
+    (chess-engine-set-position nil))
+
+   ((eq event 'force)
+    (chess-error 'not-yet-implemented))
+
+   ((eq event 'undo)
+    (dotimes (i (car args))
+      (chess-engine-send nil "undo\n"))
+    (if (= 1 (mod (car args) 2))
+       (chess-engine-send nil "go\n"))
+
+    ;; prevent us from handling the `undo' event which this triggers
+    (let ((chess-engine-handling-event t))
+      (chess-game-undo game (car args))))
+
+   ((eq event 'flag-fell)
+    (chess-game-set-data game 'active nil)
+    (let ((chess-game-inhibit-events t))
+      (chess-game-end game :flag-fell)))
+
+   ((eq event 'move)
+    (when (= 1 (chess-game-index game))
+      (chess-game-set-tag game "White" chess-full-name)
+      (chess-game-set-tag game "Black" chess-engine-opponent-name))
+
+    (chess-engine-send nil (concat (chess-ply-to-algebraic (car args))
+                                  "\n"))
+    (if (chess-game-over-p game)
+       (chess-game-set-data game 'active nil)))))
+
+(provide 'chess-common)
+
+;;; chess-common.el ends here
diff --git a/packages/chess/chess-crafty.el b/packages/chess/chess-crafty.el
new file mode 100644
index 0000000..6f4c8d6
--- /dev/null
+++ b/packages/chess/chess-crafty.el
@@ -0,0 +1,163 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Play against crafty!
+;;
+
+(require 'chess-common)
+(require 'chess-var)
+
+(defgroup chess-crafty nil
+  "The publically available chess engine 'crafty'."
+  :group 'chess-engine)
+
+(defcustom chess-crafty-path (or (executable-find "crafty")
+                                (executable-find "wcrafty"))
+  "*The path to the crafty executable."
+  :type 'file
+  :group 'chess-crafty)
+
+(defvar chess-crafty-evaluation nil)
+
+(make-variable-buffer-local 'chess-crafty-evaluation)
+
+(defvar chess-crafty-analyzing-p nil
+  "Non-nil if Crafty is currently in analysis mode.")
+
+(make-variable-buffer-local 'chess-crafty-analyzing-p)
+
+(defvar chess-crafty-regexp-alist
+  (list
+   (cons (concat "move\\s-+\\(" chess-algebraic-regexp "\\)\\s-*$")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-engine-convert-algebraic (match-string 1) t)))))
+   (cons "total evaluation\\.+\\s-+\\([-+0-9.]+\\)"
+        (function
+         (lambda ()
+           (setq chess-crafty-evaluation
+                 (string-to-number (match-string 1))))))
+   (cons "tellicsnoalias kibitz Hello from\\s-+\\(.+\\)$"
+        (function
+         (lambda ()
+           (setq chess-engine-opponent-name (match-string 1)))))
+   (cons "Analyze Mode: type \"exit\" to terminate.$"
+        (function
+         (lambda ()
+           (setq chess-crafty-analyzing-p t))))
+   (cons (concat "\t ?\\([0-9]+\\)\\s-+"
+                "\\(-?[0-9]+\\)\\s-+\\([0-9]+\\)\\s-+\\([0-9]+\\)\\s-+"
+                "\\(" ;; The list of moves
+                  "\\( *[1-9][0-9]*\\. "
+                    "\\(\\.\\.\\.\\|" chess-algebraic-regexp "\\)"
+                    "\\( " chess-algebraic-regexp "\\)?\\)+\\)$")
+        (function
+         (lambda ()
+           (when chess-crafty-analyzing-p
+             ;; We can translate this information to EPD opcodes
+             (let ((depth (read (match-string 1)))
+                   (centipawn (read (match-string 2)))
+                   (nodes (match-string 4))
+                   (pos (chess-engine-position nil)))
+               (chess-pos-set-epd pos 'acd depth)
+               (chess-pos-set-epd pos 'ce centipawn)
+               (chess-pos-set-epd
+                pos
+                'pv ; predicted variation
+                (save-restriction
+                  (narrow-to-region (match-beginning 5) (match-end 5))
+                  (let ((var (chess-var-create pos)))
+                    (goto-char (point-min))
+                    (while (not (eobp))
+                      (cond
+                       ((looking-at "[1-9][0-9]*\\.[ .]*")
+                        (goto-char (match-end 0)))
+                       ((looking-at chess-algebraic-regexp)
+                        (goto-char (match-end 0))
+                        (let ((ply (chess-algebraic-to-ply
+                                    (chess-var-pos var)
+                                    (match-string-no-properties 0))))
+                          (unless ply
+                            (error "unable to read move '%s'"
+                                   (match-string-no-properties 0)))
+                          (chess-var-move var ply))))
+                      (skip-chars-forward " "))
+                    var))))))))
+   (cons "analyze complete.$"
+        (function
+         (lambda ()
+           (setq chess-crafty-analyzing-p nil))))
+   (cons "{\\(Black\\|White\\) resigns}"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'resign))))
+   (cons "\\(Illegal move\\|unrecognized/illegal command\\):\\s-*\\(.*\\)"
+        (function
+         (lambda ()
+           (error (match-string 1)))))
+   (cons "command not legal now"
+        (function
+         (lambda ()
+           (error (match-string 0)))))))
+
+(defun chess-crafty-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-common-handler game 'initialize "crafty")))
+       (when (and proc (processp proc)
+                  (eq (process-status proc) 'run))
+         (process-send-string proc "xboard\n")
+         (setq chess-engine-process proc)
+         t)))
+
+     ((eq event 'setup-pos)
+      (chess-engine-send nil (format "setboard %s\n"
+                                    (chess-pos-to-string (car args)))))
+
+     ((eq event 'evaluate)
+      (setq chess-crafty-evaluation nil)
+      (chess-engine-send nil "display general\nscore\ndisplay nogeneral\n")
+      (let ((limit 50))
+       (while (and (null chess-crafty-evaluation)
+                   (> (setq limit (1- limit)) 0))
+         (sit-for 0.1 t))
+       chess-crafty-evaluation))
+
+     ((eq event 'analyze)
+      (if (car args)
+         (chess-engine-send nil "analyze\npost\n")
+       (chess-engine-send nil "exit\nnopost\n")))
+
+     ((eq event 'setup-game)
+      (let ((file (chess-with-temp-file
+                     (insert (chess-game-to-string (car args)) ?\n))))
+       (chess-engine-send nil (format "read %s\n" file))))
+
+     ((eq event 'set-option)
+      (cond
+       ((eq (car args) 'resign)
+       (if (cadr args)
+           (chess-engine-send nil "resign 9\n")
+         (chess-engine-send nil "resign -1\n")))
+       ((eq (car args) 'ponder)
+       (if (cadr args)
+           (chess-engine-send nil "hard\n")
+         (chess-engine-send nil "easy\n")))
+       ((eq (car args) 'search-depth)
+       (assert (and (integerp (cadr args)) (>= (cadr args) 0)))
+       (chess-engine-send nil (format "sd %d\n" (cadr args))))
+       ((eq (car args) 'search-time)
+       (assert (and (integerp (cadr args)) (> (cadr args) 0)))
+       (chess-engine-send nil (format "st %d\n" (cadr args))))))
+
+     (t
+      (if (and (eq event 'undo)
+              (= 1 (mod (car args) 2)))
+         (error "Cannot undo until after crafty moves"))
+
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-crafty)
+
+;;; chess-crafty.el ends here
diff --git a/packages/chess/chess-database.el b/packages/chess/chess-database.el
new file mode 100644
index 0000000..6b0b1cd
--- /dev/null
+++ b/packages/chess/chess-database.el
@@ -0,0 +1,100 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Basic code for manipulating game databases
+;;
+
+(require 'chess-message)
+
+(defgroup chess-database nil
+  "Generic interface to chess database modules."
+  :group 'chess)
+
+(defcustom chess-database-modules '(chess-scid chess-file)
+  "List of database modules to try when `chess-database-open' is called."
+  :type '(repeat (symbol :tag "Module"))
+  :group 'chess-database)
+
+(defvar chess-database-handler nil)
+
+(make-variable-buffer-local 'chess-database-handler)
+
+(chess-message-catalog 'english
+  '((no-such-database . "There is no such chess database module '%s'")))
+
+(defun chess-database-do-open (module file)
+  "Returns the opened database object, or nil."
+  (let* ((name (symbol-name module))
+        (handler (intern-soft (concat name "-handler"))))
+    (unless handler
+      (chess-error 'no-such-database name))
+    (let ((buffer (funcall handler 'open file)))
+      (when buffer
+       (with-current-buffer buffer
+         (setq chess-database-handler handler)
+         (add-hook 'kill-buffer-hook 'chess-database-close nil t)
+         (add-hook 'after-revert-hook 'chess-database-rescan nil t)
+         (current-buffer))))))
+
+(defun chess-database-open (file &optional module)
+  "Returns the opened database object, or nil."
+  (if module
+      (chess-database-do-open module file)
+    (let (result)
+      (setq module chess-database-modules)
+      (while module
+       (if (and (require (car module) nil t)
+                (setq result (chess-database-do-open (car module) file)))
+           (setq module nil)
+         (setq module (cdr module))))
+      result)))
+
+(defsubst chess-database-command (database event &rest args)
+  (with-current-buffer database
+    (apply chess-database-handler event args)))
+
+(defun chess-database-close (&optional database)
+  (let ((buf (or database (current-buffer))))
+    (when (buffer-live-p buf)
+      (with-current-buffer buf
+       (remove-hook 'kill-buffer-hook 'chess-database-close t))
+      (chess-database-save buf)
+      (chess-database-command buf 'close)
+      (kill-buffer buf))))
+
+(defun chess-database-save (database)
+  (chess-database-command database 'save))
+
+(defun chess-database-rescan (&optional database)
+  (chess-database-command database 'rescan))
+
+(defun chess-database-count (database)
+  (chess-database-command database 'count))
+
+(defun chess-database-read-only-p (database)
+  "Return non-nil if DATABASE is read only."
+  (chess-database-command database 'read-only-p))
+
+(defun chess-database-filename (database)
+  "Return the filename of an already opened DATABASE."
+  (chess-database-command database 'filename))
+
+(defun chess-database-read (database index)
+  "Return from DATABASE the chess game object at INDEX."
+  (chess-database-command database 'read index))
+
+(defun chess-database-write (database game)
+  (chess-database-command database 'write game))
+
+(defun chess-database-replace (database game &optional index)
+  (chess-database-command database 'replace game index))
+
+(defun chess-database-query (database &rest terms)
+  "Run a query on DATABASE.
+TERMS is partly dependent on the chess-database module in use.
+chess-scid:
+ tree-search GAME: Perform a tree search on the last position of GAME."
+  (apply 'chess-database-command database 'query terms))
+
+(provide 'chess-database)
+
+;;; chess-database.el ends here
diff --git a/packages/chess/chess-display.el b/packages/chess/chess-display.el
new file mode 100644
index 0000000..6f832da
--- /dev/null
+++ b/packages/chess/chess-display.el
@@ -0,0 +1,1261 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Code shared by all chess displays
+;;
+
+(require 'chess-message)
+(require 'chess-module)
+(require 'chess-var)
+(require 'chess-input)
+(require 'chess-random)
+
+(defgroup chess-display nil
+  "Common code used by chess displays."
+  :group 'chess)
+
+(defcustom chess-display-popup t
+  "If non-nil (the default), popup displays whenever a significant event
+occurs."
+  :type 'boolean
+  :group 'chess-display)
+
+(make-variable-buffer-local 'chess-display-popup)
+
+(defcustom chess-display-highlight-legal nil
+  "If non-nil, highlight legal target squares when a piece is selected."
+  :type 'boolean
+  :group 'chess-display)
+
+(defcustom chess-display-highlight-last-move nil
+  "If non-nil, highlight the last move made on the game."
+  :type 'boolean
+  :group 'chess-display)
+
+(chess-message-catalog 'english
+  '((mode-white     . "White")
+    (mode-black     . "Black")
+    (mode-start     . "START")
+    (mode-checkmate . "CHECKMATE")
+    (mode-aborted   . "ABORTED")
+    (mode-resigned  . "RESIGNED")
+    (mode-stalemate . "STALEMATE")
+    (mode-flag-fell . "FLAG FELL")
+    (mode-drawn     . "DRAWN")
+    (mode-edit      . "EDIT")))
+
+(defcustom chess-display-mode-line-format
+  '("  " chess-display-side-to-move "  "
+    chess-display-move-text "   "
+    (:eval (chess-display-clock-string))
+    "(" (:eval (chess-game-tag chess-module-game "White")) "-"
+    (:eval (chess-game-tag chess-module-game "Black")) ", "
+    (:eval (chess-game-tag chess-module-game "Site"))
+    (:eval (let ((date (chess-game-tag chess-module-game "Date")))
+            (and (string-match "\\`\\([0-9]\\{4\\}\\)" date)
+                 (concat " " (match-string 1 date))))) ")")
+  "The format of a chess display's modeline.
+See `mode-line-format' for syntax details."
+  :type 'sexp
+  :group 'chess-display)
+
+(defface chess-display-black-face
+  '((t (:background "Black" :foreground "White")))
+  "*The face used for the word Black in the mode-line."
+  :group 'chess-display)
+
+(defface chess-display-white-face
+  '((t (:background "White" :foreground "Black")))
+  "*The face used for the word White in the mode-line."
+  :group 'chess-display)
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; User interface
+;;
+
+(defvar chess-display-index)
+(defvar chess-display-move-text)
+(defvar chess-display-side-to-move)
+(defvar chess-display-perspective)
+(defvar chess-display-event-handler nil)
+(defvar chess-display-edit-mode nil)
+(defvar chess-display-index-positions nil)
+
+(make-variable-buffer-local 'chess-display-index)
+(make-variable-buffer-local 'chess-display-move-text)
+(make-variable-buffer-local 'chess-display-side-to-move)
+(put 'chess-display-side-to-move 'risky-local-variable t)
+(make-variable-buffer-local 'chess-display-perspective)
+(make-variable-buffer-local 'chess-display-event-handler)
+(make-variable-buffer-local 'chess-display-edit-mode)
+(make-variable-buffer-local 'chess-display-index-positions)
+
+(defvar chess-display-handling-event nil
+  "If non-nil, chess-display is already handling the event.  This variable
+is used to avoid reentrancy.")
+
+(defvar chess-display-style)
+
+(chess-message-catalog 'english
+  '((no-such-style . "There is no such chessboard display style '%s'")
+    (cannot-yet-add . "Cannot insert moves into a game (yet)")))
+
+(defun chess-display-create (game style perspective)
+  "Create a chess display, for displaying chess objects.
+Where GAME is the chess game object to use, STYLE should be the display
+type to use (a symbol) and PERSPECTIVE determines the viewpoint
+of the board, if non-nil, the board is viewed from White's perspective."
+  (interactive (list (if current-prefix-arg
+                        (chess-game-create (chess-fen-to-pos
+                                            (read-string "FEN: ")))
+                      (chess-game-create))
+                     (intern-soft
+                      (concat "chess-" (completing-read "Display style: "
+                                                       '(("ics1")
+                                                         ("images")
+                                                         ("plain")))))
+                     (y-or-n-p "View from White's perspective? ")))
+  (if (require style nil t)
+      (let* ((chess-display-style style)
+            (display (chess-module-create 'chess-display game "*Chessboard*"
+                            perspective)))
+       (if (called-interactively-p 'any)
+           (progn
+             (chess-display-update display)
+             (chess-display-popup display))
+         display))))
+
+(defalias 'chess-display-destroy 'chess-module-destroy)
+
+(defun chess-display-clone (display style perspective)
+  (let ((new-display (chess-display-create (chess-display-game display)
+                                          style perspective)))
+    ;; the display will have already been updated by the `set-' calls,
+    ;; it's just not visible yet
+    (chess-display-popup new-display)
+    new-display))
+
+(defsubst chess-display-perspective (display)
+  "Return the current perspective of DISPLAY."
+  (chess-with-current-buffer display
+    chess-display-perspective))
+
+(defun chess-display-set-perspective* (display perspective)
+  (chess-with-current-buffer display
+    (setq chess-display-perspective perspective
+         chess-display-index-positions nil)
+    (erase-buffer)))                   ; force a complete redraw
+
+(defun chess-display-set-perspective (display perspective)
+  "Set PERSPECTIVE of DISPLAY."
+  (chess-with-current-buffer display
+    (chess-display-set-perspective* nil perspective)
+    (chess-display-update nil)))
+
+(defun chess-display-set-position (display &optional position my-color)
+  "Set the game associated with DISPLAY to use POSITION and MY-COLOR."
+  (chess-with-current-buffer display
+    (if position
+       (progn
+         (chess-game-set-start-position chess-module-game position)
+         (chess-game-set-data chess-module-game 'my-color my-color))
+      (chess-game-set-start-position chess-module-game
+                                    chess-starting-position)
+      (chess-game-set-data chess-module-game 'my-color t))
+    (chess-display-set-index nil 0)))
+
+(defun chess-display-position (display)
+  "Return the position currently viewed on DISPLAY."
+  (chess-with-current-buffer display
+    (if chess-display-edit-mode
+       chess-display-edit-position
+      (chess-game-pos chess-module-game chess-display-index))))
+
+(defun chess-display-set-ply (display ply)
+  (chess-with-current-buffer display
+    (let ((chess-game-inhibit-events t))
+      (chess-display-set-index nil 1))
+    (chess-game-set-plies chess-module-game
+                         (list ply (chess-ply-create*
+                                    (chess-ply-next-pos ply))))))
+
+(defun chess-display-ply (display)
+  (chess-with-current-buffer display
+    (chess-game-ply chess-module-game chess-display-index)))
+
+(defun chess-display-set-variation (display variation &optional index)
+  "Set DISPLAY VARIATION.
+If INDEX is not specified, this will cause the first ply in the variation
+to be displayed, with the user able to scroll back and forth through the
+moves in the variation.  Any moves made on the board will extend/change the
+variation that was passed in."
+  (chess-with-current-buffer display
+    (let ((chess-game-inhibit-events t))
+      (chess-display-set-index nil (or index (chess-var-index variation))))
+    (chess-game-set-plies chess-module-game variation)))
+
+(defun chess-display-variation (display)
+  (chess-with-current-buffer display
+    (chess-game-main-var chess-module-game)))
+
+(defun chess-display-set-game* (display game &optional index)
+  "Set the game associated with the given DISPLAY."
+  (chess-with-current-buffer display
+    (chess-module-set-game* display game)
+    (chess-display-set-index nil (or index (chess-game-index game)))))
+
+(defun chess-display-set-game (display game &optional index)
+  "Set the given DISPLAY to display the GAME object, optionally at INDEX.
+This is the function to call to cause a display to view a game.  It
+will also update all of the listening engines and other displays to
+also view the same game."
+  (chess-with-current-buffer display
+    (chess-game-copy-game chess-module-game game)
+    (chess-display-set-index nil (or index (chess-game-index game)))))
+
+(defalias 'chess-display-game 'chess-module-game)
+
+(defun chess-display-clock-string ()
+  (let ((white (chess-game-data chess-module-game 'white-remaining))
+       (black (chess-game-data chess-module-game 'black-remaining)))
+    (unless (and white black)
+      (let ((last-ply (chess-game-ply chess-module-game
+                                     (1- chess-display-index))))
+       (setq white (chess-ply-keyword last-ply :white)
+             black (chess-ply-keyword last-ply :black))))
+    (if (and white black)
+       (format "W %s%02d:%02d B %s%02d:%02d   "
+               (if (and (< white 0) (= 0 (floor white))) "-" "")
+               (/ (floor white) 60) (% (abs (floor white)) 60)
+               (if (and (< black 0) (= 0 (floor black))) "-" "")
+               (/ (floor black) 60) (% (abs (floor black)) 60)))))
+
+(defun chess-display-set-index (display index)
+  (chess-with-current-buffer display
+    (if (not (or (not (integerp index))
+                (< index 0)
+                (> index (chess-game-index chess-module-game))))
+       (chess-game-run-hooks chess-module-game 'set-index index)
+      (when (and (> index (chess-game-index chess-module-game))
+                (not (chess-ply-final-p (chess-game-ply chess-module-game))))
+       (chess-game-run-hooks chess-module-game 'forward)))))
+
+(defun chess-display-set-index* (display index)
+  (chess-with-current-buffer display
+    (setq chess-display-index index
+         chess-display-move-text
+         (if (= index 0)
+             (chess-string 'mode-start)
+           (concat (int-to-string (if (> index 1)
+                                      (if (= (mod index 2) 0)
+                                          (/ index 2)
+                                        (1+ (/ index 2)))
+                                    1))
+                   "." (and (= 0 (mod index 2)) "..")
+                   (chess-ply-to-algebraic
+                    (chess-game-ply chess-module-game (1- index)))))
+         chess-display-side-to-move
+         (let ((status (chess-game-status chess-module-game index)))
+           (cond
+            ((eq status :aborted)   (chess-string 'mode-aborted))
+            ((eq status :resign)    (chess-string 'mode-resigned))
+            ((eq status :drawn)     (chess-string 'mode-drawn))
+            ((eq status :checkmate) (chess-string 'mode-checkmate))
+            ((eq status :stalemate) (chess-string 'mode-stalemate))
+            ((eq status :flag-fell) (chess-string 'mode-flag-fell))
+            (t
+             (let* ((color (or chess-pos-always-white
+                               (chess-game-side-to-move chess-module-game
+                                                        index)))
+                    (str (format " %s " (if color
+                                            (chess-string 'mode-white)
+                                          (chess-string 'mode-black)))))
+               (add-text-properties 0 (length str)
+                                    (list 'face (if color
+                                                    'chess-display-white-face
+                                                  'chess-display-black-face))
+                                    str)
+               str)))))
+    (force-mode-line-update)))
+
+(defsubst chess-display-index (display)
+  (chess-with-current-buffer display
+    chess-display-index))
+
+(defun chess-display-update (display &optional popup)
+  "Update the chessboard DISPLAY.  POPUP too, if that arg is non-nil."
+  (chess-with-current-buffer display
+    (funcall chess-display-event-handler 'draw
+            (chess-display-position nil) chess-display-perspective)
+    (if (and popup chess-display-popup
+            (chess-module-leader-p nil))
+       (chess-display-popup nil))))
+
+(defun chess-display-redraw (&optional display)
+  "Just redraw the current display."
+  (interactive)
+  (chess-with-current-buffer display
+    (let ((here (point)))
+      (erase-buffer)
+      (chess-display-update nil)
+      (goto-char here))))
+
+(defun chess-display-index-pos (display index)
+  (chess-with-current-buffer display
+    (unless chess-display-index-positions
+      (setq chess-display-index-positions (make-vector 64 nil))
+      (let ((pos (next-single-property-change (point-min) 'chess-coord))
+           pos-index)
+       (while pos
+         (if (setq pos-index (get-text-property pos 'chess-coord))
+             (aset chess-display-index-positions pos-index pos))
+         (setq pos (next-single-property-change pos 'chess-coord)))
+       (unless (aref chess-display-index-positions 0)
+         (aset chess-display-index-positions 0
+               (if chess-display-perspective
+                   (point-min)
+                 (1- (point-max)))))
+       (unless (aref chess-display-index-positions 63)
+         (aset chess-display-index-positions 63
+               (if chess-display-perspective
+                   (1- (point-max))
+                 (point-min))))))
+    (aref chess-display-index-positions index)))
+
+(defun chess-display-paint-move (display ply)
+  (chess-with-current-buffer display
+    (if chess-display-highlight-last-move
+       (chess-display-redraw))
+    (let ((position (chess-ply-pos ply))
+         (ch (chess-ply-changes ply)))
+      (while ch
+       (if (symbolp (car ch))
+           (setq ch nil)
+         (let ((from (car ch))
+               (to (cadr ch)))
+           (funcall chess-display-event-handler 'draw-square
+                    (chess-display-index-pos nil from) ?  from)
+           (let ((new-piece (chess-ply-keyword ply :promote)))
+             (if new-piece
+                 (funcall chess-display-event-handler 'draw-square
+                          (chess-display-index-pos nil to)
+                          (if (chess-pos-side-to-move position)
+                              new-piece
+                            (downcase new-piece)) to)
+               (funcall chess-display-event-handler 'draw-square
+                        (chess-display-index-pos nil to)
+                        (chess-pos-piece position from) to)))
+           (when (chess-ply-keyword ply :en-passant)
+             (funcall chess-display-event-handler 'draw-square
+                      (chess-display-index-pos nil (chess-pos-en-passant 
position))
+                      ?  (chess-pos-en-passant position))))
+         (setq ch (cddr ch)))))
+    (if chess-display-highlight-last-move
+       (chess-display-highlight-move display ply))))
+
+(chess-message-catalog 'english
+  '((not-your-move . "It is not your turn to move")
+    (game-is-over  . "This game is over")))
+
+(defun chess-display-move (display ply &optional prev-pos pos)
+  "Move a piece on DISPLAY, by applying the given PLY.
+The position of PLY must match the currently displayed position.
+If only START is given, it must be in algebraic move notation."
+  (chess-with-current-buffer display
+    (if (and (chess-display-active-p)
+            ;; `active' means we're playing against an engine
+            (chess-game-data chess-module-game 'active)
+            (not (eq (chess-game-data chess-module-game 'my-color)
+                     (chess-game-side-to-move chess-module-game))))
+       (chess-error 'not-your-move)
+      (if (and (= chess-display-index
+                 (chess-game-index chess-module-game))
+              (chess-game-over-p chess-module-game))
+         (chess-error 'game-is-over)))
+    (if (= chess-display-index (chess-game-index chess-module-game))
+       (let ((chess-display-handling-event t))
+         (chess-game-move chess-module-game ply)
+         (chess-display-paint-move nil ply)
+         (chess-display-set-index* nil (chess-game-index chess-module-game))
+         (chess-game-run-hooks chess-module-game 'post-move))
+      ;; jww (2002-03-28): This should beget a variation within the
+      ;; game, or alter the game, just as SCID allows
+      (chess-error 'cannot-yet-add))))
+
+(defun chess-display-highlight (display &rest args)
+  "Highlight the square at INDEX on the current position.
+The given highlighting MODE is used, or the default if the style you
+are displaying with doesn't support that mode.  `selected' is a mode
+that is supported by most displays, and is the default mode."
+  (chess-with-current-buffer display
+    (let ((mode :selected))
+      (dolist (arg args)
+       (if (or (symbolp arg) (stringp arg))
+           (setq mode arg)
+         (funcall chess-display-event-handler 'highlight arg mode))))))
+
+(defun chess-display-highlight-legal (display pos)
+  "Highlight all legal move targets from POS."
+  (chess-with-current-buffer display
+    (dolist (ply (chess-legal-plies (chess-display-position nil)
+                                   :index pos))
+      (chess-display-highlight nil "pale green"
+                              (chess-ply-target ply)))))
+
+(defun chess-display-highlight-move (display ply)
+  "Highlight the last move made in the current game."
+  (chess-with-current-buffer display
+     (chess-display-highlight nil "medium sea green"
+                             (chess-ply-source ply)
+                             (chess-ply-target ply))))
+
+(defun chess-display-highlight-passed-pawns (&optional display)
+  (interactive)
+  (mapc
+   (lambda (index) (chess-display-highlight display index :selected))
+   (append
+    (chess-pos-passed-pawns (chess-display-position display) t)
+    (chess-pos-passed-pawns (chess-display-position display) nil))))
+
+(defun chess-display-popup (display)
+  "Popup the given DISPLAY, so that it's visible to the user."
+  (chess-with-current-buffer display
+    (unless (eq (get-buffer-window (current-buffer))
+               (selected-window))
+      (funcall chess-display-event-handler 'popup))))
+
+(defun chess-display-enable-popup (display)
+  "Popup the given DISPLAY, so that it's visible to the user."
+  (chess-with-current-buffer display
+    (setq chess-display-popup nil)))
+
+(defun chess-display-disable-popup (display)
+  "Popup the given DISPLAY, so that it's visible to the user."
+  (chess-with-current-buffer display
+    (setq chess-display-popup t)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default window and frame popup functions
+;;
+
+(defun chess-display-popup-in-window ()
+  "Popup the given DISPLAY, so that it's visible to the user."
+  (unless (get-buffer-window (current-buffer))
+    (if (> (length (window-list)) 1)
+       (fit-window-to-buffer (display-buffer (current-buffer)))
+      (display-buffer (current-buffer)))))
+
+(defun chess-display-popup-in-frame (height width font
+                                    &optional display no-minibuffer)
+  "Popup the given DISPLAY, so that it's visible to the user."
+  (let ((window (get-buffer-window (current-buffer) t)))
+    (if window
+       (let ((frame (window-frame window)))
+         (unless (eq frame (selected-frame))
+           (raise-frame frame)))
+      (let ((params (list (cons 'name "*Chessboard*")
+                         (cons 'height height)
+                         (cons 'width width))))
+       (if display
+           (push (cons 'display display) params))
+       (if font
+           (push (cons 'font font) params))
+       (if no-minibuffer
+           (push (cons 'minibuffer nil) params))
+       (select-frame (make-frame params))
+       (set-window-dedicated-p (selected-window) t)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Event handler
+;;
+
+(defcustom chess-display-interesting-events
+  '(set-index)
+  "Events which will cause a display refresh."
+  :type '(repeat symbol)
+  :group 'chess-display)
+
+(defcustom chess-display-momentous-events
+  '(orient post-undo setup-game pass move resign abort)
+  "Events that will refresh, and cause 'main' displays to popup.
+These are displays for which `chess-display-set-main' has been
+called."
+  :type '(repeat symbol)
+  :group 'chess-display)
+
+(defun chess-display-handler (game event &rest args)
+  "This display module presents a standard chessboard.
+See `chess-display-type' for the different kinds of displays."
+  (unless chess-display-handling-event
+    (if (eq event 'initialize)
+       (progn
+         (chess-display-mode)
+         (setq chess-display-index (chess-game-index game)
+               chess-display-side-to-move
+               (if (chess-pos-side-to-move (chess-game-pos game))
+                   (chess-string 'mode-white)
+                 (chess-string 'mode-black))
+               chess-display-move-text (chess-string 'mode-start)
+               chess-display-perspective (car args)
+               chess-display-event-handler
+               (intern-soft (concat (symbol-name chess-display-style)
+                                    "-handler")))
+         (and chess-display-event-handler
+              (funcall chess-display-event-handler 'initialize)))
+      (cond
+       ((eq event 'pass)
+       (let ((my-color (chess-game-data game 'my-color)))
+         (chess-game-set-data game 'my-color (not my-color))
+         (chess-display-set-perspective* nil (not my-color))))
+
+       ((eq event 'set-index)
+       (chess-display-set-index* nil (car args)))
+
+       ((eq event 'orient)
+       (let ((my-color (chess-game-data game 'my-color)))
+         ;; Set the display's perspective to whichever color I'm
+         ;; playing
+         (chess-display-set-perspective* nil my-color))))
+
+      (if (memq event chess-display-momentous-events)
+         (progn
+           (chess-display-set-index* nil (chess-game-index game))
+           (if (eq event 'move)
+               (progn
+                 (chess-display-paint-move nil (car args))
+                 (if chess-display-popup
+                     (chess-display-popup nil)))
+             (chess-display-update nil chess-display-popup)))
+       (if (memq event chess-display-interesting-events)
+           (chess-display-update nil))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; chess-display-mode
+;;
+
+(defvar chess-display-safe-map
+  (let ((map (make-keymap)))
+    (suppress-keymap map)
+    (set-keymap-parent map nil)
+
+    (define-key map [(control ?i)] 'chess-display-invert)
+    (define-key map [tab] 'chess-display-invert)
+
+    (define-key map [??] 'describe-mode)
+    (define-key map [?L] 'chess-display-list-buffers)
+    ;;(define-key map [?C] 'chess-display-duplicate)
+    (define-key map [?I] 'chess-display-invert)
+
+    (define-key map [?<] 'chess-display-move-first)
+    (define-key map [?,] 'chess-display-move-backward)
+    (define-key map [(meta ?<)] 'chess-display-move-first)
+    (define-key map [?>] 'chess-display-move-last)
+    (define-key map [?.] 'chess-display-move-forward)
+    (define-key map [(meta ?>)] 'chess-display-move-last)
+
+    (define-key map [(meta ?w)] 'chess-display-kill-board)
+
+    (define-key map [(control ?l)] 'chess-display-redraw)
+
+    map)
+  "The mode map used in read-only display buffers.")
+
+(defvar chess-display-mode-map
+  (let ((map (copy-keymap chess-display-safe-map)))
+    (define-key map [space] 'chess-display-pass)
+    (define-key map [? ] 'chess-display-pass)
+    (define-key map [??] 'describe-mode)
+    (define-key map address@hidden 'chess-display-remote)
+    (define-key map [?A] 'chess-display-manual-move)
+    (define-key map [(control ?c) (control ?a)] 'chess-display-abort)
+    (define-key map [?C] 'chess-display-duplicate)
+    (define-key map [?D] 'chess-display-decline)
+    (define-key map [(control ?c) (control ?c)] 'chess-display-force)
+    (define-key map [(control ?c) (control ?d)] 'chess-display-draw)
+    (define-key map [?E] 'chess-display-edit-board)
+    (define-key map [?F] 'chess-display-set-from-fen)
+    (define-key map [(control ?c) (control ?f)] 'chess-display-call-flag)
+    (define-key map [?M] 'chess-display-match)
+    (define-key map [(control ?c) (control ?r)] 'chess-display-resign)
+    (define-key map [?R] 'chess-display-retract)
+    (define-key map [?S] 'chess-display-shuffle)
+    (define-key map [(control ?c) (control ?t)] 'chess-display-undo)
+    (define-key map [?X] 'chess-display-quit)
+    (define-key map [?Y] 'chess-display-accept)
+
+    (define-key map [?\{] 'chess-display-annotate)
+    (define-key map [?\"] 'chess-display-chat)
+    (define-key map [?\'] 'chess-display-chat)
+    (define-key map [?\~] 'chess-display-check-autosave)
+
+    (define-key map [(control ?r)] 'chess-display-search-backward)
+    (define-key map [(control ?s)] 'chess-display-search-forward)
+    (define-key map [(control ?y)] 'chess-display-yank-board)
+
+    (dolist (key '(?a ?b ?c ?d ?e ?f ?g ?h
+                  ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8
+                  ?r ?n ?b ?q ?k
+                  ?R ?N ?B ?Q ?K
+                  ?o ?O ?x))
+      (define-key map (vector key) 'chess-input-shortcut))
+    (define-key map [backspace] 'chess-input-shortcut-delete)
+
+    (define-key map [(control ?m)] 'chess-display-select-piece)
+    (define-key map [return] 'chess-display-select-piece)
+    (cond
+     ((featurep 'xemacs)
+      (define-key map [(button1)] 'chess-display-mouse-select-piece)
+      (define-key map [(button2)] 'chess-display-mouse-select-piece)
+      (define-key map [(button3)] 'ignore))
+     (t
+      (define-key map [down-mouse-1] 'chess-display-mouse-select-piece)
+      (define-key map [drag-mouse-1] 'chess-display-mouse-select-piece)
+
+      (define-key map [down-mouse-2] 'chess-display-mouse-select-piece)
+      (define-key map [drag-mouse-2] 'chess-display-mouse-select-piece)
+
+      (define-key map [mouse-3] 'ignore)))
+
+    (define-key map [menu-bar files] 'undefined)
+    (define-key map [menu-bar edit] 'undefined)
+    (define-key map [menu-bar options] 'undefined)
+    (define-key map [menu-bar buffer] 'undefined)
+    (define-key map [menu-bar tools] 'undefined)
+    (define-key map [menu-bar help-menu] 'undefined)
+
+    map)
+  "The mode map used in a chessboard display buffer.")
+
+(defvar chess-display-move-menu nil)
+(unless chess-display-move-menu
+  (easy-menu-define
+    chess-display-move-menu chess-display-mode-map ""
+    '("History"
+      ["First" chess-display-move-first t]
+      ["Previous" chess-display-move-backward t]
+      ["Next" chess-display-move-forward t]
+      ["Last" chess-display-move-last t])))
+
+(defun chess-display-mode ()
+  "A mode for displaying and interacting with a chessboard.
+The key bindings available in this mode are:
+\\{chess-display-mode-map}"
+  (interactive)
+  (setq major-mode 'chess-display-mode
+       mode-name "Chessboard")
+  (use-local-map chess-display-mode-map)
+  (buffer-disable-undo)
+  (setq buffer-auto-save-file-name nil
+       mode-line-format chess-display-mode-line-format)
+  (setq chess-input-position-function
+       (function
+        (lambda ()
+          (chess-display-position nil))))
+  (setq chess-input-move-function 'chess-display-move))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Commands used by the keyboard bindings above
+;;
+
+(defsubst chess-display-active-p ()
+  "Return non-nil if the displayed chessboard reflects an active game.
+Basically, it means we are playing, not editing or reviewing."
+  (and (chess-game-data chess-module-game 'active)
+       (= chess-display-index
+         (chess-game-index chess-module-game))
+       (not (chess-game-over-p chess-module-game))
+       (not chess-display-edit-mode)))
+
+(defun chess-display-invert ()
+  "Invert the perspective of the current chess board."
+  (interactive)
+  (chess-display-set-perspective nil (not chess-display-perspective)))
+
+(defun chess-display-set-from-fen (fen)
+  "Send the current board configuration to the user."
+  (interactive "sSet from FEN string: ")
+  (chess-display-set-position nil (chess-fen-to-pos fen)))
+
+(defun chess-display-kill-board (&optional arg)
+  "Send the current board configuration to the user."
+  (interactive "P")
+  (let ((x-select-enable-clipboard t)
+       (game chess-module-game))
+    (if arg
+       (kill-new (with-temp-buffer
+                   (chess-game-to-pgn game)
+                   (buffer-string)))
+      (kill-new (chess-pos-to-fen (chess-display-position nil) t)))))
+
+(defun chess-display-yank-board ()
+  "Send the current board configuration to the user."
+  (interactive)
+  (let ((x-select-enable-clipboard t)
+       (display (current-buffer))
+       (text (current-kill 0)))
+    (with-temp-buffer
+      (insert text)
+      (goto-char (point-max))
+      (while (and (bolp) (not (bobp)))
+       (delete-char -1))
+      (goto-char (point-min))
+      (cond
+       ((search-forward "[Event " nil t)
+       (goto-char (match-beginning 0))
+       (chess-game-copy-game chess-module-game (chess-pgn-to-game)))
+       ((looking-at (concat chess-algebraic-regexp "$"))
+       (let ((move (buffer-string)))
+         (with-current-buffer display
+           (chess-display-manual-move move))))
+       (t
+       (with-current-buffer display
+         (chess-display-set-from-fen (buffer-string))))))))
+
+(defvar chess-display-search-map
+  (let ((map (copy-keymap minibuffer-local-map)))
+    (dolist (key '(?a ?b ?c ?d ?e ?f ?g ?h
+                     ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8
+                     ?r ?n ?b ?q ?k
+                     ?R ?N ?B ?Q ?K
+                     ?o ?O ?x))
+      (define-key map (vector key) 'chess-display-search-key))
+    (define-key map [backspace] 'chess-display-search-delete)
+    (define-key map [delete] 'chess-display-search-delete)
+    (define-key map [(control ?h)] 'chess-display-search-delete)
+    (define-key map [(control ?r)] 'chess-display-search-again)
+    (define-key map [(control ?s)] 'chess-display-search-again)
+    map))
+
+(defvar chess-display-search-direction nil)
+(defvar chess-current-display nil)
+(defvar chess-display-previous-index nil)
+
+(make-variable-buffer-local 'chess-display-previous-index)
+
+(chess-message-catalog 'english
+  '((san-not-found . "Could not find a matching move")))
+
+(defun chess-display-search (&optional reset again)
+  (interactive)
+  (let ((str (concat "\\`" (minibuffer-contents)))
+       limit index)
+    (with-current-buffer chess-current-display
+      (setq index (if reset
+                     chess-display-previous-index
+                   chess-display-index))
+      (if again
+         (setq index (if chess-display-search-direction
+                         (1+ index)
+                       (- index 2))))
+      (catch 'found
+       (while (if chess-display-search-direction
+                  (< index (or limit
+                               (setq limit
+                                     (chess-game-index chess-module-game))))
+                (>= index 0))
+         (let* ((ply (chess-game-ply chess-module-game index))
+                (san (chess-ply-keyword ply :san))
+                (case-fold-search t))
+           (when (and san (string-match str san))
+             (chess-display-set-index nil (1+ index))
+             (throw 'found t)))
+         (setq index (funcall (if chess-display-search-direction '1+ '1-)
+                              index)))
+       (chess-error 'san-not-found)))))
+
+(defun chess-display-search-again ()
+  (interactive)
+  (chess-display-search nil t))
+
+(defun chess-display-search-key ()
+  (interactive)
+  (call-interactively 'self-insert-command)
+  (chess-display-search))
+
+(defun chess-display-search-delete ()
+  (interactive)
+  (call-interactively 'delete-backward-char)
+  (chess-display-search t))
+
+(defun chess-display-search-backward (&optional direction)
+  (interactive)
+  (setq chess-display-previous-index chess-display-index)
+  (condition-case err
+      (let ((chess-display-search-direction direction)
+           (chess-current-display (current-buffer)))
+       (read-from-minibuffer "Find algebraic move: " nil
+                             chess-display-search-map))
+    (quit
+     (chess-display-set-index nil chess-display-previous-index))))
+
+(defun chess-display-search-forward ()
+  (interactive)
+  (chess-display-search-backward t))
+
+(chess-message-catalog 'english
+  '((illegal-notation . "Illegal move notation: %s")
+    (want-to-quit     . "Do you really want to quit? ")))
+
+(defun chess-display-quit ()
+  "Quit the game associated with the current display."
+  (interactive)
+  (if (or (not (chess-module-leader-p nil))
+         (yes-or-no-p (chess-string 'want-to-quit)))
+      (chess-module-destroy nil)))
+
+(defun chess-display-annotate ()
+  (interactive)
+  (chess-game-run-hooks chess-module-game 'switch-to-annotations))
+
+(defun chess-display-chat ()
+  (interactive)
+  (chess-game-run-hooks chess-module-game 'switch-to-chat))
+
+(defun chess-display-manual-move (move)
+  "Move a piece manually, using chess notation."
+  (interactive
+   (list (read-string
+         (format "%s(%d): "
+                 (if (chess-pos-side-to-move (chess-display-position nil))
+                     "White" "Black")
+                 (1+ (/ (or chess-display-index 0) 2))))))
+  (let ((ply (let ((chess-ply-allow-interactive-query t))
+              (chess-algebraic-to-ply (chess-display-position nil) move))))
+    (unless ply
+      (chess-error 'illegal-notation move))
+    (chess-display-move nil ply)))
+
+(defun chess-display-remote (display)
+  (interactive "sDisplay this game on X server: ")
+  (require 'chess-images)
+  (let ((chess-images-separate-frame display))
+    (chess-display-clone (current-buffer) 'chess-images
+                        chess-display-perspective)))
+
+(defun chess-display-duplicate (style)
+  (interactive
+   (list (concat "chess-"
+                (read-from-minibuffer "Create new display using style: "))))
+  (chess-display-clone (current-buffer) (intern-soft style)
+                      chess-display-perspective))
+
+(defun chess-display-pass ()
+  "Pass the move to your opponent.  Only valid on the first move."
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'pass)
+    (ding)))
+
+(defun chess-display-shuffle ()
+  "Generate a shuffled opening position."
+  (interactive)
+  (require 'chess-random)
+  (if (and (chess-display-active-p)
+          (= 0 chess-display-index))
+      (chess-game-set-start-position chess-module-game
+                                    (chess-fischer-random-position))
+    (ding)))
+
+(defun chess-display-match ()
+  "Request a match with any listening engine."
+  (interactive)
+  (chess-game-run-hooks chess-module-game 'match))
+
+(defun chess-display-accept ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'accept)
+    (ding)))
+
+(defun chess-display-decline ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'decline)
+    (ding)))
+
+(defun chess-display-retract ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'retract)
+    (ding)))
+
+(defun chess-display-call-flag ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'call-flag)
+    (ding)))
+
+(defun chess-display-force ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'force)
+    (ding)))
+
+(defun chess-display-check-autosave ()
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'check-autosave)
+    (ding)))
+
+(defun chess-display-resign ()
+  "Resign the current game."
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-end chess-module-game :resign)
+    (ding)))
+
+(defun chess-display-abort ()
+  "Abort the current game."
+  (interactive)
+  (if (chess-display-active-p)
+      (chess-game-run-hooks chess-module-game 'abort)
+    (ding)))
+
+(chess-message-catalog 'english
+  '((draw-offer . "You offer a draw")))
+
+(defun chess-display-draw ()
+  "Offer to draw the current game."
+  (interactive)
+  (if (chess-display-active-p)
+      (progn
+       (chess-message 'draw-offer)
+       (chess-game-run-hooks chess-module-game 'draw))
+    (ding)))
+
+(defun chess-display-undo (count)
+  "Abort the current game."
+  (interactive "P")
+  (if (chess-display-active-p)
+      (progn
+       ;; we can't call `chess-game-undo' directly, because not all
+       ;; engines will accept it right away!  So we just signal the
+       ;; desire to undo
+       (setq count
+             (if count
+                 (prefix-numeric-value count)
+               (if (eq (chess-pos-side-to-move (chess-display-position nil))
+                       (chess-game-data chess-module-game 'my-color))
+                   2 1)))
+       (chess-game-run-hooks chess-module-game 'undo count))
+    (ding)))
+
+(defun chess-display-list-buffers ()
+  "List all buffers related to this display's current game."
+  (interactive)
+  (let ((buffer-list-func (symbol-function 'buffer-list)))
+    (unwind-protect
+       (let ((chess-game chess-module-game)
+             (lb-command (lookup-key ctl-x-map [(control ?b)]))
+             (ibuffer-maybe-show-regexps nil))
+         (fset 'buffer-list
+               (function
+                (lambda (&optional frame)
+                  (delq nil
+                        (mapcar (function
+                                 (lambda (cell)
+                                   (and (bufferp (cdr cell))
+                                        (buffer-live-p (cdr cell))
+                                        (cdr cell))))
+                                (chess-game-hooks chess-game))))))
+         (call-interactively lb-command))
+      (fset 'buffer-list buffer-list-func))))
+
+(chess-message-catalog 'english
+  '((return-to-current . "Use '>' to return to the current position")))
+
+(defun chess-display-set-current (dir)
+  "Change the currently displayed board.
+Direction may be - or +, to move forward or back, or t or nil to jump
+to the end or beginning."
+  (let ((index (cond ((eq dir ?-) (1- chess-display-index))
+                    ((eq dir ?+) (1+ chess-display-index))
+                    ((eq dir t) nil)
+                    ((eq dir nil) 0))))
+    (chess-display-set-index
+     nil (or index (chess-game-index chess-module-game)))
+    (unless (chess-display-active-p)
+      (chess-message 'return-to-current))))
+
+(defun chess-display-move-backward ()
+  (interactive)
+  (chess-display-set-current ?-))
+
+(defun chess-display-move-forward ()
+  (interactive)
+  (chess-display-set-current ?+))
+
+(defun chess-display-move-first ()
+  (interactive)
+  (chess-display-set-current nil))
+
+(defun chess-display-move-last ()
+  (interactive)
+  (chess-display-set-current t))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; chess-display-edit-mode (for editing the position directly)
+;;
+
+(defvar chess-display-edit-position nil)
+
+(make-variable-buffer-local 'chess-display-edit-position)
+
+(defvar chess-display-edit-mode-map
+  (let ((map (make-keymap)))
+    (suppress-keymap map)
+
+    (define-key map [(control ?l)] 'chess-display-redraw)
+    (define-key map [(control ?i)] 'chess-display-invert)
+    (define-key map [tab] 'chess-display-invert)
+
+    (define-key map [??] 'describe-mode)
+    (define-key map [?L] 'chess-display-list-buffers)
+    ;;(define-key map [?C] 'chess-display-duplicate)
+    (define-key map [?I] 'chess-display-invert)
+
+    (define-key map [?C] 'chess-display-clear-board)
+    (define-key map [?G] 'chess-display-restore-board)
+    (define-key map [?S] 'chess-display-send-board)
+    (define-key map [?X] 'chess-display-quit)
+
+    (let ((keys '(?  ?p ?r ?n ?b ?q ?k ?P ?R ?N ?B ?Q ?K)))
+      (while keys
+       (define-key map (vector (car keys)) 'chess-display-set-piece)
+       (setq keys (cdr keys))))
+
+    (cond
+     ((featurep 'xemacs)
+      (define-key map [(button1)] 'chess-display-mouse-select-piece)
+      (define-key map [(button2)] 'chess-display-mouse-set-piece)
+      (define-key map [(button3)] 'chess-display-mouse-set-piece))
+     (t
+      (define-key map [down-mouse-1] 'chess-display-mouse-select-piece)
+      (define-key map [drag-mouse-1] 'chess-display-mouse-select-piece)
+
+      (define-key map [mouse-2] 'chess-display-mouse-set-piece)
+      (define-key map [down-mouse-2] 'chess-display-mouse-set-piece)
+      (define-key map [mouse-3] 'chess-display-mouse-set-piece)
+      (define-key map [down-mouse-3] 'chess-display-mouse-set-piece)))
+
+    map)
+  "The mode map used for editing a chessboard position.")
+
+(chess-message-catalog 'english
+  '((editing-directly
+     . "Now editing position directly, use S when complete...")
+    (clear-chessboard-q . "Really clear the chessboard? ")))
+
+(defun chess-display-edit-board ()
+  "Setup the current board for editing."
+  (interactive)
+  (setq chess-display-edit-position
+       (chess-pos-copy (chess-display-position nil))
+       chess-display-edit-mode t
+       chess-display-side-to-move (chess-string 'mode-edit))
+  (force-mode-line-update)
+  (use-local-map chess-display-edit-mode-map)
+  (funcall chess-display-event-handler 'start-edit)
+  (chess-message 'editing-directly))
+
+(defun chess-display-end-edit-mode ()
+  (setq chess-display-edit-mode nil)
+  (funcall chess-display-event-handler 'end-edit)
+  (use-local-map chess-display-mode-map))
+
+(defun chess-display-send-board ()
+  "Send the current board configuration to the user."
+  (interactive)
+  (chess-display-end-edit-mode)
+  (chess-game-set-start-position chess-module-game
+                                chess-display-edit-position))
+
+(defun chess-display-restore-board ()
+  "Setup the current board for editing."
+  (interactive)
+  (chess-display-end-edit-mode)
+  ;; reset the modeline
+  (chess-display-set-index* nil chess-display-index)
+  (chess-display-update nil))
+
+(defun chess-display-clear-board ()
+  "Setup the current board for editing."
+  (interactive)
+  (when (y-or-n-p (chess-string 'clear-chessboard-q))
+    (let ((position (chess-display-position nil)))
+      (dotimes (rank 8)
+       (dotimes (file 8)
+         (chess-pos-set-piece position (cons rank file) ? ))))
+    (chess-display-update nil)))
+
+(defun chess-display-set-piece (&optional piece)
+  "Set the piece under point to command character, or space for clear."
+  (interactive)
+  (if (or (null piece) (characterp piece))
+      (let ((index (get-text-property (point) 'chess-coord)))
+       (chess-pos-set-piece chess-display-edit-position index
+                            (or piece last-command-event))
+       (funcall chess-display-event-handler 'draw-square
+                (point) (or piece last-command-event) index))))
+
+(unless (fboundp 'event-window)
+  (defalias 'event-point 'ignore))
+
+(defun chess-display-mouse-set-piece (event)
+  "Select the piece the user clicked on."
+  (interactive "e")
+  (if (fboundp 'event-window)          ; XEmacs
+      (progn
+       (set-buffer (window-buffer (event-window event)))
+       (and (event-point event) (goto-char (event-point event))))
+    (set-buffer (window-buffer (posn-window (event-start event))))
+    (goto-char (posn-point (event-start event))))
+  (let ((pieces (if (memq (car event) '(down-mouse-3 mouse-3))
+                   '("Set black piece"
+                     ("Pieces"
+                      ("Pawn"   . ?p)
+                      ("Knight" . ?n)
+                      ("Bishop" . ?b)
+                      ("Queen"  . ?q)
+                      ("King"   . ?k)))
+                 '("Set white piece"
+                   ("Pieces"
+                    ("Pawn"   . ?P)
+                    ("Knight" . ?N)
+                    ("Bishop" . ?B)
+                    ("Queen"  . ?Q)
+                    ("King"   . ?K))))))
+    (chess-display-set-piece (x-popup-menu t pieces))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Mousing around on the chess-display
+;;
+
+(defvar chess-display-last-selected nil)
+
+(make-variable-buffer-local 'chess-display-last-selected)
+
+(chess-message-catalog 'english
+  '((cannot-mount   . "You cannot move pieces on top of each other")
+    (move-not-legal . "That is not a legal move")
+    (not-your-move  . "It is not your turn to move")
+    (wrong-color    . "You cannot move your opponent's pieces")
+    (selected-empty . "You cannot select an empty square")
+    (piece-immobile . "That piece cannot move now")))
+
+(defun chess-display-select-piece ()
+  "Select the piece under the cursor.
+Clicking once on a piece selects it; then click on the target location."
+  (interactive)
+  (let ((coord (get-text-property (point) 'chess-coord))
+       (position (chess-display-position nil))
+       message)
+    (when coord
+      (setq message
+           (catch 'message
+             (if chess-display-last-selected
+                 (let ((last-sel chess-display-last-selected))
+                   ;; if they select the same square again, just deselect
+                   ;; it by redrawing the display and removing all
+                   ;; highlights
+                   (if (= (point) (car last-sel))
+                       (funcall chess-display-event-handler 'draw-square
+                                (car last-sel)
+                                (chess-pos-piece position (cdr last-sel))
+                                (cdr last-sel))
+                     (let ((s-piece (chess-pos-piece position (cdr last-sel)))
+                           (t-piece (chess-pos-piece position coord)) ply)
+                       (if chess-display-edit-mode
+                           (progn
+                             (chess-pos-set-piece position (cdr last-sel) ? )
+                             (chess-pos-set-piece position coord s-piece)
+                             (chess-display-update nil))
+                         (if (and (/= t-piece ? )
+                                  (or (and (< t-piece ?a)
+                                           (< s-piece ?a))
+                                      (and (> t-piece ?a)
+                                           (> s-piece ?a))))
+                             (throw 'message (chess-string 'cannot-mount)))
+                         (unless (setq ply (chess-ply-create position nil
+                                                             (cdr last-sel)
+                                                             coord))
+                           (throw 'message (chess-string 'move-not-legal)))
+                         (condition-case err
+                             (chess-display-move nil ply
+                                                 (car last-sel) (point))
+                           (error
+                            (throw 'message (error-message-string err)))))))
+                   (setq chess-display-last-selected nil))
+               (let ((piece (chess-pos-piece position coord)))
+                 (cond
+                  ((eq piece ? )
+                   (throw 'message (chess-string 'selected-empty)))
+                  ((not (or chess-display-edit-mode
+                            (not (chess-display-active-p))
+                            (eq (chess-pos-side-to-move position)
+                                (chess-game-data chess-module-game
+                                                 'my-color))))
+                   (throw 'message (chess-string 'not-your-move)))
+                  ((and (not chess-display-edit-mode)
+                        (if (chess-pos-side-to-move position)
+                            (> piece ?a)
+                          (< piece ?a)))
+                   (throw 'message (chess-string 'wrong-color)))
+                  ((and (not chess-display-edit-mode)
+                        chess-display-highlight-legal
+                        (null (chess-legal-plies position :any :index coord)))
+                   (throw 'message (chess-string 'piece-immobile))))
+                 (setq chess-display-last-selected (cons (point) coord))
+                 (chess-display-highlight nil coord)
+                 (if (and (not chess-display-edit-mode)
+                          chess-display-highlight-legal)
+                     (chess-display-highlight-legal nil coord))))))
+      (when message
+       (when chess-display-last-selected
+         (funcall chess-display-event-handler 'draw-square
+                  (car chess-display-last-selected)
+                  (chess-pos-piece position
+                                   (cdr chess-display-last-selected))
+                  (cdr chess-display-last-selected))
+         (setq chess-display-last-selected nil))
+       (message message)))))
+
+(defun chess-display-mouse-select-piece (event)
+  "Select the piece the user clicked on."
+  (interactive "e")
+  (if (fboundp 'event-window)          ; XEmacs
+      (progn
+       (set-buffer (window-buffer (event-window event)))
+       (and (event-point event) (goto-char (event-point event))))
+    (if (equal (event-start event) (event-end event))
+       (progn
+         (set-buffer (window-buffer (posn-window (event-start event))))
+         (goto-char (posn-point (event-start event))))
+      (goto-char (posn-point (event-end event)))))
+  (chess-display-select-piece))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Maintain a face cache for given color strings
+;;
+
+(defvar chess-display-face-cache '((t . t)))
+
+(defun chess-display-get-face (color)
+  (or (cdr (assoc color chess-display-face-cache))
+      (let ((face (make-face 'chess-display-highlight)))
+       (set-face-attribute face nil :background color)
+       (add-to-list 'chess-display-face-cache (cons color face))
+       face)))
+
+(provide 'chess-display)
+
+;;; chess-display.el ends here
diff --git a/packages/chess/chess-eco.el b/packages/chess/chess-eco.el
new file mode 100644
index 0000000..dc25aeb
--- /dev/null
+++ b/packages/chess/chess-eco.el
@@ -0,0 +1,142 @@
+;;; chess-eco.el --- Chess opening classification
+
+;; Copyright (C) 2004  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'chess-game)
+(require 'chess-ply)
+(require 'chess-pos)
+(require 'chess-fen)
+
+(defgroup chess-eco nil
+  "Chess opening classification module."
+  :group 'chess)
+
+(defcustom chess-eco-max-index 36
+  "*Index at which to stop chess opening announcements."
+  :group 'chess-eco
+  :type 'integer)
+
+(defvar chess-eco-hash-table
+  (when (file-exists-p 
+        (expand-file-name "chess-eco.fen"
+                          (file-name-directory load-file-name)))
+    (with-temp-buffer
+      (message "Emacs Chess: Loading ECO openings database...")
+      (insert-file-contents "chess-eco.fen")
+      (prog1
+         (let ((fen-data (read (current-buffer)))
+               (hash (make-hash-table :size 10541 :test 'equal)))
+           (mapc (lambda (entry)
+                   (puthash (car entry) (cdr entry) hash))
+                 fen-data)
+           hash)
+       (message "Emacs Chess: Loading ECO openings database...done"))))
+  "List of well known chess opening positions.")
+
+(defun chess-generate-fen-table ()
+  "Generate chess-eco.fen from the ply lists in chess-eco.pos."
+  (require 'chess-pos)
+  (require 'chess-ply)
+  (require 'chess-fen)
+  (require 'chess-algebraic)
+  (with-temp-buffer
+    (insert-file-contents (car command-line-args-left))
+    (let ((fen-buffer (get-buffer-create "chess-eco.fen"))
+         (pos-data (read (current-buffer))))
+      (with-current-buffer fen-buffer
+       (print (mapcar
+               (lambda (entry)
+                 (message "Preparing opening %s (%s)"
+                          (car entry) (cadr entry))
+                 (let ((pos (chess-pos-create)))
+                   (mapc (lambda (move)
+                           (apply 'chess-pos-move
+                                  pos (chess-ply-changes
+                                       (chess-algebraic-to-ply pos move))))
+                         (split-string (car (cddr entry)) " " t))
+                   (list (chess-pos-to-fen pos) (cadr entry) (car entry))))
+               pos-data)
+              (current-buffer))
+       (write-file (cadr command-line-args-left))))))
+
+(defvar chess-eco-last-opening nil)
+(make-variable-buffer-local 'chess-eco-last-opening)
+
+(defun chess-eco-classify (game)
+  (when chess-eco-hash-table
+    (let ((plies (chess-game-plies game))
+         found)
+      (while plies
+       (let* ((fen (chess-pos-to-fen (chess-ply-pos (car plies))))
+              (entry (gethash fen chess-eco-hash-table)))
+         (if entry
+             (setq found entry))
+         (setq plies (cdr plies))))
+      found)))
+
+(chess-message-catalog 'english
+  '((announce-opening . "%s (ECO code %s)")))
+
+(defun chess-eco-handler (game event &rest args)
+  "Handle for the `chess-eco' module.
+If you add `chess-eco' to `chess-default-modules', this handler will
+try to figure out if the current position of a game does match a
+well known chess opening position."
+  (cond
+   ((eq event 'initialize))
+
+   ((eq event 'post-move)
+    (when (= (chess-game-index game) 1)
+      (setq chess-eco-last-opening nil))
+    (when (< (chess-game-index game) chess-eco-max-index)
+      (let ((info (chess-eco-classify game)))
+       (when (and info (not (eq info chess-eco-last-opening)))
+         (setq chess-eco-last-opening info)
+         (chess-message 'announce-opening (car info) (cadr info))))))))
+
+(defun chess-eco-parse-scid-eco ()
+  (let ((result (list t)))
+    (while (re-search-forward
+           "\\([A-E][0-9][0-9]\\([a-z][0-9]?\\)?\\) \"\\([^\"]+\\)\"[\n 
]+\\([^*]*\\|\n\\) +\\*"
+           nil t)
+      (nconc
+       result
+       (list
+       (list (match-string 1)
+             (match-string 3)
+             (mapconcat (lambda (move)
+                          (if (string-match
+                               (concat
+                                "\\(" chess-algebraic-regexp "\\)")
+                                    move)
+                                   (match-string 1 move)
+                                 move))
+                             (split-string (match-string 4) "[\n ]+") " ")))))
+    (cdr result)))
+
+(provide 'chess-eco)
+
+;;; chess-ecos.el ends here
diff --git a/packages/chess/chess-eco.fen b/packages/chess/chess-eco.fen
new file mode 100644
index 0000000..6c80edf
--- /dev/null
+++ b/packages/chess/chess-eco.fen
@@ -0,0 +1,2 @@
+
+(("rnbqkbnr/pppppppp/////PPPPPPPP/RNBQKBNR w KQkq -" "Start position" "A00a") 
("rnbqkbnr/pppppppp////5P/PPPPP1PP/RNBQKBNR b KQkq -" "Barnes Opening" "A00b") 
("rnbqkbnr/pppp1ppp//4p//5P/PPPPPKPP/RNBQ1BNR b kq -" "Fried fox" "A00b") 
("rnbqkbnr/pppppppp///7P//PPPPPPP/RNBQKBNR b KQkq -" "Kadas Opening" "A00c") 
("rnbqkbnr/pppppppp////7P/PPPPPPP/RNBQKBNR b KQkq -" "Clemenz Opening" "A00d") 
("rnbqkbnr/pppppppp///P//1PPPPPPP/RNBQKBNR b KQkq -" "Ware Opening" "A00e") 
("rnbqkbnr/pppppppp////P/1PPP [...]
diff --git a/packages/chess/chess-eco.pos b/packages/chess/chess-eco.pos
new file mode 100644
index 0000000..697fa36
--- /dev/null
+++ b/packages/chess/chess-eco.pos
@@ -0,0 +1,10565 @@
+;;; chess-eco.pos --- Chess opening classification
+
+;; Copyright (C) 2008  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Data:
+
+(("A00a" "Start position" "")
+ ("A00b" "Barnes Opening" "f3")
+ ("A00b" "Fried fox" "f3 e5 Kf2")
+ ("A00c" "Kadas Opening" "h4")
+ ("A00d" "Clemenz Opening" "h3")
+ ("A00e" "Ware Opening" "a4")
+ ("A00f" "Anderssen Opening" "a3")
+ ("A00f" "Creepy Crawly Opening (Basman)" "a3 e5 h3 d5")
+ ("A00g" "Amar/Paris Opening" "Nh3")
+ ("A00g" "Amar: Paris Gambit" "Nh3 d5 g3 e5 f4")
+ ("A00h" "Durkin" "Na3")
+ ("A00i" "Saragossa" "c3")
+ ("A00j" "Mieses" "d3")
+ ("A00j" "Mieses: 1...e5" "d3 e5")
+ ("A00j" "Mieses: 1...d5" "d3 d5")
+ ("A00j" "Spike Deferred" "d3 g6 g4")
+ ("A00k" "Van Kruijs" "e3")
+ ("A00l" "Van Geet (Dunst) Opening" "Nc3")
+ ("A00l" "Van Geet: 1...Nf6" "Nc3 Nf6")
+ ("A00l" "Van Geet: 1...Nf6 2.Nf3" "Nc3 Nf6 Nf3")
+ ("A00l" "Van Geet: Tübingen Gambit" "Nc3 Nf6 g4")
+ ("A00l" "Van Geet: 1...e5" "Nc3 e5")
+ ("A00l" "Van Geet: 1...e5 2.Nf3" "Nc3 e5 Nf3")
+ ("A00l" "Van Geet: Sicilian Variation" "Nc3 c5")
+ ("A00l" "Van Geet: Sicilian Variation, 2.Nf3" "Nc3 c5 Nf3")
+ ("A00l" "Van Geet: Sicilian Variation, 2.Nf3 Nc6" "Nc3 c5 Nf3 Nc6")
+ ("A00m" "Van Geet: 1...d5" "Nc3 d5")
+ ("A00m" "Van Geet: 1...d5 2.Nf3" "Nc3 d5 Nf3")
+ ("A00m" "Van Geet: 1...d5 2.Nf3 Nf6" "Nc3 d5 Nf3 Nf6")
+ ("A00m" "Van Geet: 1...d5 2.e4" "Nc3 d5 e4")
+ ("A00m" "Van Geet: 1...d5 2.e4 d4" "Nc3 d5 e4 d4")
+ ("A00m" "Van Geet: 1...d5 2.e4 dxe4" "Nc3 d5 e4 dxe4")
+ ("A00m" "Van Geet: Hector Gambit" "Nc3 d5 e4 dxe4 Bc4")
+ ("A00n" "Grob" "g4")
+ ("A00n" "Grob: Alessi Gambit" "g4 f5")
+ ("A00n" "Grob: Double Grob" "g4 g5")
+ ("A00n" "Grob: 1...e5" "g4 e5")
+ ("A00o" "Grob: 1...d5" "g4 d5")
+ ("A00o" "Grob Gambit" "g4 d5 Bg2")
+ ("A00o" "Grob Gambit: e5" "g4 d5 Bg2 e5")
+ ("A00o" "Grob Gambit: Hurst Attack" "g4 d5 Bg2 e5 c4")
+ ("A00o" "Grob Gambit: 2...c6" "g4 d5 Bg2 c6")
+ ("A00o" "Grob Gambit: Spike Attack" "g4 d5 Bg2 c6 g5")
+ ("A00o" "Grob Gambit Accepted" "g4 d5 Bg2 Bxg4")
+ ("A00o" "Grob Gambit Accepted: Fritz Gambit" "g4 d5 Bg2 Bxg4 c4")
+ ("A00p" "Polish (Sokolsky; Orang-Utan)" "b4")
+ ("A00p" "Polish: Birmingham Gambit" "b4 c5")
+ ("A00p" "Polish: 1...Nf6" "b4 Nf6")
+ ("A00p" "Polish: 1...Nf6 2.Bb2" "b4 Nf6 Bb2")
+ ("A00p" "Polish: 1...Nf6 2.Bb2 e6" "b4 Nf6 Bb2 e6")
+ ("A00p" "Polish: 1...c6" "b4 c6")
+ ("A00p" "Polish: Schühler Gambit" "b4 c6 Bb2 a5 b5")
+ ("A00q" "Polish: 1...d5" "b4 d5")
+ ("A00q" "Polish: 1...d5 2.Bb2" "b4 d5 Bb2")
+ ("A00q" "Polish: 1...d5 2.Bb2 Bf5" "b4 d5 Bb2 Bf5")
+ ("A00q" "Polish: 1...d5 2.Bb2 Nf6" "b4 d5 Bb2 Nf6")
+ ("A00q" "Polish: 1...d5 2.Bb2 Nf6 3.e3" "b4 d5 Bb2 Nf6 e3")
+ ("A00r" "Polish: 1...e5" "b4 e5")
+ ("A00r" "Polish: Bugayev Attack" "b4 e5 a3")
+ ("A00r" "Polish: 1...e5 2.Bb2" "b4 e5 Bb2")
+ ("A00r" "Polish: Wolfertz Gambit" "b4 e5 Bb2 c5")
+ ("A00r" "Polish: 1...e5 2.Bb2 f6" "b4 e5 Bb2 f6")
+ ("A00r" "Polish: Tartakower Gambit" "b4 e5 Bb2 f6 e4 Bxb4")
+ ("A00r" "Polish: 1...e5 2.Bb2 d6" "b4 e5 Bb2 d6")
+ ("A00s" "Polish: 2...Bxb4" "b4 e5 Bb2 Bxb4")
+ ("A00s" "Polish: 2...Bxb4 3.Bxe5" "b4 e5 Bb2 Bxb4 Bxe5")
+ ("A00s" "Polish: 2...Bxb4 3.Bxe5 Nf6" "b4 e5 Bb2 Bxb4 Bxe5 Nf6")
+ ("A00s" "Polish: 2...Bxb4 3.Bxe5 Nf6 4.c4" "b4 e5 Bb2 Bxb4 Bxe5 Nf6 c4")
+ ("A00s" "Polish: 2...Bxb4 3.Bxe5 Nf6 4.Nf3" "b4 e5 Bb2 Bxb4 Bxe5 Nf6 Nf3")
+ ("A00t" "Benko Opening" "g3")
+ ("A00t" "Benko Opening" "g3 Nf6")
+ ("A00t" "Benko Opening: Symmetrical" "g3 g6")
+ ("A00u" "Benko Opening" "g3 e5")
+ ("A00v" "Benko Opening" "g3 d5")
+ ("A00v" "Benko Opening" "g3 d5 Bg2")
+ ("A00v" "Benko Opening" "g3 d5 Bg2 c6")
+ ("A00v" "Benko Opening" "g3 d5 Bg2 e5")
+ ("A00v" "Benko Opening" "g3 d5 Bg2 Nf6")
+ ("A01" "Nimzowitsch-Larsen Attack" "b3")
+ ("A01" "Nimzowitsch-Larsen: Polish Variation" "b3 b5")
+ ("A01" "Nimzowitsch-Larsen: Symmetrical" "b3 b6")
+ ("A01" "Nimzowitsch-Larsen: Dutch Variation" "b3 f5")
+ ("A01" "Nimzowitsch-Larsen: Ringelbach Gambit" "b3 f5 Bb2 e6 e4")
+ ("A01" "Nimzowitsch-Larsen: English Variation" "b3 c5")
+ ("A01" "Nimzowitsch-Larsen: Indian Variation" "b3 Nf6")
+ ("A01" "Nimzowitsch-Larsen: Indian Variation" "b3 Nf6 Bb2 g6")
+ ("A01" "Nimzowitsch-Larsen: Spike Variation" "b3 Nf6 Bb2 g6 g4")
+ ("A01" "Nimzowitsch-Larsen: 1...d5" "b3 d5")
+ ("A01" "Nimzowitsch-Larsen: 1...d5 2.Bb2" "b3 d5 Bb2")
+ ("A01" "Nimzowitsch-Larsen: 1...e5" "b3 e5")
+ ("A01" "Nimzowitsch-Larsen: 1...e5 2.Bb2" "b3 e5 Bb2")
+ ("A01" "Nimzowitsch-Larsen: 1...e5 2.Bb2 d6" "b3 e5 Bb2 d6")
+ ("A01" "Nimzowitsch-Larsen: 1...e5 2.Bb2 Nc6" "b3 e5 Bb2 Nc6")
+ ("A01" "Nimzowitsch-Larsen: Paschmann Gambit" "b3 e5 Bb2 Nc6 f4")
+ ("A01" "Nimzowitsch-Larsen: 1...e5 2.Bb2 Nc6 3.e3" "b3 e5 Bb2 Nc6 e3")
+ ("A02" "Bird" "f4")
+ ("A02" "Bird: Hobbs Gambit" "f4 g5")
+ ("A02" "Bird: Symmetrical" "f4 f5")
+ ("A02" "Bird: Swiss Gambit" "f4 f5 e4")
+ ("A02" "Bird: Swiss Gambit" "f4 f5 e4 fxe4 Nc3 Nf6 g4")
+ ("A02" "Bird: 1..d6" "f4 d6")
+ ("A02" "Bird: 1..g6" "f4 g6")
+ ("A02" "Bird: 1..g6" "f4 g6 Nf3 Bg7 e3")
+ ("A02" "Bird: 1..g6" "f4 g6 Nf3 Bg7 g3")
+ ("A02" "Bird: 1..c5" "f4 c5")
+ ("A02" "Bird: 1..c5 2.Nf3 Nc6" "f4 c5 Nf3 Nc6")
+ ("A02" "Bird: From Gambit" "f4 e5")
+ ("A02" "Bird: From Gambit Accepted" "f4 e5 fxe5")
+ ("A02" "Bird: From Gambit, Schlecter" "f4 e5 fxe5 Nc6")
+ ("A02" "Bird: From Gambit, 2...d6" "f4 e5 fxe5 d6")
+ ("A02" "Bird: From Gambit, 3.exd6" "f4 e5 fxe5 d6 exd6")
+ ("A02" "Bird: From Gambit, Langheld Gambit" "f4 e5 fxe5 d6 exd6 Nf6")
+ ("A02" "Bird: From Gambit, 3...Bxd6" "f4 e5 fxe5 d6 exd6 Bxd6")
+ ("A02" "Bird: From Gambit, Lipke" "f4 e5 fxe5 d6 exd6 Bxd6 Nf3 Nh6 d4")
+ ("A02" "Bird: From Gambit, Lasker Variation"
+  "f4 e5 fxe5 d6 exd6 Bxd6 Nf3 g5")
+ ("A02" "Bird: From Gambit, Lasker, 5.d4" "f4 e5 fxe5 d6 exd6 Bxd6 Nf3 g5 d4")
+ ("A02" "Bird: From Gambit, Lasker, Queenswap Line"
+  "f4 e5 fxe5 d6 exd6 Bxd6 Nf3 g5 d4 g4 Ne5 Bxe5 dxe5 Qxd1+")
+ ("A02" "Bird: From Gambit, Lasker, 5.g3" "f4 e5 fxe5 d6 exd6 Bxd6 Nf3 g5 g3")
+ ("A02" "Bird: 1..Nf6" "f4 Nf6")
+ ("A02" "Bird: 1..Nf6 2.g3" "f4 Nf6 g3")
+ ("A02" "Bird: 1..Nf6 2.e3" "f4 Nf6 e3")
+ ("A02" "Bird: 1..Nf6 2.b3" "f4 Nf6 b3")
+ ("A02" "Bird: 1..Nf6 2.Nf3" "f4 Nf6 Nf3")
+ ("A02" "Bird: 1..Nf6 2.Nf3 d6" "f4 Nf6 Nf3 d6")
+ ("A02" "Bird: 1..Nf6 2.Nf3 c5" "f4 Nf6 Nf3 c5")
+ ("A02" "Bird: 1..Nf6 2.Nf3 g6" "f4 Nf6 Nf3 g6")
+ ("A02" "Bird: Batavo Polish Attack" "f4 Nf6 Nf3 g6 b4")
+ ("A02" "Bird: 1..Nf6 2.Nf3 g6 3.g3" "f4 Nf6 Nf3 g6 g3")
+ ("A02" "Bird: 1..Nf6 2.Nf3 g6 3.g3" "f4 Nf6 Nf3 g6 g3 Bg7 Bg2")
+ ("A02" "Bird: 1..Nf6 2.Nf3 g6 3.g3" "f4 Nf6 Nf3 g6 g3 Bg7 Bg2 d6")
+ ("A03" "Bird: 1...d5" "f4 d5")
+ ("A03" "Bird: Dudweiler Gambit" "f4 d5 g4")
+ ("A03" "Bird: Sturm Gambit" "f4 d5 c4")
+ ("A03" "Bird: Williams Gambit" "f4 d5 e4")
+ ("A03" "Bird: 1...d5 2.b3" "f4 d5 b3")
+ ("A03" "Bird: 1...d5 2.b3" "f4 d5 b3 Nf6")
+ ("A03" "Bird: 1...d5 2.b3" "f4 d5 b3 Nf6 Bb2")
+ ("A03" "Bird: 1...d5 2.g3" "f4 d5 g3")
+ ("A03" "Bird: 1...d5 2.g3" "f4 d5 g3 Nf6")
+ ("A03" "Bird: 1...d5 2.g3" "f4 d5 g3 Nf6 Bg2")
+ ("A03" "Bird: Lasker Variation" "f4 d5 e3")
+ ("A03" "Bird: Lasker Variation" "f4 d5 e3 Nf6")
+ ("A03" "Bird: 1...d5 2.Nf3" "f4 d5 Nf3")
+ ("A03" "Bird: 1...d5 2.Nf3 c5" "f4 d5 Nf3 c5")
+ ("A03" "Bird: Batavo Gambit" "f4 d5 Nf3 c5 e4")
+ ("A03" "Bird: 1...d5 2.Nf3 c5 3.e3" "f4 d5 Nf3 c5 e3")
+ ("A03" "Bird: 1...d5 2.Nf3 g6" "f4 d5 Nf3 g6")
+ ("A03" "Bird: 1...d5 2.Nf3 g6 3.e3" "f4 d5 Nf3 g6 e3")
+ ("A03" "Bird: 1...d5 2.Nf3 g6 3.g3" "f4 d5 Nf3 g6 g3")
+ ("A03" "Bird: 1...d5 2.Nf3 g6 3.g3" "f4 d5 Nf3 g6 g3 Bg7 Bg2")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6" "f4 d5 Nf3 Nf6")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.b3" "f4 d5 Nf3 Nf6 b3")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3" "f4 d5 Nf3 Nf6 g3")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6" "f4 d5 Nf3 Nf6 g3 g6")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6" "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 5.d3"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 d3")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 5.O-O"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 5.O-O O-O"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 5.O-O O-O 6.d3"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 6.d3 c6"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3 c6")
+ ("A03" "Bird: 1...d5 2.Nf3 Nf6 3.g3 g6: 6.d3 c5"
+  "f4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3 c5")
+ ("A03" "Bird: Lasker Variation" "f4 d5 Nf3 Nf6 e3")
+ ("A03" "Bird: Lasker, 3...Bg4" "f4 d5 Nf3 Nf6 e3 Bg4")
+ ("A03" "Bird: Lasker, 3...e6" "f4 d5 Nf3 Nf6 e3 e6")
+ ("A03" "Bird: Lasker, 3...c5" "f4 d5 Nf3 Nf6 e3 c5")
+ ("A03" "Bird: Lasker, 3...c5 4.b3" "f4 d5 Nf3 Nf6 e3 c5 b3")
+ ("A03" "Bird: Lasker, 3...g6" "f4 d5 Nf3 Nf6 e3 g6")
+ ("A04" "Reti" "Nf3")
+ ("A04" "Reti: Herrström Gambit" "Nf3 g5")
+ ("A04" "Reti: 1...b6" "Nf3 b6")
+ ("A04" "Reti: 1...b5" "Nf3 b5")
+ ("A04" "Reti: 1...Nc6" "Nf3 Nc6")
+ ("A04" "Reti: 1...e6" "Nf3 e6")
+ ("A04" "Reti: 1...e6" "Nf3 e6 g3")
+ ("A04" "Reti: 1...g6" "Nf3 g6")
+ ("A04" "Reti: 1...g6" "Nf3 g6 g3")
+ ("A04" "Reti: 1...g6" "Nf3 g6 g3 Bg7")
+ ("A04" "Reti: 1...g6" "Nf3 g6 g3 Bg7 Bg2")
+ ("A04" "Reti: 1...f5" "Nf3 f5")
+ ("A04" "Reti: 1...f5 2.d3" "Nf3 f5 d3")
+ ("A04" "Reti: 1...f5 2.d3 Nf6" "Nf3 f5 d3 Nf6")
+ ("A04" "Reti: Lisitsin Deferred" "Nf3 f5 d3 Nf6 e4")
+ ("A04" "Reti: 1...f5 2.g3" "Nf3 f5 g3")
+ ("A04" "Reti: Lisitsin" "Nf3 f5 e4")
+ ("A04" "Reti: Lisitsin: 3.Ng5 Nf6" "Nf3 f5 e4 fxe4 Ng5 Nf6")
+ ("A04" "Reti: Lisitsin: 3.Ng5 Nf6" "Nf3 f5 e4 fxe4 Ng5 Nf6 d3 e5")
+ ("A04" "Reti: Lisitsin: 3.Ng5 Nf6" "Nf3 f5 e4 fxe4 Ng5 Nf6 d3 e3")
+ ("A04" "Reti: Lisitsin: 3.Ng5 e5" "Nf3 f5 e4 fxe4 Ng5 e5")
+ ("A04" "Reti: Lisitsin: 3.Ng5 d5" "Nf3 f5 e4 fxe4 Ng5 d5")
+ ("A04" "Reti: 1...d6" "Nf3 d6")
+ ("A04" "Reti: 1...c5" "Nf3 c5")
+ ("A04" "Reti: 1...c5, Nimzowitsch-Larsen" "Nf3 c5 b3")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 b6")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 b6 Bg2 Bb7")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 Nf6 e4")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 Nf6")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 d6 e4")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 g6 Bg2 Bg7 O-O Nc6 d3 e6 e4")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 Nc6")
+ ("A04" "Reti: 1...c5" "Nf3 c5 g3 Nc6 Bg2")
+ ("A05" "Reti: 1...Nf6" "Nf3 Nf6")
+ ("A05" "Reti: 1...Nf6 2.b3" "Nf3 Nf6 b3")
+ ("A05" "Reti: Santasiere's folly" "Nf3 Nf6 b4")
+ ("A05" "Reti: 1...Nf6 2.e3" "Nf3 Nf6 e3")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 c5")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 c5 Bg2")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 c5 Bg2 Nc6")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 b6")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 b6 Bg2")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 b6 Bg2 Bb7")
+ ("A05" "Reti: KIA, Spassky" "Nf3 Nf6 g3 b5")
+ ("A05" "Reti: KIA, Spassky" "Nf3 Nf6 g3 b5 Bg2")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6")
+ ("A05" "Reti: KIA, Reti-Smyslov Variation" "Nf3 Nf6 g3 g6 b4")
+ ("A05" "Reti: KIA, Reti-Smyslov Variation" "Nf3 Nf6 g3 g6 b4 Bg7 Bb2")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7 O-O")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3 c5")
+ ("A05" "Reti: KIA" "Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O d3 d6")
+ ("A06" "Reti: 1...d5" "Nf3 d5")
+ ("A06" "Reti: Ampel Variation" "Nf3 d5 Rg1")
+ ("A06" "Reti: Old Indian Attack" "Nf3 d5 d3")
+ ("A06" "Reti: Old Indian Attack" "Nf3 d5 d3 Nf6")
+ ("A06" "Reti: 1...d5 2.e3" "Nf3 d5 e3")
+ ("A06" "Reti: Santasiere's folly" "Nf3 d5 b4")
+ ("A06" "Reti: Santasiere's folly" "Nf3 d5 b4 Nf6")
+ ("A06" "Reti: Tennison/Zukertort Gambit" "Nf3 d5 e4")
+ ("A06" "Reti: Tennison Gambit Accepted" "Nf3 d5 e4 dxe4")
+ ("A06" "Reti: Nimzowitsch-Larsen" "Nf3 d5 b3")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...c5" "Nf3 d5 b3 c5")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Bg4" "Nf3 d5 b3 Bg4")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Bg4" "Nf3 d5 b3 Bg4 Bb2")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Bg4" "Nf3 d5 b3 Bg4 Bb2 Nd7 e3")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Nf6" "Nf3 d5 b3 Nf6")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Nf6" "Nf3 d5 b3 Nf6 Bb2")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Nf6" "Nf3 d5 b3 Nf6 Bb2 e6")
+ ("A06" "Reti: Nimzowitsch-Larsen, 2...Nf6" "Nf3 d5 b3 Nf6 Bb2 e6 e3")
+ ("A07" "Reti: KIA" "Nf3 d5 g3")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nc6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nc6 Bg2 e5")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nc6 Bg2 e5 d3 Nf6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nc6 Bg2 e5 d3 Nf6 O-O")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nc6 Bg2 e5 d3 Nf6 O-O Be7")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 c6")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 c6 Bg2 Bg4")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 c6 Bg2 Bg4 O-O")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 c6 Bg2 Bg4 O-O Nd7")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 c6 Bg2 Bg4 O-O Nd7 d3")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4")
+ ("A07" "Reti: KIA, Yugoslav" "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4 d3")
+ ("A07" "Reti: KIA, Yugoslav, Main Line"
+  "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4 d3 Nbd7")
+ ("A07" "Reti: KIA, Yugoslav, Main Line, 6.Nbd2"
+  "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4 d3 Nbd7 Nbd2")
+ ("A07" "Reti: KIA, Yugoslav, Main Line, 6.Nbd2 e6"
+  "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4 d3 Nbd7 Nbd2 e6")
+ ("A07" "Reti: KIA, Yugoslav, Main Line, 6.Nbd2 e5"
+  "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bg4 d3 Nbd7 Nbd2 e5")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Bg4")
+ ("A07" "Reti: KIA, Keres Variation" "Nf3 d5 g3 Bg4 Bg2 Nd7")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nf6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nf6 Bg2")
+ ("A07" "Reti: KIA, Neo-Grünfeld" "Nf3 d5 g3 Nf6 Bg2 g6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nf6 Bg2 Bf5")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nf6 Bg2 e6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 Nf6 Bg2 c6")
+ ("A07" "Reti: KIA, Petrosian Variation"
+  "Nf3 d5 g3 Nf6 Bg2 c6 O-O Bf5 d3 e6 Nbd2")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 g6")
+ ("A07" "Reti: KIA" "Nf3 d5 g3 g6 Bg2")
+ ("A07" "Reti: KIA, Pachman" "Nf3 d5 g3 g6 Bg2 Bg7 O-O e5 d3 Ne7")
+ ("A08" "Reti: KIA, 2...c5" "Nf3 d5 g3 c5")
+ ("A08" "Reti: KIA, 2...c5" "Nf3 d5 g3 c5 Bg2")
+ ("A08" "Reti: KIA, 2...c5 + 3...g6" "Nf3 d5 g3 c5 Bg2 g6 O-O Bg7")
+ ("A08" "Reti: KIA, 2...c5 + 3...g6" "Nf3 d5 g3 c5 Bg2 g6 O-O Bg7 d3")
+ ("A08" "Reti: KIA, 2...c5 + 3...g6" "Nf3 d5 g3 c5 Bg2 g6 O-O Bg7 d3 Nf6")
+ ("A08" "Reti: KIA, 2...c5 + 3...g6"
+  "Nf3 d5 g3 c5 Bg2 g6 O-O Bg7 d3 Nf6 Nbd2 O-O")
+ ("A08" "Reti: KIA, 2...c5 + 3...g6"
+  "Nf3 d5 g3 c5 Bg2 g6 O-O Nc6 d3 Nf6")
+ ("A08" "Reti: KIA, 2...c5  3.Bg2 Nc6" "Nf3 d5 g3 c5 Bg2 Nc6")
+ ("A08" "Reti: KIA, 2...c5, 3.Bg2 Nc6 4.O-O" "Nf3 d5 g3 c5 Bg2 Nc6 O-O")
+ ("A08" "Reti: KIA, 2...c5, 3.Bg2 Nc6 4.d4" "Nf3 d5 g3 c5 Bg2 Nc6 d4")
+ ("A08" "Reti: KIA, 2...c5 3.Bg2 Nf6" "Nf3 d5 g3 c5 Bg2 Nf6")
+ ("A08" "Reti: KIA, 2...c5 3.Bg2 Nf6 4.O-O" "Nf3 d5 g3 c5 Bg2 Nf6 O-O")
+ ("A08" "Reti: KIA, 2...c5 3.Bg2 Nf6 4.O-O Nc6"
+  "Nf3 d5 g3 c5 Bg2 Nf6 O-O Nc6")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nge7 Nbd2 b6 e4")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nf6 Nbd2 b6 e4")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nge7 Nbd2 g6 e4 Bg7")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nf6 Nbd2 g6 e4 Bg7")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nf6 Nbd2 Be7 e4")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Nf6 Nbd2 Be7 e4 O-O Re1")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Bd6 Nbd2 Nge7 e4")
+ ("A08" "Reti: KIA, French Variation"
+  "Nf3 d5 g3 c5 Bg2 Nc6 O-O e6 d3 Bd6 Nbd2 Nge7 e4 O-O Re1")
+ ("A09a" "Reti: 2.c4" "Nf3 d5 c4")
+ ("A09b" "Reti: Advance Variation" "Nf3 d5 c4 d4")
+ ("A09c" "Reti: Advance, Anglo-Polish Attack" "Nf3 d5 c4 d4 b4")
+ ("A09c" "Reti: Advance, Anglo-Polish, 3...g6" "Nf3 d5 c4 d4 b4 g6")
+ ("A09d" "Reti: Advance, 3.e3" "Nf3 d5 c4 d4 e3")
+ ("A09e" "Reti: Advance, 3.e3 c5" "Nf3 d5 c4 d4 e3 c5")
+ ("A09f" "Reti: Advance, 3.e3 Nc6" "Nf3 d5 c4 d4 e3 Nc6")
+ ("A09f" "Reti: Advance, 3.e3 Nc6 4.exd4 Nxd4"
+  "Nf3 d5 c4 d4 e3 Nc6 exd4 Nxd4")
+ ("A09g" "Reti: Advance, 3.g3" "Nf3 d5 c4 d4 g3")
+ ("A09h" "Reti: Advance, 3.g3 Nc6" "Nf3 d5 c4 d4 g3 Nc6")
+ ("A09h" "Reti: Advance, 3.g3 Nc6 4.Bg2 e5" "Nf3 d5 c4 d4 g3 Nc6 Bg2 e5")
+ ("A09i" "Reti: Advance, 3.g3 g6" "Nf3 d5 c4 d4 g3 g6")
+ ("A09i" "Reti: Advance, 3.g3 g6 4.Bg2 Bg7" "Nf3 d5 c4 d4 g3 g6 Bg2 Bg7")
+ ("A09j" "Reti: Advance, 3.g3 c5" "Nf3 d5 c4 d4 g3 c5")
+ ("A09j" "Reti: Advance, 3.g3 c5 4.Bg2 Nc6" "Nf3 d5 c4 d4 g3 c5 Bg2 Nc6")
+ ("A09j" "Reti: Advance, 3.g3 c5 4.Bg2 Nc6 5.d3 e5"
+  "Nf3 d5 c4 d4 g3 c5 Bg2 Nc6 d3 e5")
+ ("A09k" "Reti: Accepted" "Nf3 d5 c4 dxc4")
+ ("A09l" "Reti: Accepted, 3.g3" "Nf3 d5 c4 dxc4 g3")
+ ("A09m" "Reti: Accepted, 3.g3 e6" "Nf3 d5 c4 dxc4 g3 e6")
+ ("A09n" "Reti: Accepted, 3.Qa4+" "Nf3 d5 c4 dxc4 Qa4+")
+ ("A09o" "Reti: Accepted, 3.Na3" "Nf3 d5 c4 dxc4 Na3")
+ ("A09p" "Reti: Accepted, 3.Na3 a6" "Nf3 d5 c4 dxc4 Na3 a6")
+ ("A09q" "Reti: Accepted, 3.Na3 c5" "Nf3 d5 c4 dxc4 Na3 c5")
+ ("A09r" "Reti: Accepted, 3.e3" "Nf3 d5 c4 dxc4 e3")
+ ("A09s" "Reti: Accepted, Keres Variation" "Nf3 d5 c4 dxc4 e3 Be6")
+ ("A09t" "Reti: Accepted, 3.e3 Nf6" "Nf3 d5 c4 dxc4 e3 Nf6")
+ ("A09u" "Reti: Accepted, 3.e3 Nf6 4.Bxc4 e6"
+  "Nf3 d5 c4 dxc4 e3 Nf6 Bxc4 e6")
+ ("A10" "English" "c4")
+ ("A10" "English: 1...g5" "c4 g5")
+ ("A10" "English: 1...g5 2.d4" "c4 g5 d4")
+ ("A10" "English: Myers Gambit" "c4 g5 d4 Bg7")
+ ("A10" "English: 1...Nc6" "c4 Nc6")
+ ("A10" "English: 1...Nc6 2.Nc3" "c4 Nc6 Nc3")
+ ("A10" "English: Jänisch Gambit" "c4 b5")
+ ("A10" "English: Vector" "c4 d5")
+ ("A10" "English: 1...b6" "c4 b6")
+ ("A10" "English: 1...b6 2.Nf3" "c4 b6 Nf3")
+ ("A10" "English: 1...b6 2.Nf3 Bb7" "c4 b6 Nf3 Bb7")
+ ("A10" "English: 1...b6 2.Nc3" "c4 b6 Nc3")
+ ("A10" "English: 1...b6 2.Nc3 e6" "c4 b6 Nc3 e6")
+ ("A10" "English: 1...b6 2.Nc3 e6 3.e4" "c4 b6 Nc3 e6 e4")
+ ("A10" "English: 1...b6 2.Nc3 Bb7" "c4 b6 Nc3 Bb7")
+ ("A10" "English: 1...b6 2.Nc3 Bb7 3.e4" "c4 b6 Nc3 Bb7 e4")
+ ("A10" "English: 1...b6 2.Nc3 Bb7 3.e4 e6" "c4 b6 Nc3 Bb7 e4 e6")
+ ("A10" "English: 1...d6" "c4 d6")
+ ("A10" "English: 1...d6" "c4 d6 Nc3")
+ ("A10" "English: 1...d6" "c4 d6 Nf3")
+ ("A10" "English: 1...g6" "c4 g6")
+ ("A10" "English: 1...g6 2.g3" "c4 g6 g3")
+ ("A10" "English: 1...g6 2.Nc3" "c4 g6 Nc3")
+ ("A10" "English: 1...g6 2.Nc3 Bg7" "c4 g6 Nc3 Bg7")
+ ("A10" "English: 1...g6 2.Nc3 Bg7 3.g3" "c4 g6 Nc3 Bg7 g3")
+ ("A10" "English: 1...g6" "c4 g6 Nf3")
+ ("A10" "English: 1...g6" "c4 g6 Nf3 Bg7")
+ ("A10" "English: 1...g6 2.e4" "c4 g6 e4")
+ ("A10" "English: Adorjan Defence" "c4 g6 e4 e5")
+ ("A10" "English: Anglo-Dutch" "c4 f5")
+ ("A10" "English: Wade Gambit" "c4 f5 g4")
+ ("A10" "English: Anglo-Dutch" "c4 f5 g3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 g3 Nf6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 g3 Nf6 Bg2")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nc3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nc3 Nf6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nc3 Nf6 g3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nc3 Nf6 g3 g6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 e6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 Nc3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2 c6 O-O d5")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2 Be7")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2 Be7 O-O")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2 Be7 O-O O-O")
+ ("A10" "English: Anglo-Dutch" "c4 f5 Nf3 Nf6 g3 e6 Bg2 Be7 O-O O-O Nc3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5 Nf3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5 Nf3 Bf5")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5 Nf3 Bf5 O-O")
+ ("A11" "English: Caro-Kann Defence"
+  "c4 c6 g3 Nf6 Bg2 d5 Nf3 Bf5 O-O e6 d3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5 Nf3 Bg4")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 g3 Nf6 Bg2 d5 Nf3 Bg4 O-O")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 Nc3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 Nc3 d5")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 Nf3")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 Nf3 Nf6")
+ ("A11" "English: Caro-Kann Defence" "c4 c6 Nf3 d5")
+ ("A11" "English: Caro-Kann Defence, 3.g3" "c4 c6 Nf3 d5 g3")
+ ("A11" "English: Caro-Kann Defence, 3.g3 Bg4" "c4 c6 Nf3 d5 g3 Bg4")
+ ("A11" "English: Caro-Kann Defence, 3.g3 Bg4" "c4 c6 Nf3 d5 g3 Bg4 Bg2")
+ ("A11" "English: Caro-Kann Defence, 3.e3" "c4 c6 Nf3 d5 e3")
+ ("A11" "English: Caro-Kann Defence, 3.e3 Nf6" "c4 c6 Nf3 d5 e3 Nf6")
+ ("A11" "English: Caro-Kann Defence, 3.e3 Nf6 4.Nc3"
+  "c4 c6 Nf3 d5 e3 Nf6 Nc3")
+ ("A12" "English: Caro-Kann Defence, 3.b3" "c4 c6 Nf3 d5 b3")
+ ("A12" "English: Torre Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bg4")
+ ("A12" "English: Torre Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bg4 Bg2")
+ ("A12" "English: Torre Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bg4 Bg2 e6")
+ ("A12" "English: Torre Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bg4 Bg2 e6 Bb2")
+ ("A12" "English: London Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bf5")
+ ("A12" "English: London Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bf5 Bg2")
+ ("A12" "English: London Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bf5 Bg2 e6")
+ ("A12" "English: London Defence" "c4 c6 Nf3 d5 b3 Nf6 g3 Bf5 Bg2 e6 Bb2")
+ ("A12" "English: Caro-Kann Defence, 3.b3" "c4 c6 Nf3 d5 b3 Nf6 Bb2")
+ ("A12" "English: Bled Variation" "c4 c6 Nf3 d5 b3 Nf6 Bb2 g6")
+ ("A12" "English: Bled Variation" "c4 c6 Nf3 d5 b3 Nf6 Bb2 g6 e3 Bg7")
+ ("A12" "English: New York/London Defence" "c4 c6 Nf3 d5 b3 Nf6 Bb2 Bf5")
+ ("A12" "English: Capablanca" "c4 c6 Nf3 d5 b3 Nf6 Bb2 Bg4")
+ ("A12" "English: Bogoljubow Variation" "c4 c6 Nf3 d5 b3 Bg4")
+ ("A13a" "English: 1...e6" "c4 e6")
+ ("A13b" "English: 1...e6 2.g3" "c4 e6 g3")
+ ("A13c" "English: 1...e6 2.g3 d5" "c4 e6 g3 d5")
+ ("A13d" "English: 1...e6 2.g3 d5" "c4 e6 g3 d5 Bg2")
+ ("A13e" "English: 1...e6 2.Nc3" "c4 e6 Nc3")
+ ("A13f" "English: 1...e6 2.Nc3 Bb4" "c4 e6 Nc3 Bb4")
+ ("A13g" "English: 1...e6 2.Nc3 d5" "c4 e6 Nc3 d5")
+ ("A13h" "English: 1...e6 2.Nf3" "c4 e6 Nf3")
+ ("A13i" "English: 1...e6 2.Nf3 Nf6" "c4 e6 Nf3 Nf6")
+ ("A13j" "English: 1...e6 2.Nf3 Nf6 3.g3" "c4 e6 Nf3 Nf6 g3")
+ ("A13k" "English: Romanishin Gambit" "c4 e6 Nf3 Nf6 g3 a6 Bg2 b5")
+ ("A13l" "English: 1...e6 2.Nf3 d5" "c4 e6 Nf3 d5")
+ ("A13m" "English: Agincourt Variation" "c4 e6 Nf3 d5 b3")
+ ("A13n" "English: Wimpey System" "c4 e6 Nf3 d5 b3 Nf6 Bb2 c5 e3")
+ ("A13n" "English: Wimpey System" "c4 e6 Nf3 d5 b3 Nf6 Bb2 c5 e3 Nc6")
+ ("A13o" "English: Agincourt Variation" "c4 e6 Nf3 d5 g3")
+ ("A13p" "English: Kurajica Defence" "c4 e6 Nf3 d5 g3 c6")
+ ("A13q" "English: Kurajica Defence" "c4 e6 Nf3 d5 g3 c6 Qc2")
+ ("A13r" "English: Neo-Catalan" "c4 e6 Nf3 d5 g3 Nf6")
+ ("A13s" "English: Neo-Catalan" "c4 e6 Nf3 d5 g3 Nf6 Bg2")
+ ("A13s" "English: Neo-Catalan, 4...c6" "c4 e6 Nf3 d5 g3 Nf6 Bg2 c6")
+ ("A13s" "English: Neo-Catalan, 4...c6 5.b3"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 c6 b3")
+ ("A13t" "English: Neo-Catalan, 4...c5" "c4 e6 Nf3 d5 g3 Nf6 Bg2 c5")
+ ("A13t" "English: Neo-Catalan, 4...c5 5.O-O"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 c5 O-O")
+ ("A13u" "English: Neo-Catalan Accepted" "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4")
+ ("A13v" "English: Neo-Catalan Accepted, 5.Qa4+"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+")
+ ("A13v" "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+ Nbd7")
+ ("A13v" "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7 6.O-O"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+ Nbd7 O-O")
+ ("A13w" "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7 6.Qxc4"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+ Nbd7 Qxc4")
+ ("A13w" "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7 6.Qxc4 a6"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+ Nbd7 Qxc4 a6")
+ ("A13w" "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7 6.Qxc4 c5"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 dxc4 Qa4+ Nbd7 Qxc4 c5")
+ ("A14" "English: Neo-Catalan Declined" "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7")
+ ("A14" "English: Neo-Catalan Declined"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O")
+ ("A14" "English: Neo-Catalan Declined, 5...c6"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O c6")
+ ("A14" "English: Neo-Catalan Declined, 5...c5"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O c5")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 b6"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 b6")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 b6 7.Bb2 Bb7"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 b6 Bb2 Bb7")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 b6 7.Bb2 Bb7 8.e3"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 b6 Bb2 Bb7 e3")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 c5"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 c5")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 c5 7.Bb2"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 c5 Bb2")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 c5 7.Bb2 Nc6"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 c5 Bb2 Nc6")
+ ("A14" "English: Neo-Catalan Declined, 5...O-O 6.b3 c5 7.Bb2 Nc6 8.e3"
+  "c4 e6 Nf3 d5 g3 Nf6 Bg2 Be7 O-O O-O b3 c5 Bb2 Nc6 e3")
+ ("A15" "English: Anglo-Indian" "c4 Nf6")
+ ("A15" "English: Anglo-Indian, Polish" "c4 Nf6 b4")
+ ("A15" "English: Anglo-Indian, 2.g3" "c4 Nf6 g3")
+ ("A15" "English: Anglo-Indian, 2.g3 e6" "c4 Nf6 g3 e6")
+ ("A15" "English: Anglo-Indian, 2.g3 e6" "c4 Nf6 g3 e6 Bg2")
+ ("A15" "English: Anglo-Indian, 2.g3 g6" "c4 Nf6 g3 g6")
+ ("A15" "English: Anglo-Indian, 2.g3 g6" "c4 Nf6 g3 g6 Bg2 Bg7")
+ ("A15" "English: Anglo-Indian, 2.Nf3" "c4 Nf6 Nf3")
+ ("A15" "English: Anglo-Indian, 2.Nf3 g6" "c4 Nf6 Nf3 g6")
+ ("A15" "English: Anglo-Indian, 2.Nf3 g6" "c4 Nf6 Nf3 g6 g3 Bg7 Bg2")
+ ("A15" "English: Anglo-Indian, 2.Nf3 g6" "c4 Nf6 Nf3 g6 g3 Bg7 Bg2 O-O")
+ ("A16" "English: Anglo-Indian, 2.Nc3" "c4 Nf6 Nc3")
+ ("A16" "English: Anglo-Indian, 2.Nc3 Nc6" "c4 Nf6 Nc3 Nc6")
+ ("A16" "English: Anglo-Indian, 2.Nc3 c6" "c4 Nf6 Nc3 c6")
+ ("A16" "English: Anglo-Indian, 2.Nc3 c6 3.e4" "c4 Nf6 Nc3 c6 e4")
+ ("A16" "English: Anglo-Indian, 2.Nc3 c6 3.e4 d5" "c4 Nf6 Nc3 c6 e4 d5")
+ ("A16" "English: Anglo-Indian, 2.Nc3 c6 3.e4 e5" "c4 Nf6 Nc3 c6 e4 e5")
+ ("A16" "English: Anglo-Indian, 2.Nc3 d6" "c4 Nf6 Nc3 d6")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6" "c4 Nf6 Nc3 g6")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.e4" "c4 Nf6 Nc3 g6 e4")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3" "c4 Nf6 Nc3 g6 g3")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3" "c4 Nf6 Nc3 g6 g3 Bg7")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3" "c4 Nf6 Nc3 g6 g3 Bg7 Bg2")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3"
+  "c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3"
+  "c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O e4")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3"
+  "c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O Nf3")
+ ("A16" "English: Anglo-Indian, 2.Nc3 g6 3.g3"
+  "c4 Nf6 Nc3 g6 g3 Bg7 Bg2 O-O Nf3 d6 O-O")
+ ("A16" "English: Anglo-Grünfeld"
+  "c4 Nf6 Nc3 d5")
+ ("A16" "English: Anglo-Grünfeld" "c4 Nf6 Nc3 d5 Nf3")
+ ("A16" "English: Anglo-Grünfeld" "c4 Nf6 Nc3 d5 Nf3 g6")
+ ("A16" "English: Anglo-Grünfeld" "c4 Nf6 Nc3 d5 Nf3 g6 Qa4+")
+ ("A16" "English: Anglo-Grünfeld" "c4 Nf6 Nc3 d5 Nf3 g6 g3")
+ ("A16" "English: Anglo-Grünfeld, 3.cxd5" "c4 Nf6 Nc3 d5 cxd5")
+ ("A16" "English: Anglo-Grünfeld, Smyslov Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 g3 g6 Bg2 Nxc3")
+ ("A16" "English: Anglo-Grünfeld, Smyslov Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 g3 g6 Bg2 Nxc3 bxc3")
+ ("A16" "English: Anglo-Grünfeld, Smyslov Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 g3 g6 Bg2 Nxc3 bxc3 Bg7")
+ ("A16" "English: Anglo-Grünfeld, Smyslov, 7.Rb1"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 g3 g6 Bg2 Nxc3 bxc3 Bg7 Rb1")
+ ("A16" "English: Anglo-Grünfeld, Czech Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 g3 g6 Bg2 Nb6")
+ ("A16" "English: Anglo-Grünfeld, 4.Nf3" "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3")
+ ("A16" "English: Anglo-Grünfeld, 4.Nf3 g6"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6")
+ ("A16" "English: Anglo-Grünfeld, 4.Nf3 g6 5.g3"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 g3")
+ ("A16" "English: Anglo-Grünfeld, 4.Nf3 g6 5.g3"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 g3 Bg7")
+ ("A16" "English: Anglo-Grünfeld, Korchnoi Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 g3 Bg7 Bg2 e5")
+ ("A16" "English: Anglo-Grünfeld, Andersson-Böök Variation"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 e4")
+ ("A16" "English: Anglo-Grünfeld, Andersson-Böök, Queenswap"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 e4 Nxc3 dxc3 Qxd1+ Kxd1")
+ ("A16" "English: Anglo-Grünfeld, 4.Nf3 g6 5.Qa4+"
+  "c4 Nf6 Nc3 d5 cxd5 Nxd5 Nf3 g6 Qa4+")
+ ("A17" "English: Anglo-Indian, 2.Nc3 e6" "c4 Nf6 Nc3 e6")
+ ("A17" "English: Anglo-Indian, 2.Nc3 e6 3.g3" "c4 Nf6 Nc3 e6 g3")
+ ("A17" "English: Anglo-Indian, 2.Nc3 e6 3.Nf3" "c4 Nf6 Nc3 e6 Nf3")
+ ("A17" "English: Anglo-Indian, 2.Nc3 e6 3.Nf3 d5" "c4 Nf6 Nc3 e6 Nf3 d5")
+ ("A17" "English: Anglo-Queen's Indian" "c4 Nf6 Nc3 e6 Nf3 b6")
+ ("A17" "English: Anglo-Queen's Indian, 4.e4" "c4 Nf6 Nc3 e6 Nf3 b6 e4")
+ ("A17" "English: Anglo-Queen's Indian, Romanishin"
+  "c4 Nf6 Nc3 e6 Nf3 b6 e4 Bb7 Bd3")
+ ("A17" "English: Anglo-Queen's Indian, 4.g3" "c4 Nf6 Nc3 e6 Nf3 b6 g3")
+ ("A17" "English: Anglo-Queen's Indian, 4.g3"
+  "c4 Nf6 Nc3 e6 Nf3 b6 g3 Bb7 Bg2")
+ ("A17" "English: Anglo-Queen's Indian, 4.g3"
+  "c4 Nf6 Nc3 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O")
+ ("A17" "English: Anglo-Queen's Indian, 4.g3"
+  "c4 Nf6 Nc3 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Re1")
+ ("A17" "English: Nimzo-English" "c4 Nf6 Nc3 e6 Nf3 Bb4")
+ ("A17" "English: Nimzo-English, 4.g3" "c4 Nf6 Nc3 e6 Nf3 Bb4 g3")
+ ("A17" "English: Nimzo-English, 4.Qc2" "c4 Nf6 Nc3 e6 Nf3 Bb4 Qc2")
+ ("A17" "English: Nimzo-English, 4.Qc2 O-O"
+  "c4 Nf6 Nc3 e6 Nf3 Bb4 Qc2 O-O")
+ ("A18" "English: Mikenas" "c4 Nf6 Nc3 e6 e4")
+ ("A18" "English: Mikenas, Kevitz Defence" "c4 Nf6 Nc3 e6 e4 Nc6")
+ ("A18" "English: Mikenas, 3...d6" "c4 Nf6 Nc3 e6 e4 d6")
+ ("A18" "English: Mikenas, 3...d6 4.d4 Be7" "c4 Nf6 Nc3 e6 e4 d6 d4 Be7")
+ ("A18" "English: Mikenas, French Variation" "c4 Nf6 Nc3 e6 e4 d5")
+ ("A18" "English: Mikenas, French, 4.cxd5" "c4 Nf6 Nc3 e6 e4 d5 cxd5")
+ ("A18" "English: Mikenas, Flohr Variation" "c4 Nf6 Nc3 e6 e4 d5 e5")
+ ("A18" "English: Mikenas, Flohr, 4...Ne4" "c4 Nf6 Nc3 e6 e4 d5 e5 Ne4")
+ ("A18" "English: Mikenas, Flohr, 4...d4" "c4 Nf6 Nc3 e6 e4 d5 e5 d4")
+ ("A18" "English: Mikenas, Flohr, 7.Nf3"
+  "c4 Nf6 Nc3 e6 e4 d5 e5 d4 exf6 dxc3 bxc3 Qxf6 Nf3")
+ ("A18" "English: Mikenas, Flohr, 7.d4"
+  "c4 Nf6 Nc3 e6 e4 d5 e5 d4 exf6 dxc3 bxc3 Qxf6 d4")
+ ("A18" "English: Mikenas, Flohr, 7.d4 c5"
+  "c4 Nf6 Nc3 e6 e4 d5 e5 d4 exf6 dxc3 bxc3 Qxf6 d4 c5")
+ ("A18" "English: Mikenas, Flohr, 7.d4 e5"
+  "c4 Nf6 Nc3 e6 e4 d5 e5 d4 exf6 dxc3 bxc3 Qxf6 d4 e5")
+ ("A19" "English: Mikenas, Sicilian Variation" "c4 Nf6 Nc3 e6 e4 c5")
+ ("A19" "English: Mikenas, Sicilian, 4.e5" "c4 Nf6 Nc3 e6 e4 c5 e5")
+ ("A19" "English: Mikenas, Sicilian, 4.e5 Ng8"
+  "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8")
+ ("A19" "English: Mikenas, Nei Gambit" "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8 d4")
+ ("A19" "English: Mikenas, 5.Nf3" "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8 Nf3")
+ ("A19" "English: Mikenas, 5.Nf3 Nc6"
+  "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8 Nf3 Nc6")
+ ("A19" "English: Mikenas, 5.Nf3 Nc6 6.d4"
+  "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8 Nf3 Nc6 d4")
+ ("A19" "English: Mikenas, 6.d4 cxd4 7.Nxd4 Nxe5"
+  "c4 Nf6 Nc3 e6 e4 c5 e5 Ng8 Nf3 Nc6 d4 cxd4 Nxd4 Nxe5")
+ ("A20" "English: King's (1...e5)" "c4 e5")
+ ("A20" "English: King's, 2.d3" "c4 e5 d3")
+ ("A20" "English: King's, 2.e3" "c4 e5 e3")
+ ("A20" "English: King's, 2.g3" "c4 e5 g3")
+ ("A20" "English: King's, 2.g3 f5" "c4 e5 g3 f5")
+ ("A20" "English: King's, 2.g3 g6" "c4 e5 g3 g6")
+ ("A20" "English: King's, 2.g3 g6" "c4 e5 g3 g6 Bg2")
+ ("A20" "English: King's, 2.g3 g6" "c4 e5 g3 g6 Bg2 Bg7")
+ ("A20" "English: King's, 2.g3 c6" "c4 e5 g3 c6")
+ ("A20" "English: King's, 2.g3 c6 3.d4" "c4 e5 g3 c6 d4")
+ ("A20" "English: King's, 2.g3 d6" "c4 e5 g3 d6")
+ ("A20" "English: King's, 2.g3 d6" "c4 e5 g3 d6 Bg2")
+ ("A20" "English: King's, 2.g3 Nc6" "c4 e5 g3 Nc6")
+ ("A20" "English: King's, 2.g3 Nc6 3.Bg2" "c4 e5 g3 Nc6 Bg2")
+ ("A20" "English: King's, 2.g3 Nf6" "c4 e5 g3 Nf6")
+ ("A20" "English: King's, 2.g3 Nf6 3.Bg2" "c4 e5 g3 Nf6 Bg2")
+ ("A20" "English: King's, 2.g3 Nf6 3.Bg2 Bc5" "c4 e5 g3 Nf6 Bg2 Bc5")
+ ("A20" "English: King's, 2.g3 Nf6 3.Bg2 Nc6" "c4 e5 g3 Nf6 Bg2 Nc6")
+ ("A20" "English: King's, 2.g3 Nf6 3.Bg2 c6" "c4 e5 g3 Nf6 Bg2 c6")
+ ("A20" "English: King's, 2.g3 Nf6 3.Bg2 d5" "c4 e5 g3 Nf6 Bg2 d5")
+ ("A20" "English: King's, Nimzowitsch" "c4 e5 Nf3")
+ ("A20" "English: King's, Nimzowitsch, 2...Nc6" "c4 e5 Nf3 Nc6")
+ ("A20" "English: King's, Nimzowitsch, Flohr Variation" "c4 e5 Nf3 e4")
+ ("A21" "English: King's, 2.Nc3" "c4 e5 Nc3")
+ ("A21" "English: King's, 2.Nc3 f5" "c4 e5 Nc3 f5")
+ ("A21" "English: King's, 2.Nc3 f5" "c4 e5 Nc3 f5 g3 Nf6")
+ ("A21" "English: King's, 2.Nc3 f5" "c4 e5 Nc3 f5 g3 Nf6 Bg2")
+ ("A21" "English: King's, 2.Nc3 g6" "c4 e5 Nc3 g6")
+ ("A21" "English: King's, 2.Nc3 g6" "c4 e5 Nc3 g6 g3 Bg7 Bg2")
+ ("A21" "English: King's, 2.Nc3 d6" "c4 e5 Nc3 d6")
+ ("A21" "English: King's, Keres Variation" "c4 e5 Nc3 d6 g3 c6")
+ ("A21" "English: King's, Keres Variation" "c4 e5 Nc3 d6 g3 c6 Bg2")
+ ("A21" "English: King's, 2.Nc3 d6 3.d4" "c4 e5 Nc3 d6 d4")
+ ("A21" "English: King's, 2.Nc3 d6 3.g3" "c4 e5 Nc3 d6 g3")
+ ("A21" "English: King's, 2.Nc3 d6 3.Nf3" "c4 e5 Nc3 d6 Nf3")
+ ("A21" "English: King's, 2.Nc3 d6 3.Nf3 g6" "c4 e5 Nc3 d6 Nf3 g6")
+ ("A21" "English: Lukin Variation" "c4 e5 Nc3 d6 Nf3 f5")
+ ("A21" "English: Lukin, 4.d4 e4" "c4 e5 Nc3 d6 Nf3 f5 d4 e4")
+ ("A21" "English: Lukin, 5.Nd2" "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Nd2")
+ ("A21" "English: Lukin, 5.Nd2 Nf6 6.e3"
+  "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Nd2 Nf6 e3")
+ ("A21" "English: Lukin, 5.Ng5" "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Ng5")
+ ("A21" "English: Lukin, 5.Ng5 Nf6" "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Ng5 Nf6")
+ ("A21" "English: Lukin, 5.Ng5 Be7" "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Ng5 Be7")
+ ("A21" "English: Lukin, 5.Ng5 c6" "c4 e5 Nc3 d6 Nf3 f5 d4 e4 Ng5 c6")
+ ("A21" "English: Smyslov Defence" "c4 e5 Nc3 d6 Nf3 Bg4")
+ ("A21" "English: Kramnik-Shirov Counterattack" "c4 e5 Nc3 Bb4")
+ ("A21" "English: Kramnik-Shirov, 3.g3" "c4 e5 Nc3 Bb4 g3")
+ ("A21" "English: Kramnik-Shirov, 3.g3 Bxc3" "c4 e5 Nc3 Bb4 g3 Bxc3")
+ ("A21" "English: Kramnik-Shirov, 3.g3 Bxc3 4.bxc3"
+  "c4 e5 Nc3 Bb4 g3 Bxc3 bxc3")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5" "c4 e5 Nc3 Bb4 Nd5")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5 a5" "c4 e5 Nc3 Bb4 Nd5 a5")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5 Ba5" "c4 e5 Nc3 Bb4 Nd5 Ba5")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5 Bc5" "c4 e5 Nc3 Bb4 Nd5 Bc5")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5 Be7" "c4 e5 Nc3 Bb4 Nd5 Be7")
+ ("A21" "English: Kramnik-Shirov, 3.Nd5 Be7 4.d4"
+  "c4 e5 Nc3 Bb4 Nd5 Be7 d4")
+ ("A22" "English: King's, 2.Nc3 Nf6" "c4 e5 Nc3 Nf6")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.e4" "c4 e5 Nc3 Nf6 e4")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.e3" "c4 e5 Nc3 Nf6 e3")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.e3 Bb4" "c4 e5 Nc3 Nf6 e3 Bb4")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.Nf3" "c4 e5 Nc3 Nf6 Nf3")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.Nf3 d6" "c4 e5 Nc3 Nf6 Nf3 d6")
+ ("A22" "English: King's, 2.Nc3 Nf6 3.Nf3 e4" "c4 e5 Nc3 Nf6 Nf3 e4")
+ ("A22" "English: Bellon Gambit" "c4 e5 Nc3 Nf6 Nf3 e4 Ng5 b5")
+ ("A22" "English: Bremen System" "c4 e5 Nc3 Nf6 g3")
+ ("A22" "English: Bremen, 3...Bc5" "c4 e5 Nc3 Nf6 g3 Bc5")
+ ("A22" "English: Bremen, Reverse Dragon" "c4 e5 Nc3 Nf6 g3 d5")
+ ("A22" "English: Bremen, Reverse Dragon, 4.cxd5"
+  "c4 e5 Nc3 Nf6 g3 d5 cxd5")
+ ("A22" "English: Bremen, Reverse Dragon, 4.cxd5 Nxd5"
+  "c4 e5 Nc3 Nf6 g3 d5 cxd5 Nxd5")
+ ("A22" "English: Bremen, Reverse Dragon, 4.cxd5 Nxd5 5.Bg2"
+  "c4 e5 Nc3 Nf6 g3 d5 cxd5 Nxd5 Bg2")
+ ("A22" "English: Bremen, Reverse Dragon, 4.cxd5 Nxd5 5.Bg2 Nb6"
+  "c4 e5 Nc3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6")
+ ("A22" "English: Bremen, Smyslov System" "c4 e5 Nc3 Nf6 g3 Bb4")
+ ("A22" "English: Bremen, Smyslov, 4.Bg2" "c4 e5 Nc3 Nf6 g3 Bb4 Bg2")
+ ("A22" "English: Bremen, Smyslov, 4.Bg2 Bxc3"
+  "c4 e5 Nc3 Nf6 g3 Bb4 Bg2 Bxc3")
+ ("A22" "English: Bremen, Smyslov, 4.Bg2 O-O"
+  "c4 e5 Nc3 Nf6 g3 Bb4 Bg2 O-O")
+ ("A22" "English: Bremen, Smyslov, 4.Bg2 O-O 5.e4"
+  "c4 e5 Nc3 Nf6 g3 Bb4 Bg2 O-O e4")
+ ("A23" "English: Bremen, Keres System" "c4 e5 Nc3 Nf6 g3 c6")
+ ("A23" "English: Bremen, Keres, 4.Nf3" "c4 e5 Nc3 Nf6 g3 c6 Nf3")
+ ("A23" "English: Bremen, Keres, 4.Nf3 d6" "c4 e5 Nc3 Nf6 g3 c6 Nf3 d6")
+ ("A23" "English: Bremen, Keres, 4.Nf3 d6"
+  "c4 e5 Nc3 Nf6 g3 c6 Nf3 d6 Bg2")
+ ("A23" "English: Bremen, Keres, 4.Nf3 e4" "c4 e5 Nc3 Nf6 g3 c6 Nf3 e4")
+ ("A23" "English: Bremen, Keres, 4.Bg2" "c4 e5 Nc3 Nf6 g3 c6 Bg2")
+ ("A23" "English: Bremen, Keres, 4.Bg2 d5" "c4 e5 Nc3 Nf6 g3 c6 Bg2 d5")
+ ("A23" "English: Bremen, Keres, 4.Bg2 d5 5.cxd5"
+  "c4 e5 Nc3 Nf6 g3 c6 Bg2 d5 cxd5")
+ ("A23" "English: Bremen, Keres, 4.Bg2 d5 5.cxd5 cxd5"
+  "c4 e5 Nc3 Nf6 g3 c6 Bg2 d5 cxd5 cxd5")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 d3")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e3")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e3 d6 Nge2 O-O")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e4")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e4 d6")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e4 d6 Nf3")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e4 d6 Nge2 O-O")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 e4 d6 Nge2 O-O d3")
+ ("A24" "English: Bremen, 3...g6" "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 Nf3")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 Nf3 d6 O-O O-O")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 Nf3 d6 d3 O-O O-O")
+ ("A24" "English: Bremen, 3...g6"
+  "c4 e5 Nc3 Nf6 g3 g6 Bg2 Bg7 Nf3 d6 d3 O-O O-O c6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 e3")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 e3 Nf6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 f5")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 f5 Bg2")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 f5 Bg2 Nf6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 f5 Bg2 Nf6 e3 g6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 f5 Bg2 Nf6 d3")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6 Bg2")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6 Bg2 Bc5")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6 Bg2 Bc5 e3")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6 Bg2 Bb4")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 Nf6 Bg2 Bb4 Nd5")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 d6 Bg2")
+ ("A25" "English: Closed, Tröger Defence" "c4 e5 Nc3 Nc6 g3 d6 Bg2 Be6")
+ ("A25" "English: Closed, Tröger, 5.d3" "c4 e5 Nc3 Nc6 g3 d6 Bg2 Be6 d3")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 g6")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 g6 Bg2")
+ ("A25" "English: Closed" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7")
+ ("A25" "English: Closed, 5.e3" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3")
+ ("A25" "English: Closed, Taimanov Variation"
+  "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 d6 Nge2 Nh6")
+ ("A25" "English: Closed, Hort Variation"
+  "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 d6 Nge2 Be6")
+ ("A25" "English: Closed, Hort, 7.d3"
+  "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 d6 Nge2 Be6 d3")
+ ("A25" "English: Closed, 5.Rb1" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 Rb1")
+ ("A25" "English: Closed, 5.Rb1, Taimanov Variation"
+  "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 Rb1 Nh6")
+ ("A25" "English: Closed, 5.Rb1" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 Rb1 a5")
+ ("A25" "English: Closed, 5.e4" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 e4")
+ ("A25" "English: Closed, 5.d3" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3")
+ ("A25" "English: Closed, 5.d3 Nge7" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 Nge7")
+ ("A26" "English: Closed, 5.d3 d6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6")
+ ("A26" "English: Closed, 5.d3 d6 6.e3" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 e3")
+ ("A26" "English: Closed, 5.d3 d6 6.Rb1" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Rb1")
+ ("A26" "English: Closed, 5.d3 d6 6.Rb1 f5" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Rb1 f5")
+ ("A26" "English: Closed, 5.d3 d6 6.Rb1 a5" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Rb1 a5")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Nf3")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 Nf3 Nf6")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O" "c4 e5 Nc3 Nc6 g3 g6 Bg2 
Bg7 d3 d6 Nf3 Nf6 O-O")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O O-O" "c4 e5 Nc3 Nc6 g3 g6 
Bg2 Bg7 d3 d6 Nf3 Nf6 O-O O-O")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O O-O 8.Rb1" "c4 e5 Nc3 Nc6 g3 
g6 Bg2 Bg7 d3 d6 Nf3 Nf6 O-O O-O Rb1")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O O-O 8.Rb1 a5" "c4 e5 Nc3 Nc6 
g3 g6 Bg2 Bg7 d3 d6 Nf3 Nf6 O-O O-O Rb1 a5")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O O-O 8.Rb1 a5 9.a3" "c4 e5 
Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Nf3 Nf6 O-O O-O Rb1 a5 a3")
+ ("A26" "English: Closed, 5.d3 d6 6.Nf3 Nf6 7.O-O O-O 8.Rb1 a5 9.a3 h6" "c4 e5 
Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Nf3 Nf6 O-O O-O Rb1 a5 a3 h6")
+ ("A26" "English: Botvinnik System" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 e4")
+ ("A26" "English: Botvinnik System, 6...Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nf6")
+ ("A26" "English: Botvinnik System, 6...Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nf6 Nf3")
+ ("A26" "English: Botvinnik System, 6...Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nf6 Nf3 O-O O-O")
+ ("A26" "English: Botvinnik System, 6...Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nf6 Nge2")
+ ("A26" "English: Botvinnik System, 6...Nf6" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nf6 Nge2 O-O O-O")
+ ("A26" "English: Botvinnik System, 6...Nge7" "c4 e5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 e4 Nge7")
+ ("A26" "English: Botvinnik System, 6...Nge7 7.Nge2" "c4 e5 Nc3 Nc6 g3 g6 Bg2 
Bg7 d3 d6 e4 Nge7 Nge2")
+ ("A27" "English: Three Knights" "c4 e5 Nc3 Nc6 Nf3")
+ ("A27" "English: Three Knights, 3...Bb4" "c4 e5 Nc3 Nc6 Nf3 Bb4")
+ ("A27" "English: Three Knights, 3...d6" "c4 e5 Nc3 Nc6 Nf3 d6")
+ ("A27" "English: Three Knights, 3...f5" "c4 e5 Nc3 Nc6 Nf3 f5")
+ ("A27" "English: Three Knights, 3...f5 4.d4" "c4 e5 Nc3 Nc6 Nf3 f5 d4")
+ ("A27" "English: Three Knights, 3...f5 4.d4 e4" "c4 e5 Nc3 Nc6 Nf3 f5 d4 e4")
+ ("A27" "English: Three Knights, 3...g6" "c4 e5 Nc3 Nc6 Nf3 g6")
+ ("A27" "English: Three Knights, 3...g6 4.d4" "c4 e5 Nc3 Nc6 Nf3 g6 d4")
+ ("A27" "English: Three Knights, 3...g6 4.d4 exd4" "c4 e5 Nc3 Nc6 Nf3 g6 d4 
exd4")
+ ("A27" "English: Three Knights, 3...g6 4.d4 exd4 5.Nxd4" "c4 e5 Nc3 Nc6 Nf3 
g6 d4 exd4 Nxd4")
+ ("A28" "English: Four Knights" "c4 e5 Nc3 Nc6 Nf3 Nf6")
+ ("A28" "English: Four Knights, Nimzowitsch Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 
e4")
+ ("A28" "English: Four Knights, Marini Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 a3")
+ ("A28" "English: Four Knights, Capablanca Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 
d3")
+ ("A28" "English: Four Knights, 4.d4" "c4 e5 Nc3 Nc6 Nf3 Nf6 d4")
+ ("A28" "English: Four Knights, Nenarokov Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 d4 
exd4 Nxd4 Bb4 Bg5 h6 Bh4 Bxc3+ bxc3 Ne5")
+ ("A28" "English: Four Knights, Bradley Beach Variation" "c4 e5 Nc3 Nc6 Nf3 
Nf6 d4 e4")
+ ("A28" "English: Four Knights, 4.e3" "c4 e5 Nc3 Nc6 Nf3 Nf6 e3")
+ ("A28" "English: Four Knights, 4.e3 Bb4" "c4 e5 Nc3 Nc6 Nf3 Nf6 e3 Bb4")
+ ("A28" "English: Four Knights, 4.e3 Bb4 5.Qc2" "c4 e5 Nc3 Nc6 Nf3 Nf6 e3 Bb4 
Qc2")
+ ("A28" "English: Four Knights, Stean Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 e3 Bb4 
Qc2 O-O Nd5 Re8 Qf5")
+ ("A28" "English: Four Knights, Romanishin Variation" "c4 e5 Nc3 Nc6 Nf3 Nf6 
e3 Bb4 Qc2 Bxc3")
+ ("A29" "English: Four Knights, 4.g3" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3")
+ ("A29" "English: Four Knights, 4.g3 g6" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 g6")
+ ("A29" "English: Four Knights, 4.g3 g6 5.d4" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 g6 d4")
+ ("A29" "English: Four Knights, 4.g3 d5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5 
cxd5")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 
d5 cxd5 Nxd5")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2" "c4 e5 Nc3 Nc6 Nf3 
Nf6 g3 d5 cxd5 Nxd5 Bg2")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Be6" "c4 e5 Nc3 Nc6 
Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Be6")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6" "c4 e5 Nc3 Nc6 
Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O" "c4 e5 
Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O Be7" "c4 
e5 Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O Be7 8.Rb1" 
"c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 Rb1")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O Be7 8.a3" 
"c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 a3")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O Be7 8.d3" 
"c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 d3")
+ ("A29" "English: Four Knights, 4.g3 d5 5.cxd5 Nxd5 6.Bg2 Nb6 7.O-O Be7 8.d3" 
"c4 e5 Nc3 Nc6 Nf3 Nf6 g3 d5 cxd5 Nxd5 Bg2 Nb6 O-O Be7 d3 O-O")
+ ("A29" "English: Four Knights, 4.g3 Bc5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bc5")
+ ("A29" "English: Four Knights, 4.g3 Bc5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bc5 Bg2")
+ ("A29" "English: Four Knights, 4.g3 Bc5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bc5 Bg2 d6 
O-O")
+ ("A29" "English: Four Knights, 4.g3 Bc5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bc5 Bg2 d6 
O-O O-O")
+ ("A29" "English: Four Knights, 4.g3 Bc5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bc5 Bg2 d6 
O-O O-O d3")
+ ("A29" "English: Four Knights, 4.g3 Bb4" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bb4")
+ ("A29" "English: Four Knights, 4.g3 Bb4 5.Nd5" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bb4 
Nd5")
+ ("A29" "English: Four Knights, 4.g3 Bb4 5.Bg2" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bb4 
Bg2")
+ ("A29" "English: Four Knights, Main Line 6.O-O" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 Bb4 
Bg2 O-O O-O")
+ ("A29" "English: Four Knights, Main Line 6.O-O e4" "c4 e5 Nc3 Nc6 Nf3 Nf6 g3 
Bb4 Bg2 O-O O-O e4")
+ ("A30a" "English: Symmetrical" "c4 c5")
+ ("A30a" "English: Symmetrical, 2.b3" "c4 c5 b3")
+ ("A30a" "English: Symmetrical, 2.g3" "c4 c5 g3")
+ ("A30a" "English: Symmetrical, 2.g3 g6" "c4 c5 g3 g6")
+ ("A30b" "English: Symmetrical, 2.Nf3" "c4 c5 Nf3")
+ ("A30b" "English: Symmetrical, 2.Nf3 b6" "c4 c5 Nf3 b6")
+ ("A30b" "English: Symmetrical, 2.Nf3 b6 3.g3" "c4 c5 Nf3 b6 g3")
+ ("A30b" "English: Symmetrical, 2.Nf3 b6 3.g3 Bb7 4.Bg2" "c4 c5 Nf3 b6 g3 Bb7 
Bg2")
+ ("A30b" "English: Symmetrical, 2.Nf3 g6" "c4 c5 Nf3 g6")
+ ("A30b" "English: Symmetrical, 2.Nf3 Nc6" "c4 c5 Nf3 Nc6")
+ ("A30c" "English: Symmetrical, 2.Nf3 Nf6" "c4 c5 Nf3 Nf6")
+ ("A30d" "English: Symmetrical, 2.Nf3 Nf6 3.g3" "c4 c5 Nf3 Nf6 g3")
+ ("A30e" "English: Symmetrical, b6 System" "c4 c5 Nf3 Nf6 g3 b6")
+ ("A30e" "English: Symmetrical, b6 System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7")
+ ("A30e" "English: Symmetrical, b6 System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 Nc3")
+ ("A30e" "English: Symmetrical, b6 System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O")
+ ("A30f" "English: Symmetrical, Double Fianchetto" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O g6")
+ ("A30f" "English: Symmetrical, Double Fianchetto" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O g6 Nc3 Bg7")
+ ("A30g" "English: Symmetrical, Mutual Double Fianchetto" "c4 c5 Nf3 Nf6 g3 b6 
Bg2 Bb7 O-O g6 b3")
+ ("A30g" "English: Symmetrical, Mutual Double Fianchetto" "c4 c5 Nf3 Nf6 g3 b6 
Bg2 Bb7 O-O g6 b3 Bg7 Bb2 O-O")
+ ("A30g" "English: Symmetrical, Mutual Double Fianchetto" "c4 c5 Nf3 Nf6 g3 b6 
Bg2 Bb7 O-O g6 b3 Bg7 Bb2 O-O Nc3")
+ ("A30g" "English: Symmetrical, Mutual Double Fianchetto with ...d5" "c4 c5 
Nf3 Nf6 g3 b6 Bg2 Bb7 O-O g6 b3 Bg7 Bb2 O-O Nc3 d5")
+ ("A30h" "English: Symmetrical, Hedgehog System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6")
+ ("A30h" "English: Symmetrical, Hedgehog System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3")
+ ("A30i" "English: Symmetrical, Hedgehog, 6...a6" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 a6")
+ ("A30j" "English: Symmetrical, Hedgehog, 6...d6" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 d6")
+ ("A30k" "English: Symmetrical, Hedgehog, 6...d6 7.b3" "c4 c5 Nf3 Nf6 g3 b6 
Bg2 Bb7 O-O e6 Nc3 d6 b3")
+ ("A30l" "English: Symmetrical, Hedgehog, 6...d6 7.d4" "c4 c5 Nf3 Nf6 g3 b6 
Bg2 Bb7 O-O e6 Nc3 d6 d4")
+ ("A30m" "English: Symmetrical, Hedgehog System" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7")
+ ("A30n" "English: Symmetrical, Hedgehog, 7.Re1" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 Re1")
+ ("A30o" "English: Symmetrical, Hedgehog, 7.Re1 d5" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 Re1 d5")
+ ("A30p" "English: Symmetrical, Hedgehog, 7.b3" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 b3")
+ ("A30p" "English: Symmetrical, Hedgehog, 7.b3" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 b3 O-O")
+ ("A30p" "English: Symmetrical, Hedgehog, 7.b3" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 b3 O-O Bb2 d6")
+ ("A30q" "English: Symmetrical, Hedgehog, 7.d4" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 d4")
+ ("A30r" "English: Symmetrical, Hedgehog, 8.Qxd4" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 d4 cxd4 Qxd4")
+ ("A30s" "English: Symmetrical, Hedgehog, 8.Qxd4 O-O" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 O-O")
+ ("A30s" "English: Symmetrical, Hedgehog, 8.Qxd4 O-O" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 O-O Rd1 Nc6")
+ ("A30t" "English: Symmetrical, Hedgehog, 8.Qxd4 Nc6" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 Nc6")
+ ("A30u" "English: Symmetrical, Hedgehog, 8.Qxd4 d6" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6")
+ ("A30v" "English: Symmetrical, Hedgehog, 9.b3" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 b3")
+ ("A30v" "English: Symmetrical, Hedgehog, 9.b3 Nbd7" "c4 c5 Nf3 Nf6 g3 b6 Bg2 
Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 b3 Nbd7")
+ ("A30v" "English: Symmetrical, Hedgehog, 9.b3 Nbd7 10.Nb5" "c4 c5 Nf3 Nf6 g3 
b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 b3 Nbd7 Nb5")
+ ("A30w" "English: Symmetrical, Hedgehog, 9.Rd1" "c4 c5 Nf3 Nf6 g3 b6 Bg2 Bb7 
O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1")
+ ("A30x" "English: Symmetrical, Hedgehog, Flexible Formation" "c4 c5 Nf3 Nf6 
g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1 a6 b3 Nbd7")
+ ("A30y" "English: Symmetrical, Hedgehog, Flexible Formation" "c4 c5 Nf3 Nf6 
g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1 a6 b3 Nbd7 e4")
+ ("A30y" "English: Symmetrical, Hedgehog, Flexible Formation, 11.e4 Qc7" "c4 
c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1 a6 b3 Nbd7 e4 Qc7")
+ ("A30y" "English: Symmetrical, Hedgehog, Flexible Formation, 11.e4 O-O" "c4 
c5 Nf3 Nf6 g3 b6 Bg2 Bb7 O-O e6 Nc3 Be7 d4 cxd4 Qxd4 d6 Rd1 a6 b3 Nbd7 e4 O-O")
+ ("A31" "English: Symmetrical, Two Knights" "c4 c5 Nf3 Nf6 d4")
+ ("A31" "English: Symmetrical, Two Knights, 3...a6" "c4 c5 Nf3 Nf6 d4 a6")
+ ("A31" "English: Symmetrical, Two Knights, 3...g6" "c4 c5 Nf3 Nf6 d4 g6")
+ ("A31" "English: Symmetrical, Two Knights, 3...g6" "c4 c5 Nf3 Nf6 d4 g6 d5")
+ ("A31" "English: Symmetrical, Two Knights, 3...g6" "c4 c5 Nf3 Nf6 d4 g6 Nc3")
+ ("A31" "English: Symmetrical, Two Knights" "c4 c5 Nf3 Nf6 d4 cxd4")
+ ("A31" "English: Symmetrical, Two Knights" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4")
+ ("A31" "English: Symmetrical, Two Knights, 4...b6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 b6")
+ ("A31" "English: Symmetrical, Two Knights, 4...b6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 b6 Nc3 Bb7")
+ ("A31" "English: Symmetrical, Two Knights, 4...g6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 g6")
+ ("A31" "English: Symmetrical, Two Knights, 4...g6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 g6 Nc3")
+ ("A31" "English: Symmetrical, Two Knights, 4...g6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 g6 Nc3 Bg7")
+ ("A31" "English: Symmetrical, Two Knights, 4...g6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 g6 Nc3 Bg7 e4")
+ ("A31" "English: Symmetrical, Two Knights, 4...Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 Nc6")
+ ("A31" "English: Symmetrical, Two Knights, 4...Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 Nc6 Nc3")
+ ("A31" "English: Symmetrical, Two Knights, 4...Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 Nc6 Nc3 g6")
+ ("A31" "English: Symmetrical, Two Knights, 4...e5" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e5")
+ ("A31" "English: Symmetrical, Two Knights, 4...e5 5.Nb5" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e5 Nb5")
+ ("A32" "English: Symmetrical, Two Knights, 4...e6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6")
+ ("A32" "English: Symmetrical, Two Knights, 5.e3" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 
e6 e3")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 
e6 g3")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 a6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 a6")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 a6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 a6 Bg2")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Qb6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Qb6")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Qb6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Qb6 Bg2")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Qc7" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Qc7")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Nc6")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Nc6 Bg2")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 Bb4+" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 Bb4+")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 d5" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 g3 d5")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 d5 6.Bg2" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 g3 d5 Bg2")
+ ("A32" "English: Symmetrical, Two Knights, 5.g3 d5 6.Bg2 e5 7.Nf3" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 g3 d5 Bg2 e5 Nf3")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 
e6 Nc3")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 d5" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 Nc3 d5")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 a6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 Nc3 a6")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 a6 6.g3" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 a6 g3")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 Bb4" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 Nc3 Bb4")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 Bb4 6.Qb3" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Bb4 Qb3")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 Bb4 6.Nb5" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Bb4 Nb5")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 Bb4 6.Bd2" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Bb4 Bd2")
+ ("A32" "English: Symmetrical, Two Knights, 5.Nc3 Bb4 6.Bd2 Nc6" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Bb4 Bd2 Nc6")
+ ("A33a" "English: Symmetrical, Two Knights, 5.Nc3 Nc6" "c4 c5 Nf3 Nf6 d4 cxd4 
Nxd4 e6 Nc3 Nc6")
+ ("A33b" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Bf4" "c4 c5 Nf3 Nf6 
d4 cxd4 Nxd4 e6 Nc3 Nc6 Bf4")
+ ("A33c" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Bg5" "c4 c5 Nf3 Nf6 
d4 cxd4 Nxd4 e6 Nc3 Nc6 Bg5")
+ ("A33d" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.e3" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Nc6 e3")
+ ("A33e" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.a3" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Nc6 a3")
+ ("A33f" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.a3 Bc5" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 a3 Bc5")
+ ("A33g" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5" "c4 c5 Nf3 Nf6 
d4 cxd4 Nxd4 e6 Nc3 Nc6 Ndb5")
+ ("A33h" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 Bb4" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 Ndb5 Bb4")
+ ("A33i" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 d5" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 Ndb5 d5")
+ ("A33j" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 d5 Queenswap" 
"c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 Ndb5 d5 Bf4 e5 cxd5 exf4 dxc6 bxc6 Qxd8+ 
Kxd8")
+ ("A33k" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3" "c4 c5 Nf3 Nf6 d4 
cxd4 Nxd4 e6 Nc3 Nc6 g3")
+ ("A33l" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 a6" "c4 c5 Nf3 Nf6 
d4 cxd4 Nxd4 e6 Nc3 Nc6 g3 a6")
+ ("A33m" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 Bb4" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 g3 Bb4")
+ ("A33n" "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 Bc5" "c4 c5 Nf3 
Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 g3 Bc5")
+ ("A33o" "English: Symmetrical, Geller Variation" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 
e6 Nc3 Nc6 g3 Qb6")
+ ("A33p" "English: Symmetrical, Geller, 7.Nb3"
+  "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 e6 Nc3 Nc6 g3 Qb6 Nb3")
+ ("A33q" "English: Symmetrical, Geller, 7.Nb3 Ne5" "c4 c5 Nf3 Nf6 d4 cxd4 Nxd4 
e6 Nc3 Nc6 g3 Qb6 Nb3 Ne5")
+ ("A34" "English: Symmetrical" "c4 c5 Nc3")
+ ("A34" "English: Symmetrical, 2...b6" "c4 c5 Nc3 b6")
+ ("A34" "English: Symmetrical, 2...b6" "c4 c5 Nc3 b6 Nf3")
+ ("A34" "English: Symmetrical, 2...b6" "c4 c5 Nc3 b6 Nf3 Bb7")
+ ("A34" "English: Symmetrical, 2...g6" "c4 c5 Nc3 g6")
+ ("A34" "English: Symmetrical, 2...g6" "c4 c5 Nc3 g6 Nf3")
+ ("A34" "English: Symmetrical, 2...g6" "c4 c5 Nc3 g6 g3")
+ ("A34" "English: Symmetrical, 2...g6" "c4 c5 Nc3 g6 g3 Bg7 Bg2")
+ ("A34" "English: Symmetrical, 2...Nf6" "c4 c5 Nc3 Nf6")
+ ("A34" "English: Symmetrical, 2...Nf6" "c4 c5 Nc3 Nf6 g3 d5")
+ ("A34" "English: Symmetrical, 2...Nf6 3.g3" "c4 c5 Nc3 Nf6 g3")
+ ("A34" "English: Symmetrical, 2...Nf6 3.g3" "c4 c5 Nc3 Nf6 g3 d5 cxd5 Nxd5 
Bg2")
+ ("A34" "English: Symmetrical, Rubinstein System" "c4 c5 Nc3 Nf6 g3 d5 cxd5 
Nxd5 Bg2 Nc7")
+ ("A34" "English: Symmetrical, 3 Knights" "c4 c5 Nc3 Nf6 Nf3")
+ ("A34" "English: Symmetrical, 3 Knights, 3...b6" "c4 c5 Nc3 Nf6 Nf3 b6")
+ ("A34" "English: Symmetrical, 3 Knights, 3...e6" "c4 c5 Nc3 Nf6 Nf3 e6")
+ ("A34" "English: Symmetrical, 3 Knights, 3...e6 4.g3" "c4 c5 Nc3 Nf6 Nf3 e6 
g3")
+ ("A34" "English: Symmetrical, 3 Knights, 3...g6" "c4 c5 Nc3 Nf6 Nf3 g6")
+ ("A34" "English: Symmetrical, 3 Knights" "c4 c5 Nc3 Nf6 Nf3 d5")
+ ("A34" "English: Symmetrical, 3 Knights, Exchange" "c4 c5 Nc3 Nf6 Nf3 d5 cxd5 
Nxd5")
+ ("A34" "English: Symmetrical, 3 Knights, 5.g3" "c4 c5 Nc3 Nf6 Nf3 d5 cxd5 
Nxd5 g3")
+ ("A34" "English: Symmetrical, 3 Knights, 5.e4" "c4 c5 Nc3 Nf6 Nf3 d5 cxd5 
Nxd5 e4")
+ ("A34" "English: Symmetrical, 3 Knights, 5.e4 Nxc3" "c4 c5 Nc3 Nf6 Nf3 d5 
cxd5 Nxd5 e4 Nxc3")
+ ("A34" "English: Symmetrical, 3 Knights, Queenswap" "c4 c5 Nc3 Nf6 Nf3 d5 
cxd5 Nxd5 e4 Nxc3 dxc3 Qxd1+ Kxd1")
+ ("A34" "English: Symmetrical, 3 Knights, 5.e4 Nb4" "c4 c5 Nc3 Nf6 Nf3 d5 cxd5 
Nxd5 e4 Nb4")
+ ("A34" "English: Symmetrical, 3 Knights, 5.e4 Nb4 6.Bb5+" "c4 c5 Nc3 Nf6 Nf3 
d5 cxd5 Nxd5 e4 Nb4 Bb5+")
+ ("A34" "English: Symmetrical, 3 Knights, 5.e4 Nb4 6.Bc4" "c4 c5 Nc3 Nf6 Nf3 
d5 cxd5 Nxd5 e4 Nb4 Bc4")
+ ("A34" "English: Symmetrical, 3 Knights, 5.d4" "c4 c5 Nc3 Nf6 Nf3 d5 cxd5 
Nxd5 d4")
+ ("A34" "English: Symmetrical, 3 Knights, 5.d4 cxd4" "c4 c5 Nc3 Nf6 Nf3 d5 
cxd5 Nxd5 d4 cxd4")
+ ("A34" "English: Symmetrical, 3 Knights, 5.d4 Nxc3" "c4 c5 Nc3 Nf6 Nf3 d5 
cxd5 Nxd5 d4 Nxc3")
+ ("A35a" "English: Symmetrical" "c4 c5 Nc3 Nc6")
+ ("A35b" "English: Symmetrical, 2.Nc3 Nc6 3.e3" "c4 c5 Nc3 Nc6 e3")
+ ("A35c" "English: Symmetrical, 2.Nc3 Nc6 3.Nf3" "c4 c5 Nc3 Nc6 Nf3")
+ ("A35d" "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6" "c4 c5 Nc3 Nc6 Nf3 g6")
+ ("A35e" "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6 4.e3" "c4 c5 Nc3 Nc6 Nf3 g6 
e3")
+ ("A35f" "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6 4.e3 Bg7" "c4 c5 Nc3 Nc6 
Nf3 g6 e3 Bg7")
+ ("A35g" "English: Symmetrical, Four Knights" "c4 c5 Nc3 Nc6 Nf3 Nf6")
+ ("A35g" "English: Symmetrical, Four Knights, 4.d4" "c4 c5 Nc3 Nc6 Nf3 Nf6 d4")
+ ("A35h" "English: Symmetrical, Four Knights, 4.e3" "c4 c5 Nc3 Nc6 Nf3 Nf6 e3")
+ ("A35i" "English: Symmetrical, Four Knights, 4.e3 e5" "c4 c5 Nc3 Nc6 Nf3 Nf6 
e3 e5")
+ ("A35j" "English: Symmetrical, Four Knights, 4.g3" "c4 c5 Nc3 Nc6 Nf3 Nf6 g3")
+ ("A35k" "English: Symmetrical, Four Knights, 4.g3 d5" "c4 c5 Nc3 Nc6 Nf3 Nf6 
g3 d5")
+ ("A35l" "English: Symmetrical, Four Knights, 4.g3 d5 5.cxd5" "c4 c5 Nc3 Nc6 
Nf3 Nf6 g3 d5 cxd5")
+ ("A36a" "English: Symmetrical, 3.g3" "c4 c5 Nc3 Nc6 g3")
+ ("A36b" "English: Symmetrical, 3.g3 Nf6" "c4 c5 Nc3 Nc6 g3 Nf6")
+ ("A36c" "English: Symmetrical, 3.g3 e6" "c4 c5 Nc3 Nc6 g3 e6")
+ ("A36c" "English: Symmetrical, 3.g3 e6 4.Nf3" "c4 c5 Nc3 Nc6 g3 e6 Nf3")
+ ("A36c" "English: Symmetrical, Keres-Parma System" "c4 c5 Nc3 Nc6 g3 e6 Nf3 
Nf6")
+ ("A36d" "English: Symmetrical, Keres-Parma, Main Line Exchange" "c4 c5 Nc3 
Nc6 g3 e6 Nf3 Nf6 Bg2 Be7 O-O d5 cxd5 Nxd5")
+ ("A36e" "English: Symmetrical, 3.g3 g6" "c4 c5 Nc3 Nc6 g3 g6")
+ ("A36e" "English: Symmetrical, 3.g3 g6" "c4 c5 Nc3 Nc6 g3 g6 Bg2")
+ ("A36e" "English: Symmetrical, 3.g3 g6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7")
+ ("A36f" "English: Symmetrical, 5.d3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3")
+ ("A36g" "English: Symmetrical, 5.a3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 a3")
+ ("A36h" "English: Symmetrical, 5.a3 e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 a3 e6")
+ ("A36i" "English: Symmetrical, 5.a3 d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 a3 d6")
+ ("A36j" "English: Symmetrical, 5.b3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 b3")
+ ("A36k" "English: Symmetrical, 5.e3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3")
+ ("A36l" "English: Symmetrical, 5.e3 e5 (Botvinnik Reversed)" "c4 c5 Nc3 Nc6 
g3 g6 Bg2 Bg7 e3 e5")
+ ("A36m" "English: Symmetrical, 5.e3 e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 e6")
+ ("A36m" "English: Symmetrical, 5.e3 e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 e6 
Nge2")
+ ("A36m" "English: Symmetrical, 5.e3 e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 e3 e6 
Nge2 Nge7")
+ ("A36n" "English: Symmetrical, Botvinnik System" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
e4")
+ ("A36o" "English: Symmetrical, Botvinnik, 5...Nf6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 e4 Nf6")
+ ("A36o" "English: Symmetrical, Botvinnik, 5...Nf6 6.Nge2" "c4 c5 Nc3 Nc6 g3 
g6 Bg2 Bg7 e4 Nf6 Nge2")
+ ("A36p" "English: Symmetrical, Botvinnik, 5...e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 e4 e6")
+ ("A36p" "English: Symmetrical, Botvinnik, 5...e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 e4 e6 Nge2 Nge7")
+ ("A36q" "English: Symmetrical, Botvinnik, 5...e6, 8.d3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 e4 e6 Nge2 Nge7 O-O O-O d3")
+ ("A36r" "English: Symmetrical, Botvinnik, 5...e6, 8.d3 d6" "c4 c5 Nc3 Nc6 g3 
g6 Bg2 Bg7 e4 e6 Nge2 Nge7 O-O O-O d3 d6")
+ ("A36s" "English: Symmetrical, Botvinnik, 5...d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 e4 d6")
+ ("A36t" "English: Symmetrical, Botvinnik, 5...d6 6.Nge2" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 e4 d6 Nge2")
+ ("A36u" "English: Symmetrical, Botvinnik, 5...d6 6.Nge2 Nf6" "c4 c5 Nc3 Nc6 
g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6")
+ ("A36v" "English: Symmetrical, Botvinnik System, 5...d6, 7.O-O O-O" "c4 c5 
Nc3 Nc6 g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6 O-O O-O")
+ ("A36w" "English: Symmetrical, Botvinnik System, 5...d6, 8.d3" "c4 c5 Nc3 Nc6 
g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6 O-O O-O d3")
+ ("A36x" "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 Rb8" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6 O-O O-O d3 Rb8")
+ ("A36y" "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 Ne8" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6 O-O O-O d3 Ne8")
+ ("A36z" "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 a6" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 e4 d6 Nge2 Nf6 O-O O-O d3 a6")
+ ("A37a" "English: Symmetrical, 5.Nf3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3")
+ ("A37b" "English: Symmetrical, 5.Nf3 a6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 a6")
+ ("A37c" "English: Symmetrical, 5.Nf3 Nh6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 
Nh6")
+ ("A37d" "English: Symmetrical, 5.Nf3 Nh6 6.O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nh6 O-O")
+ ("A37e" "English: Symmetrical, 5.Nf3 d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 d6")
+ ("A37f" "English: Symmetrical, 5.Nf3 d6 6.d3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 d6 d3")
+ ("A37g" "English: Symmetrical, 5.Nf3 d6 6.O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 d6 O-O")
+ ("A37h" "English: Symmetrical, 5.Nf3 d6 6.O-O Nh6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 d6 O-O Nh6")
+ ("A37i" "English: Symmetrical, 5.Nf3 e6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 e6")
+ ("A37j" "English: Symmetrical, 5.Nf3 e6 6.d3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e6 d3")
+ ("A37k" "English: Symmetrical, 5.Nf3 e6 6.e3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e6 e3")
+ ("A37l" "English: Symmetrical, 5.Nf3 e6 6.O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e6 O-O")
+ ("A37l" "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 e6 O-O Nge7")
+ ("A37m" "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.e3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 e6 O-O Nge7 e3")
+ ("A37n" "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 e6 O-O Nge7 d3")
+ ("A37o" "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3 O-O" "c4 c5 Nc3 Nc6 
g3 g6 Bg2 Bg7 Nf3 e6 O-O Nge7 d3 O-O")
+ ("A37p" "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3 O-O 8.Bd2" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 Nf3 e6 O-O Nge7 d3 O-O Bd2")
+ ("A37q" "English: Symmetrical, 5.Nf3 e5" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 e5")
+ ("A37r" "English: Symmetrical, 5.Nf3 e5 6.a3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e5 a3")
+ ("A37s" "English: Symmetrical, 5.Nf3 e5 6.d3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e5 d3")
+ ("A37t" "English: Symmetrical, 5.Nf3 e5 6.d3 Nge7" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 e5 d3 Nge7")
+ ("A37u" "English: Symmetrical, 5.Nf3 e5 6.O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 e5 O-O")
+ ("A37u" "English: Symmetrical, 5.Nf3 e5 6.O-O d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 e5 O-O d6")
+ ("A37v" "English: Symmetrical, 5.Nf3 e5 6.O-O d6 7.d3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 e5 O-O d6 d3")
+ ("A37v" "English: Symmetrical, 5.Nf3 e5 6.O-O d6 7.d3 Nge7" "c4 c5 Nc3 Nc6 g3 
g6 Bg2 Bg7 Nf3 e5 O-O d6 d3 Nge7")
+ ("A37w" "English: Symmetrical, 5.Nf3 e5 6.O-O d6 7.d3 Nge7 8.a3" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 Nf3 e5 O-O d6 d3 Nge7 a3")
+ ("A37x" "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 e5 O-O Nge7")
+ ("A37y" "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7 7.d3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 e5 O-O Nge7 d3")
+ ("A37y" "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7 7.d3 O-O" "c4 c5 Nc3 Nc6 
g3 g6 Bg2 Bg7 Nf3 e5 O-O Nge7 d3 O-O")
+ ("A37y" "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7 7.d3 O-O 8.a3" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 Nf3 e5 O-O Nge7 d3 O-O a3")
+ ("A38a" "English: Symmetrical, Main Line" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 
Nf6")
+ ("A38b" "English: Symmetrical, Main Line, 6.d4" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 d4")
+ ("A38c" "English: Symmetrical, Main Line, 6.O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O")
+ ("A38d" "English: Symmetrical, Main Line, 6.O-O d5" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O d5")
+ ("A38e" "English: Symmetrical, Main Line, 6.O-O d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O d6")
+ ("A38f" "English: Symmetrical, Main Line, 6.O-O O-O" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O O-O")
+ ("A38g" "English: Symmetrical, Main Line, 7.Rb1" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O Rb1")
+ ("A38h" "English: Symmetrical, Main Line, 7.b3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O b3")
+ ("A38i" "English: Symmetrical, Main Line, 7.a3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O a3")
+ ("A38j" "English: Symmetrical, Main Line, 7.a3 d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O O-O a3 d6")
+ ("A38k" "English: Symmetrical, Main Line, 7.d3" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O d3")
+ ("A38l" "English: Symmetrical, Main Line, 7.d3 a6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O O-O d3 a6")
+ ("A38m" "English: Symmetrical, Main Line, 7.d3 d5" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O O-O d3 d5")
+ ("A38n" "English: Symmetrical, Main Line, 7.d3 d6" "c4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 Nf3 Nf6 O-O O-O d3 d6")
+ ("A38o" "English: Symmetrical, Main Line, 7.d3 d6 8.Rb1" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d3 d6 Rb1")
+ ("A38p" "English: Symmetrical, Main Line, 7.d3 d6 8.Bd2" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d3 d6 Bd2")
+ ("A38q" "English: Symmetrical, Main Line, 7.d3 d6 8.a3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d3 d6 a3")
+ ("A38r" "English: Symmetrical, Main Line, 7.d3 d6 8.a3 a6" "c4 c5 Nc3 Nc6 g3 
g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d3 d6 a3 a6")
+ ("A39a" "English: Symmetrical, Main Line 7.d4" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O d4")
+ ("A39b" "English: Symmetrical, Main Line 7.d4" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O d4 cxd4")
+ ("A39c" "English: Symmetrical, Main Line 7.d4" "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
Nf3 Nf6 O-O O-O d4 cxd4 Nxd4")
+ ("A39d" "English: Symmetrical, Main Line 7.d4, 8...Qa5" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Qa5")
+ ("A39e" "English: Symmetrical, Main Line 7.d4, 8...Qb6" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Qb6")
+ ("A39e" "English: Symmetrical, Main Line 7.d4, 8...Qb6" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Qb6 Nc2")
+ ("A39f" "English: Symmetrical, Main Line 7.d4, 8...a6" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 a6")
+ ("A39g" "English: Symmetrical, Main Line 7.d4, 8...d6" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 d6")
+ ("A39h" "English: Symmetrical, Main Line 7.d4, 8...Ng4" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Ng4")
+ ("A39i" "English: Symmetrical, Main Line 7.d4, 8...Ng4 9.e3 d6" "c4 c5 Nc3 
Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Ng4 e3 d6")
+ ("A39j" "English: Symmetrical, Main Line 7.d4, 8...Nxd4" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4")
+ ("A39j" "English: Symmetrical, Main Line 7.d4, 9.Qxd4" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4")
+ ("A39k" "English: Symmetrical, Main Line 7.d4, 9...d6" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6")
+ ("A39l" "English: Symmetrical, Main Line 7.d4, 10.Qd2" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd2")
+ ("A39m" "English: Symmetrical, Main Line 7.d4, 10.Qd3" "c4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3")
+ ("A39n" "English: Symmetrical, Main Line 7.d4, 10.Qd3 Bf5"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
Bf5")
+ ("A39o" "English: Symmetrical, Main Line 7.d4, 10.Qd3 Rb8"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
Rb8")
+ ("A39p" "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
a6")
+ ("A39q" "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6 11.Bd2"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
a6 Bd2")
+ ("A39q" "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6 11.Bd2 Rb8"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
a6 Bd2 Rb8")
+ ("A39r" "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6 11.Bd2 Rb8 12.Rac1"
+  "c4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nf3 Nf6 O-O O-O d4 cxd4 Nxd4 Nxd4 Qxd4 d6 Qd3 
a6 Bd2 Rb8 Rac1")
+ ("A40a" "Queen's Pawn Game" "d4")
+ ("A40b" "Queen's Pawn: 1...c6" "d4 c6")
+ ("A40b" "Queen's Pawn: 1...c6 2.Nf3" "d4 c6 Nf3")
+ ("A40b" "Queen's Pawn: 1...c6 2.c4" "d4 c6 c4")
+ ("A40b" "Queen's Pawn: Jadoul" "d4 c6 c4 b5")
+ ("A40c" "Queen's Pawn: Polish Defence" "d4 b5")
+ ("A40c" "Queen's Pawn: Polish Defence" "d4 b5 e4")
+ ("A40c" "Queen's Pawn: Polish Defence" "d4 b5 e4 Bb7")
+ ("A40c" "Queen's Pawn: Polish Defence, Spassky Gambit" "d4 b5 e4 Bb7 Bxb5")
+ ("A40d" "Queen's Pawn: English Defence" "d4 b6")
+ ("A40d" "Queen's Pawn: English Defence, 2.c4" "d4 b6 c4")
+ ("A40d" "Queen's Pawn: English Defence, 2.c4 Bb7" "d4 b6 c4 Bb7")
+ ("A40e" "Queen's Pawn: English Defence, 2.c4 e6" "d4 b6 c4 e6")
+ ("A40f" "Queen's Pawn: English Defence, 3.a3" "d4 b6 c4 e6 a3")
+ ("A40g" "Queen's Pawn: English Defence, 3.e4" "d4 b6 c4 e6 e4")
+ ("A40g" "Queen's Pawn: English Defence, Polli Gambit" "d4 b6 c4 e6 e4 Bb7 f3 
f5")
+ ("A40g" "Queen's Pawn: English Defence, Hartlaub Gambit" "d4 b6 c4 Bb7 Nc3 e6 
e4 f5")
+ ("A40h" "Queen's Pawn: English Defence, 3.Nc3" "d4 b6 c4 e6 Nc3")
+ ("A40i" "Englund Gambit" "d4 e5")
+ ("A40i" "Englund Gambit Accepted" "d4 e5 dxe5")
+ ("A40i" "Englund Gambit: Soller" "d4 e5 dxe5 f6")
+ ("A40i" "Englund Gambit: Hartlaub" "d4 e5 dxe5 d6")
+ ("A40i" "Englund Gambit: 2.dxe5 Nc6" "d4 e5 dxe5 Nc6")
+ ("A40i" "Englund Gambit: 2.dxe5 Nc6 3.Nf3" "d4 e5 dxe5 Nc6 Nf3")
+ ("A40i" "Englund Gambit: Soller Deferred" "d4 e5 dxe5 Nc6 Nf3 f6")
+ ("A40i" "Englund Gambit: Zilbermints" "d4 e5 dxe5 Nc6 Nf3 Nge7")
+ ("A40i" "Englund Gambit: 2.dxe5 Nc6 3.Nf3 Qe7" "d4 e5 dxe5 Nc6 Nf3 Qe7")
+ ("A40j" "Queen's Pawn: Bogoljubow-Miles Defence" "d4 Nc6")
+ ("A40j" "Queen's Pawn: Bogoljubow-Miles, 2.Bg5" "d4 Nc6 Bg5")
+ ("A40j" "Queen's Pawn: Bogoljubow-Miles, 2.d5" "d4 Nc6 d5")
+ ("A40k" "Queen's Pawn: Bogoljubow-Miles, 2.c4" "d4 Nc6 c4")
+ ("A40k" "Queen's Pawn: Bogoljubow-Miles, Pozarek Gambit" "d4 Nc6 c4 e5 dxe5 
Nxe5 Nc3 Nxc4")
+ ("A40l" "Queen's Pawn: Bogoljubow-Miles, 2.Nf3" "d4 Nc6 Nf3")
+ ("A40m" "Queen's Pawn: 1...e6" "d4 e6")
+ ("A40n" "Queen's Pawn: 1...e6 2.Nf3" "d4 e6 Nf3")
+ ("A40n" "Queen's Pawn: 1...e6 2.Nf3 c5" "d4 e6 Nf3 c5")
+ ("A40o" "Queen's Pawn: 1...e6 2.c4" "d4 e6 c4")
+ ("A40p" "Queen's Pawn: Keres Defence" "d4 e6 c4 Bb4+")
+ ("A40q" "Queen's Pawn: Keres Defence, 3.Bd2" "d4 e6 c4 Bb4+ Bd2")
+ ("A40q" "Queen's Pawn: Keres Defence, 3.Bd2 Bxd2+" "d4 e6 c4 Bb4+ Bd2 Bxd2+")
+ ("A40q" "Queen's Pawn: Keres Defence, Kangaroo Variation" "d4 e6 c4 Bb4+ Bd2 
Bxd2+ Qxd2 b6 Nc3 Bb7 e4 Nh6")
+ ("A40r" "Queen's Pawn: Keres Defence, 3.Bd2 a5" "d4 e6 c4 Bb4+ Bd2 a5")
+ ("A40s" "Queen's Pawn: Modern" "d4 g6")
+ ("A40t" "Queen's Pawn: Modern" "d4 g6 Nf3")
+ ("A40u" "Queen's Pawn: Modern" "d4 g6 c4")
+ ("A40u" "Queen's Pawn: Modern" "d4 g6 c4 Bg7")
+ ("A40v" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 e4")
+ ("A40w" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 Nf3")
+ ("A40w" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 Nf3 c5")
+ ("A40x" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 Nc3")
+ ("A40x" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 Nc3 c5")
+ ("A40x" "Queen's Pawn: Modern" "d4 g6 c4 Bg7 Nc3 c5 d5")
+ ("A40y" "Queen's Pawn: Modern, Beefeater Defence" "d4 g6 c4 Bg7 Nc3 c5 d5 
Bxc3+ bxc3 f5")
+ ("A41a" "Neo-Old Indian" "d4 d6")
+ ("A41b" "Neo-Old Indian: 2.Bg5" "d4 d6 Bg5")
+ ("A41c" "Neo-Old Indian: 2.g3" "d4 d6 g3")
+ ("A41d" "Neo-Old Indian: 2.Nf3" "d4 d6 Nf3")
+ ("A41e" "Neo-Old Indian / Modern" "d4 d6 Nf3 g6")
+ ("A41e" "Neo-Old Indian / Modern: 3.Bf4" "d4 d6 Nf3 g6 Bf4")
+ ("A41e" "Neo-Old Indian / Modern: 3.Bf4" "d4 d6 Nf3 g6 Bf4 Bg7")
+ ("A41e" "Neo-Old Indian / Modern: 3.g3" "d4 d6 Nf3 g6 g3")
+ ("A41e" "Neo-Old Indian / Modern: 3.g3" "d4 d6 Nf3 g6 g3 Bg7")
+ ("A41e" "Neo-Old Indian / Modern: 3.g3" "d4 d6 Nf3 g6 g3 Bg7 Bg2")
+ ("A41f" "Neo-Old Indian: Wade Defence" "d4 d6 Nf3 Bg4")
+ ("A41f" "Neo-Old Indian: Wade Defence, 3.e3" "d4 d6 Nf3 Bg4 e3")
+ ("A41f" "Neo-Old Indian: Wade Defence, 3.e3 Nd7" "d4 d6 Nf3 Bg4 e3 Nd7")
+ ("A41f" "Neo-Old Indian: Wade Defence, 3.e3 Nf6" "d4 d6 Nf3 Bg4 e3 Nf6")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4" "d4 d6 Nf3 Bg4 c4")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4 e5" "d4 d6 Nf3 Bg4 c4 e5")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4 e5 4.Nc3" "d4 d6 Nf3 Bg4 c4 e5 
Nc3")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4 e5 4.Nc3 Nc6" "d4 d6 Nf3 Bg4 c4 
e5 Nc3 Nc6")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4 e5 4.dxe5" "d4 d6 Nf3 Bg4 c4 e5 
dxe5")
+ ("A41g" "Neo-Old Indian: Wade Defence, 3.c4 e5 4.dxe5 Nc6 Gambit" "d4 d6 Nf3 
Bg4 c4 e5 dxe5 Nc6")
+ ("A41h" "Neo-Old Indian: Wade Defence, 3.c4 Nd7" "d4 d6 Nf3 Bg4 c4 Nd7")
+ ("A41h" "Neo-Old Indian: Wade Defence, 3.c4 Nd7 4.Nc3" "d4 d6 Nf3 Bg4 c4 Nd7 
Nc3")
+ ("A41h" "Neo-Old Indian: Wade Defence, 3.c4 Nd7 4.Nc3 e5" "d4 d6 Nf3 Bg4 c4 
Nd7 Nc3 e5")
+ ("A41i" "Neo-Old Indian: Wade Defence, 3.c4 Bxf3" "d4 d6 Nf3 Bg4 c4 Bxf3")
+ ("A41j" "Neo-Old Indian: Wade Defence, 3.e4" "d4 d6 Nf3 Bg4 e4")
+ ("A41k" "Neo-Old Indian: Wade Defence, 3.e4 Nf6" "d4 d6 Nf3 Bg4 e4 Nf6")
+ ("A41l" "Neo-Old Indian: 2.c4" "d4 d6 c4")
+ ("A41m" "Neo-Old Indian: 2.c4 e5" "d4 d6 c4 e5")
+ ("A41n" "Neo-Old Indian: 2.c4 e5 3.d5" "d4 d6 c4 e5 d5")
+ ("A41o" "Neo-Old Indian: 2.c4 e5 3.dxe5" "d4 d6 c4 e5 dxe5")
+ ("A41o" "Neo-Old Indian: Queenswap" "d4 d6 c4 e5 dxe5 dxe5 Qxd8+ Kxd8")
+ ("A41p" "Neo-Old Indian: 2.c4 e5 3.Nf3" "d4 d6 c4 e5 Nf3")
+ ("A41p" "Neo-Old Indian: 2.c4 e5 3.Nf3 e4" "d4 d6 c4 e5 Nf3 e4")
+ ("A41q" "Neo-Old Indian: Modern" "d4 d6 c4 g6")
+ ("A41q" "Neo-Old Indian: Modern, 3.e4" "d4 d6 c4 g6 e4")
+ ("A41q" "Neo-Old Indian: Modern, 3.e4 Bg7" "d4 d6 c4 g6 e4 Bg7")
+ ("A41r" "Neo-Old Indian: Modern, 3.Nf3" "d4 d6 c4 g6 Nf3")
+ ("A41r" "Neo-Old Indian: Modern, 3.Nf3 Bg7" "d4 d6 c4 g6 Nf3 Bg7")
+ ("A41r" "Neo-Old Indian: Modern, 3.Nf3 Bg7 4.g3" "d4 d6 c4 g6 Nf3 Bg7 g3")
+ ("A41s" "Neo-Old Indian: Modern, 3.Nf3 Bg7 4.e4" "d4 d6 c4 g6 Nf3 Bg7 e4")
+ ("A41s" "Neo-Old Indian: Modern, Rossolimo Variation" "d4 d6 c4 g6 Nf3 Bg7 e4 
Bg4")
+ ("A41t" "Neo-Old Indian: Modern, 3.Nc3" "d4 d6 c4 g6 Nc3")
+ ("A41t" "Neo-Old Indian: Modern, 3.Nc3 Bg7" "d4 d6 c4 g6 Nc3 Bg7")
+ ("A41u" "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3" "d4 d6 c4 g6 Nc3 Bg7 Nf3")
+ ("A41v" "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3 Bf4" "d4 d6 c4 g6 Nc3 Bg7 
Nf3 Bg4")
+ ("A41w" "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3 Bf4 5.e3" "d4 d6 c4 g6 Nc3 
Bg7 Nf3 Bg4 e3")
+ ("A41w" "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3 Bf4 5.e3 Nc6" "d4 d6 c4 g6 
Nc3 Bg7 Nf3 Bg4 e3 Nc6")
+ ("A42a" "Modern: Averbakh" "d4 d6 c4 g6 Nc3 Bg7 e4")
+ ("A42b" "Modern: Averbakh, Randspringer Variation" "d4 d6 c4 g6 Nc3 Bg7 e4 
f5")
+ ("A42b" "Modern: Averbakh, Randspringer, 5.Nf3" "d4 d6 c4 g6 Nc3 Bg7 e4 f5 
Nf3")
+ ("A42c" "Modern: c4 Pterodactyl" "d4 d6 c4 g6 Nc3 Bg7 e4 c5")
+ ("A42c" "Modern: c4 Pterodactyl" "d4 d6 c4 g6 Nc3 Bg7 e4 c5 Nf3")
+ ("A42c" "Modern: c4 Pterodactyl" "d4 d6 c4 g6 Nc3 Bg7 e4 c5 Nf3 Qa5")
+ ("A42d" "Modern: Averbakh, 4...c6" "d4 d6 c4 g6 Nc3 Bg7 e4 c6")
+ ("A42d" "Modern: Averbakh, 4...c6 5.Be3" "d4 d6 c4 g6 Nc3 Bg7 e4 c6 Be3")
+ ("A42e" "Modern: Averbakh, 4...c6 5.Nf3" "d4 d6 c4 g6 Nc3 Bg7 e4 c6 Nf3")
+ ("A42f" "Modern: Averbakh, 4...Nd7" "d4 d6 c4 g6 Nc3 Bg7 e4 Nd7")
+ ("A42f" "Modern: Averbakh, 4...Nd7 5.Nf3" "d4 d6 c4 g6 Nc3 Bg7 e4 Nd7 Nf3")
+ ("A42g" "Modern: Averbakh, Kotov Variation" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6")
+ ("A42g" "Modern: Averbakh, Kotov, 5.Nf3" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Nf3")
+ ("A42g" "Modern: Averbakh, Kotov, 5.Nge2" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Nge2")
+ ("A42h" "Modern: Averbakh, Kotov, 5.d5" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 d5")
+ ("A42i" "Modern: Averbakh, Kotov, 5.Be3" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3")
+ ("A42j" "Modern: Averbakh, Kotov, 5.Be3 e5" "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3 
e5")
+ ("A42j" "Modern: Averbakh, Kotov, 5.Be3 e5 6.Nge2" "d4 d6 c4 g6 Nc3 Bg7 e4 
Nc6 Be3 e5 Nge2")
+ ("A42k" "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3 e5 d5")
+ ("A42l" "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5 Nce7"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3 e5 d5 Nce7")
+ ("A42l" "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5 Nce7 7.c5"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3 e5 d5 Nce7 c5")
+ ("A42m" "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5 Nce7 7.g4"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 Nc6 Be3 e5 d5 Nce7 g4")
+ ("A42n" "Modern: Averbakh, 4...e5" "d4 d6 c4 g6 Nc3 Bg7 e4 e5")
+ ("A42o" "Modern: Averbakh, 4...e5 5.Nge2" "d4 d6 c4 g6 Nc3 Bg7 e4 e5 Nge2")
+ ("A42p" "Modern: Averbakh, 4...e5 5.Nf3" "d4 d6 c4 g6 Nc3 Bg7 e4 e5 Nf3")
+ ("A42q" "Modern: Averbakh, 4...e5 5.Nf3 Nd7"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 Nf3 Nd7")
+ ("A42r" "Modern: Averbakh, 4...e5 5.Nf3 Nd7 6.Be2"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 Nf3 Nd7 Be2")
+ ("A42s" "Modern: Averbakh, 4...e5 5.Nf3 Nd7 6.Be2 Ne7"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 Nf3 Nd7 Be2 Ne7")
+ ("A42t" "Modern: Averbakh, 4...e5 5.d5" "d4 d6 c4 g6 Nc3 Bg7 e4 e5 d5")
+ ("A42u" "Modern: Averbakh, 4...e5 5.d5 Nd7"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 d5 Nd7")
+ ("A42v" "Modern: Averbakh, 4...e5 5.dxe5" "d4 d6 c4 g6 Nc3 Bg7 e4 e5 dxe5")
+ ("A42v" "Modern: Averbakh, 4...e5 5.dxe5 dxe5"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 dxe5 dxe5")
+ ("A42v" "Modern: Averbakh, Queenswap"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 dxe5 dxe5 Qxd8+ Kxd8")
+ ("A42w" "Modern: Averbakh, Queenswap, 7.f4"
+  "d4 d6 c4 g6 Nc3 Bg7 e4 e5 dxe5 dxe5 Qxd8+ Kxd8 f4")
+ ("A43a" "Old Benoni" "d4 c5")
+ ("A43a" "Old Benoni: Nakamura Gambit" "d4 c5 b4")
+ ("A43b" "Old Benoni: 2.dxc5" "d4 c5 dxc5")
+ ("A43b" "Old Benoni: Cormorant Gambit" "d4 c5 dxc5 b6")
+ ("A43c" "Old Benoni: 2.c3" "d4 c5 c3")
+ ("A43d" "Old Benoni: 2.e3" "d4 c5 e3")
+ ("A43e" "Old Benoni: 2.d5" "d4 c5 d5")
+ ("A43e" "Old Benoni: 2.d5 b5" "d4 c5 d5 b5")
+ ("A43f" "Old Benoni: 2.d5 e6" "d4 c5 d5 e6")
+ ("A43g" "Old Benoni: Franco-Benoni" "d4 c5 d5 e6 e4")
+ ("A43h" "Old Benoni: 2.d5 e6 3.c4" "d4 c5 d5 e6 c4")
+ ("A43h" "Old Benoni: 2.d5 e6 3.c4" "d4 c5 d5 e6 c4 exd5 cxd5")
+ ("A43h" "Old Benoni: 2.d5 e6 3.c4" "d4 c5 d5 e6 c4 exd5 cxd5 d6")
+ ("A43h" "Old Benoni: 2.d5 e6 3.c4" "d4 c5 d5 e6 c4 exd5 cxd5 d6 e4")
+ ("A43i" "Old Benoni: 2.d5 e6 3.c4" "d4 c5 d5 e6 c4 exd5 cxd5 d6 Nc3")
+ ("A43i" "Old Benoni: 2.d5 e6 3.c4"
+  "d4 c5 d5 e6 c4 exd5 cxd5 d6 Nc3 g6 e4 Bg7")
+ ("A43i" "Old Benoni: 2.d5 e6 3.c4"
+  "d4 c5 d5 e6 c4 exd5 cxd5 d6 Nc3 g6 e4 Bg7 Nf3")
+ ("A43j" "Old Benoni: Clarendon Court Defence" "d4 c5 d5 f5")
+ ("A43k" "Old Benoni: 2.d5 Nf6" "d4 c5 d5 Nf6")
+ ("A43k" "Old Benoni: 2.d5 Nf6 3.Nc3" "d4 c5 d5 Nf6 Nc3")
+ ("A43k" "Old Benoni: Woozle" "d4 c5 d5 Nf6 Nc3 Qa5")
+ ("A43l" "Old Benoni: 2.d5 Nf6 3.Nf3" "d4 c5 d5 Nf6 Nf3")
+ ("A43l" "Old Benoni: 2.d5 Nf6 3.Nf3 e6" "d4 c5 d5 Nf6 Nf3 e6")
+ ("A43l" "Old Benoni: 2.d5 Nf6 3.Nf3 e6 4.Nc3" "d4 c5 d5 Nf6 Nf3 e6 Nc3")
+ ("A43m" "Old Benoni: 2.d5 Nf6 3.Nf3 g6" "d4 c5 d5 Nf6 Nf3 g6")
+ ("A43m" "Old Benoni: 2.d5 Nf6 3.Nf3 g6 4.Nc3" "d4 c5 d5 Nf6 Nf3 g6 Nc3")
+ ("A43n" "Old Benoni: Neo-Benko" "d4 c5 d5 Nf6 Nf3 b5")
+ ("A43o" "Old Benoni: Neo-Benko, 4.Bg5" "d4 c5 d5 Nf6 Nf3 b5 Bg5")
+ ("A43p" "Old Benoni: Neo-Benko, 4.Bg5 d6" "d4 c5 d5 Nf6 Nf3 b5 Bg5 d6")
+ ("A43q" "Old Benoni: Neo-Benko, 4.Bg5 Ne4" "d4 c5 d5 Nf6 Nf3 b5 Bg5 Ne4")
+ ("A43r" "Old Benoni: Hawk" "d4 c5 d5 Nf6 Nf3 c4")
+ ("A43r" "Old Benoni: Hawk, 4.e4" "d4 c5 d5 Nf6 Nf3 c4 e4")
+ ("A43s" "Old Benoni: Schmidt" "d4 c5 d5 d6")
+ ("A43s" "Old Benoni: Schmidt, 3.Nf3" "d4 c5 d5 d6 Nf3")
+ ("A43s" "Old Benoni: Schmidt, 3.Nf3 Nf6" "d4 c5 d5 d6 Nf3 Nf6")
+ ("A43s" "Old Benoni: Schmidt, 3.Nc3" "d4 c5 d5 d6 Nc3")
+ ("A43s" "Old Benoni: Schmidt, 3.Nc3 g6" "d4 c5 d5 d6 Nc3 g6")
+ ("A43s" "Old Benoni: Schmidt, 3.Nc3 Nf6" "d4 c5 d5 d6 Nc3 Nf6")
+ ("A43s" "Old Benoni: Schmidt, 3.e4" "d4 c5 d5 d6 e4")
+ ("A43t" "Old Benoni: Schmidt, 3.e4 g6" "d4 c5 d5 d6 e4 g6")
+ ("A43t" "Old Benoni: Schmidt, 3.e4 g6" "d4 c5 d5 d6 e4 g6 Nf3 Bg7")
+ ("A43t" "Old Benoni: Schmidt, 3.e4 g6" "d4 c5 d5 d6 e4 g6 Nf3 Bg7 Be2")
+ ("A43t" "Old Benoni: Schmidt, 3.e4 g6" "d4 c5 d5 d6 e4 g6 Nc3 Bg7")
+ ("A43u" "Old Benoni: Schmidt, 3.e4 Nf6" "d4 c5 d5 d6 e4 Nf6")
+ ("A43u" "Old Benoni: Schmidt, 3.e4 Nf6" "d4 c5 d5 d6 e4 Nf6 Nc3")
+ ("A43u" "Old Benoni: Schmidt, 3.e4 Nf6" "d4 c5 d5 d6 e4 Nf6 Nc3 g6")
+ ("A43u" "Old Benoni: Schmidt, 3.e4 Nf6" "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3")
+ ("A43u" "Old Benoni: Schmidt, 3.e4 Nf6" "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7")
+ ("A43v" "Old Benoni: Schmidt, 6.h3" "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 h3")
+ ("A43v" "Old Benoni: Schmidt, 6.h3"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 h3 O-O")
+ ("A43w" "Old Benoni: Schmidt, 6.Bb5+"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Bb5+")
+ ("A43x" "Old Benoni: Schmidt, 6.Be2"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2")
+ ("A43x" "Old Benoni: Schmidt, 6.Be2 O-O"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O")
+ ("A43x" "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O")
+ ("A43x" "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O e6"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O e6")
+ ("A43y" "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O Na6"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O Na6")
+ ("A43z" "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O Na6 8.h3"
+  "d4 c5 d5 d6 e4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O Na6 h3")
+ ("A44a" "Old Benoni: Czech" "d4 c5 d5 e5")
+ ("A44b" "Old Benoni: Czech, 3.dxe6" "d4 c5 d5 e5 dxe6")
+ ("A44c" "Old Benoni: Czech, 3.c4" "d4 c5 d5 e5 c4")
+ ("A44d" "Old Benoni: Czech, 3.c4 d6" "d4 c5 d5 e5 c4 d6")
+ ("A44e" "Old Benoni: Czech, 3.c4 d6 4.e4" "d4 c5 d5 e5 c4 d6 e4")
+ ("A44f" "Old Benoni: Czech, 3.c4 d6 4.e4 Be7" "d4 c5 d5 e5 c4 d6 e4 Be7")
+ ("A44g" "Old Benoni: Czech, 3.c4 d6 4.e4 Be7 5.Nc3"
+  "d4 c5 d5 e5 c4 d6 e4 Be7 Nc3")
+ ("A44h" "Old Benoni: Czech, 3.c4 d6 4.e4 g6" "d4 c5 d5 e5 c4 d6 e4 g6")
+ ("A44h" "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3"
+  "d4 c5 d5 e5 c4 d6 e4 g6 Nc3")
+ ("A44i" "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7"
+  "d4 c5 d5 e5 c4 d6 e4 g6 Nc3 Bg7")
+ ("A44j" "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7 6.Nf3"
+  "d4 c5 d5 e5 c4 d6 e4 g6 Nc3 Bg7 Nf3")
+ ("A44k" "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7 6.Bd3"
+  "d4 c5 d5 e5 c4 d6 e4 g6 Nc3 Bg7 Bd3")
+ ("A44l" "Old Benoni: Czech, 3.e4" "d4 c5 d5 e5 e4")
+ ("A44m" "Old Benoni: Czech, 3.e4 d6" "d4 c5 d5 e5 e4 d6")
+ ("A44n" "Old Benoni: Czech, 3.e4 d6 4.Nf3" "d4 c5 d5 e5 e4 d6 Nf3")
+ ("A44o" "Old Benoni: Czech, 3.e4 d6 4.Bb5+" "d4 c5 d5 e5 e4 d6 Bb5+")
+ ("A44p" "Old Benoni: Czech, 3.e4 d6 4.Bd3" "d4 c5 d5 e5 e4 d6 Bd3")
+ ("A44q" "Old Benoni: Czech, 3.e4 d6 4.Nc3" "d4 c5 d5 e5 e4 d6 Nc3")
+ ("A44r" "Old Benoni: Czech, 3.e4 d6 4.Nc3 Nf6" "d4 c5 d5 e5 e4 d6 Nc3 Nf6")
+ ("A44s" "Old Benoni: Czech, 3.e4 d6 4.Nc3 g6" "d4 c5 d5 e5 e4 d6 Nc3 g6")
+ ("A44t" "Old Benoni: Czech, 3.e4 d6 4.Nc3 a6" "d4 c5 d5 e5 e4 d6 Nc3 a6")
+ ("A44u" "Old Benoni: Czech, 3.e4 d6 4.Nc3 a6 5.a4 Be7"
+  "d4 c5 d5 e5 e4 d6 Nc3 a6 a4 Be7")
+ ("A44v" "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7" "d4 c5 d5 e5 e4 d6 Nc3 Be7")
+ ("A44w" "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Bb5+"
+  "d4 c5 d5 e5 e4 d6 Nc3 Be7 Bb5+")
+ ("A44x" "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Nf3"
+  "d4 c5 d5 e5 e4 d6 Nc3 Be7 Nf3")
+ ("A44y" "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Nf3 Bg4"
+  "d4 c5 d5 e5 e4 d6 Nc3 Be7 Nf3 Bg4")
+ ("A45a" "Queen's Pawn: Indian" "d4 Nf6")
+ ("A45a" "Indian: Paleface Attack" "d4 Nf6 f3")
+ ("A45a" "Indian: Blackmar-Diemer Gambit (without Nc3)" "d4 Nf6 f3 d5 e4")
+ ("A45a" "Indian: Gedult Attack" "d4 Nf6 f3 d5 g4")
+ ("A45a" "Indian: Omega Gambit" "d4 Nf6 e4")
+ ("A45a" "Indian: Arafat Gambit" "d4 Nf6 e4 Nxe4 Bd3 Nf6 Nf3")
+ ("A45a" "Indian: Gibbins Gambit" "d4 Nf6 g4")
+ ("A45a" "Indian: Gibbins Gambit, Oshima Defence" "d4 Nf6 g4 e5")
+ ("A45a" "Indian: Gibbins Gambit Accepted" "d4 Nf6 g4 Nxg4")
+ ("A45b" "Indian: Canard Opening" "d4 Nf6 f4")
+ ("A45c" "Indian: 2.Nd2" "d4 Nf6 Nd2")
+ ("A45c" "Indian: Lazard Gambit" "d4 Nf6 Nd2 e5")
+ ("A45d" "Indian: 2.e3" "d4 Nf6 e3")
+ ("A45d" "Indian: 2.e3 e6" "d4 Nf6 e3 e6")
+ ("A45d" "Indian: 2.e3 g6" "d4 Nf6 e3 g6")
+ ("A45e" "Indian: 2.c3" "d4 Nf6 c3")
+ ("A45e" "Indian: 2.c3 g6" "d4 Nf6 c3 g6")
+ ("A45e" "Indian: 2.c3 g6 3.Bg5" "d4 Nf6 c3 g6 Bg5")
+ ("A45f" "Indian: 2.Nc3" "d4 Nf6 Nc3")
+ ("A45g" "Indian: 2.Bf4" "d4 Nf6 Bf4")
+ ("A45h" "Indian: 2.g3" "d4 Nf6 g3")
+ ("A45h" "Indian: 2.g3 g6" "d4 Nf6 g3 g6")
+ ("A45i" "Indian: 2.g3 c5" "d4 Nf6 g3 c5")
+ ("A45i" "Indian: 2.g3 c5 3.d5 b5" "d4 Nf6 g3 c5 d5 b5")
+ ("A45j" "Trompowsky Opening" "d4 Nf6 Bg5")
+ ("A45j" "Trompowsky 2...d6" "d4 Nf6 Bg5 d6")
+ ("A45j" "Trompowsky 2...d6 3.Nc3" "d4 Nf6 Bg5 d6 Nc3")
+ ("A45j" "Trompowsky 2...d6 3.Bxf6" "d4 Nf6 Bg5 d6 Bxf6")
+ ("A45k" "Trompowsky 2...g6" "d4 Nf6 Bg5 g6")
+ ("A45k" "Trompowsky 2...g6 3.Nc3" "d4 Nf6 Bg5 g6 Nc3")
+ ("A45k" "Trompowsky 2...g6 3.Bxf6" "d4 Nf6 Bg5 g6 Bxf6")
+ ("A45l" "Trompowsky 2...g6 3.Bxf6 exf6 4.e3" "d4 Nf6 Bg5 g6 Bxf6 exf6 e3")
+ ("A45m" "Trompowsky: 2...e6" "d4 Nf6 Bg5 e6")
+ ("A45m" "Trompowsky: 2...e6 3.Nc3" "d4 Nf6 Bg5 e6 Nc3")
+ ("A45m" "Trompowsky: 2...e6 3.e3" "d4 Nf6 Bg5 e6 e3")
+ ("A45m" "Trompowsky: 2...e6 3.Nd2" "d4 Nf6 Bg5 e6 Nd2")
+ ("A45n" "Trompowsky: 2...e6 3.e4" "d4 Nf6 Bg5 e6 e4")
+ ("A45n" "Trompowsky: 2...e6 3.e4 h6" "d4 Nf6 Bg5 e6 e4 h6")
+ ("A45n" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6" "d4 Nf6 Bg5 e6 e4 h6 Bxf6")
+ ("A45n" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6" "d4 Nf6 Bg5 e6 e4 h6 Bxf6 
Qxf6")
+ ("A45n" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.c3" "d4 Nf6 Bg5 e6 e4 h6 
Bxf6 Qxf6 c3")
+ ("A45o" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3" "d4 Nf6 Bg5 e6 e4 h6 
Bxf6 Qxf6 Nc3")
+ ("A45o" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3 Bb4" "d4 Nf6 Bg5 e6 e4 
h6 Bxf6 Qxf6 Nc3 Bb4")
+ ("A45o" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3 d6" "d4 Nf6 Bg5 e6 e4 
h6 Bxf6 Qxf6 Nc3 d6")
+ ("A45o" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3 d6 6.Qd2" "d4 Nf6 Bg5 
e6 e4 h6 Bxf6 Qxf6 Nc3 d6 Qd2")
+ ("A45o" "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3 d6 6.Qd2 g5" "d4 Nf6 
Bg5 e6 e4 h6 Bxf6 Qxf6 Nc3 d6 Qd2 g5")
+ ("A45p" "Trompowsky: 2...c5" "d4 Nf6 Bg5 c5")
+ ("A45p" "Trompowsky: 2...c5 3.dxc5" "d4 Nf6 Bg5 c5 dxc5")
+ ("A45p" "Trompowsky: 2...c5 3.Nc3" "d4 Nf6 Bg5 c5 Nc3")
+ ("A45p" "Trompowsky: 2...c5 3.d5" "d4 Nf6 Bg5 c5 d5")
+ ("A45p" "Trompowsky: 2...c5 3.d5 Qb6" "d4 Nf6 Bg5 c5 d5 Qb6")
+ ("A45p" "Trompowsky: 2...c5 3.d5 Qb6 4.Nc3" "d4 Nf6 Bg5 c5 d5 Qb6 Nc3")
+ ("A45q" "Trompowsky: 2...c5 3.Bxf6" "d4 Nf6 Bg5 c5 Bxf6")
+ ("A45q" "Trompowsky: 2...c5 3.Bxf6 gxf6" "d4 Nf6 Bg5 c5 Bxf6 gxf6")
+ ("A45q" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5" "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1 f5"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1 f5")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1 f5 6.c4"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1 f5 c4")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1 f5 6.g3"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1 f5 g3")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1 f5 6.e3"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1 f5 e3")
+ ("A45r" "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6 5.Qc1 f5 6.e3 Bg7"
+  "d4 Nf6 Bg5 c5 Bxf6 gxf6 d5 Qb6 Qc1 f5 e3 Bg7")
+ ("A45s" "Trompowsky: 2...Ne4" "d4 Nf6 Bg5 Ne4")
+ ("A45s" "Trompowsky: 2...Ne4 3.h4" "d4 Nf6 Bg5 Ne4 h4")
+ ("A45s" "Trompowsky: 2...Ne4 3.h4 d5" "d4 Nf6 Bg5 Ne4 h4 d5")
+ ("A45s" "Trompowsky: 2...Ne4 3.h4 c5" "d4 Nf6 Bg5 Ne4 h4 c5")
+ ("A45s" "Trompowsky: 2...Ne4 3.h4 c5 4.dxc5" "d4 Nf6 Bg5 Ne4 h4 c5 dxc5")
+ ("A45s" "Trompowsky: 2...Ne4 3.h4 c5 4.d5" "d4 Nf6 Bg5 Ne4 h4 c5 d5")
+ ("A45t" "Trompowsky: 2...Ne4 3.Bh4" "d4 Nf6 Bg5 Ne4 Bh4")
+ ("A45t" "Trompowsky: 2...Ne4 3.Bh4 g5" "d4 Nf6 Bg5 Ne4 Bh4 g5")
+ ("A45t" "Trompowsky: 2...Ne4 3.Bh4 d5" "d4 Nf6 Bg5 Ne4 Bh4 d5")
+ ("A45t" "Trompowsky: 2...Ne4 3.Bh4 c5" "d4 Nf6 Bg5 Ne4 Bh4 c5")
+ ("A45t" "Trompowsky: 2...Ne4 3.Bh4 c5 4.f3" "d4 Nf6 Bg5 Ne4 Bh4 c5 f3")
+ ("A45u" "Trompowsky: 2...Ne4 3.Bf4" "d4 Nf6 Bg5 Ne4 Bf4")
+ ("A45u" "Trompowsky: Borg Variation" "d4 Nf6 Bg5 Ne4 Bf4 g5")
+ ("A45u" "Trompowsky: 2...Ne4 3.Bf4 d5" "d4 Nf6 Bg5 Ne4 Bf4 d5")
+ ("A45u" "Trompowsky: 2...Ne4 3.Bf4 d5 4.Nd2" "d4 Nf6 Bg5 Ne4 Bf4 d5 Nd2")
+ ("A45v" "Trompowsky: 2...Ne4 3.Bf4 d5 4.f3" "d4 Nf6 Bg5 Ne4 Bf4 d5 f3")
+ ("A45v" "Trompowsky: 2...Ne4 3.Bf4 d5 4.f3 Nf6"
+  "d4 Nf6 Bg5 Ne4 Bf4 d5 f3 Nf6")
+ ("A45w" "Trompowsky: 2...Ne4 3.Bf4 d5 4.e3" "d4 Nf6 Bg5 Ne4 Bf4 d5 e3")
+ ("A45w" "Trompowsky: 2...Ne4 3.Bf4 d5 4.e3 c5" "d4 Nf6 Bg5 Ne4 Bf4 d5 e3 c5")
+ ("A45x" "Trompowsky: 2...Ne4 3.Bf4 c5" "d4 Nf6 Bg5 Ne4 Bf4 c5")
+ ("A45x" "Trompowsky: 2...Ne4 3.Bf4 c5 4.d5" "d4 Nf6 Bg5 Ne4 Bf4 c5 d5")
+ ("A45x" "Trompowsky: 2...Ne4 3.Bf4 c5 4.d5 Qb6" "d4 Nf6 Bg5 Ne4 Bf4 c5 d5 
Qb6")
+ ("A45y" "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3" "d4 Nf6 Bg5 Ne4 Bf4 c5 f3")
+ ("A45y" "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3 Qa5+" "d4 Nf6 Bg5 Ne4 Bf4 c5 f3 
Qa5+")
+ ("A45y" "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3 Qa5+ 5.c3 Nf6 6.d5" "d4 Nf6 Bg5 
Ne4 Bf4 c5 f3 Qa5+ c3 Nf6 d5")
+ ("A45z" "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3 Qa5+ 5.c3 Nf6 6.Nd2" "d4 Nf6 Bg5 
Ne4 Bf4 c5 f3 Qa5+ c3 Nf6 Nd2")
+ ("A46a" "Indian: 2.Nf3" "d4 Nf6 Nf3")
+ ("A46a" "Indian: Döry Defence" "d4 Nf6 Nf3 Ne4")
+ ("A46b" "Indian: 2.Nf3 b5" "d4 Nf6 Nf3 b5")
+ ("A46b" "Indian: 2.Nf3 b5 3.g3" "d4 Nf6 Nf3 b5 g3")
+ ("A46c" "Neo-Benoni" "d4 Nf6 Nf3 c5")
+ ("A46c" "Neo-Benoni 3.dxc5" "d4 Nf6 Nf3 c5 dxc5")
+ ("A46c" "Neo-Benoni: 3.e3" "d4 Nf6 Nf3 c5 e3")
+ ("A46c" "Neo-Benoni: 3.e3 cxd4" "d4 Nf6 Nf3 c5 e3 cxd4")
+ ("A46d" "Neo-Benoni: 3.c3" "d4 Nf6 Nf3 c5 c3")
+ ("A46d" "Neo-Benoni: 3.c3 cxd4" "d4 Nf6 Nf3 c5 c3 cxd4")
+ ("A46d" "Neo-Benoni: 3.c3 b6" "d4 Nf6 Nf3 c5 c3 b6")
+ ("A46d" "Neo-Benoni: 3.c3 g6" "d4 Nf6 Nf3 c5 c3 g6")
+ ("A46e" "Neo-Benoni: 3.c3 e6" "d4 Nf6 Nf3 c5 c3 e6")
+ ("A46f" "Neo-Benoni: 3.g3" "d4 Nf6 Nf3 c5 g3")
+ ("A46f" "Neo-Benoni: 3.g3 cxd4" "d4 Nf6 Nf3 c5 g3 cxd4")
+ ("A46f" "Neo-Benoni: 3.g3 cxd4 4.Nxd4" "d4 Nf6 Nf3 c5 g3 cxd4 Nxd4")
+ ("A46g" "Indian: 2.Nf3 d6" "d4 Nf6 Nf3 d6")
+ ("A46h" "Indian: 2.Nf3 d6 3.g3" "d4 Nf6 Nf3 d6 g3")
+ ("A46i" "Indian: 2.Nf3 d6 3.Bg5" "d4 Nf6 Nf3 d6 Bg5")
+ ("A46i" "Indian: 2.Nf3 d6 3.Bg5 Nbd7" "d4 Nf6 Nf3 d6 Bg5 Nbd7")
+ ("A46j" "Indian: 2.Nf3 e6" "d4 Nf6 Nf3 e6")
+ ("A46j" "Indian: 2.Nf3 e6 3.c3" "d4 Nf6 Nf3 e6 c3")
+ ("A46j" "Indian: 2.Nf3 e6 3.c3 b6" "d4 Nf6 Nf3 e6 c3 b6")
+ ("A46j" "Indian: 1.d4 Nf6 2.Nf3 e6 3.c3 b6 4.Bg5" "d4 Nf6 Nf3 e6 c3 b6 Bg5")
+ ("A46k" "Indian: 1.d4 Nf6 2.Nf3 e6 3.e3" "d4 Nf6 Nf3 e6 e3")
+ ("A46k" "Indian: 1.d4 Nf6 2.Nf3 e6 3.e3 c5" "d4 Nf6 Nf3 e6 e3 c5")
+ ("A46l" "Indian: 1.d4 Nf6 2.Nf3 e6 3.e3 c5 4.Bd3" "d4 Nf6 Nf3 e6 e3 c5 Bd3")
+ ("A46m" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3" "d4 Nf6 Nf3 e6 g3")
+ ("A46m" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 b5" "d4 Nf6 Nf3 e6 g3 b5")
+ ("A46m" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 b5 4.Bg2 Bb7" "d4 Nf6 Nf3 e6 g3 b5 
Bg2 Bb7")
+ ("A46n" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 b5 4.Bg2 Bb7 5.O-O" "d4 Nf6 Nf3 e6 g3 
b5 Bg2 Bb7 O-O")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5" "d4 Nf6 Nf3 e6 g3 c5")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5 4.Bg2" "d4 Nf6 Nf3 e6 g3 c5 Bg2")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5 4.Bg2 cxd4" "d4 Nf6 Nf3 e6 g3 c5 
Bg2 cxd4")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5 4.Bg2 Nc6" "d4 Nf6 Nf3 e6 g3 c5 
Bg2 Nc6")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5 4.Bg2 Qc7" "d4 Nf6 Nf3 e6 g3 c5 
Bg2 Qc7")
+ ("A46o" "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5 4.Bg2 Qa5+" "d4 Nf6 Nf3 e6 g3 c5 
Bg2 Qa5+")
+ ("A46p" "Indian: London System" "d4 Nf6 Nf3 e6 Bf4")
+ ("A46p" "Indian: London, 3...c5" "d4 Nf6 Nf3 e6 Bf4 c5")
+ ("A46p" "Indian: London, 3...c5 4.e3" "d4 Nf6 Nf3 e6 Bf4 c5 e3")
+ ("A46p" "Indian: London, 3...c5 4.e3 Qb6" "d4 Nf6 Nf3 e6 Bf4 c5 e3 Qb6")
+ ("A46q" "Indian: London, 3...c5 4.c3" "d4 Nf6 Nf3 e6 Bf4 c5 c3")
+ ("A46r" "Torre Attack" "d4 Nf6 Nf3 e6 Bg5")
+ ("A46r" "Torre Attack: 3...b6" "d4 Nf6 Nf3 e6 Bg5 b6")
+ ("A46r" "Torre Attack: 3...Be7" "d4 Nf6 Nf3 e6 Bg5 Be7")
+ ("A46s" "Torre Attack: 3...c5" "d4 Nf6 Nf3 e6 Bg5 c5")
+ ("A46s" "Torre Attack: Wagner Gambit" "d4 Nf6 Nf3 e6 Bg5 c5 e4")
+ ("A46t" "Torre Attack: 3...c5 4.c3" "d4 Nf6 Nf3 e6 Bg5 c5 c3")
+ ("A46t" "Torre Attack: 3...c5 4.c3 Qb6" "d4 Nf6 Nf3 e6 Bg5 c5 c3 Qb6")
+ ("A46t" "Torre Attack: 3...c5 4.c3 h6" "d4 Nf6 Nf3 e6 Bg5 c5 c3 h6")
+ ("A46t" "Torre Attack: 3...c5 4.c3 h6 5.Bh4" "d4 Nf6 Nf3 e6 Bg5 c5 c3 h6 Bh4")
+ ("A46u" "Torre Attack: 3...c5 4.e3" "d4 Nf6 Nf3 e6 Bg5 c5 e3")
+ ("A46u" "Torre Attack: 3...c5 4.e3 cxd4" "d4 Nf6 Nf3 e6 Bg5 c5 e3 cxd4")
+ ("A46u" "Torre Attack: 3...c5 4.e3 Qb6" "d4 Nf6 Nf3 e6 Bg5 c5 e3 Qb6")
+ ("A46v" "Torre Attack: 3...c5 4.e3 Be7" "d4 Nf6 Nf3 e6 Bg5 c5 e3 Be7")
+ ("A46w" "Torre Attack: 3...c5 4.e3 h6" "d4 Nf6 Nf3 e6 Bg5 c5 e3 h6")
+ ("A46w" "Torre Attack: 3...c5 4.e3 h6 5.Bh4" "d4 Nf6 Nf3 e6 Bg5 c5 e3 h6 Bh4")
+ ("A46x" "Torre Attack: 3...h6" "d4 Nf6 Nf3 e6 Bg5 h6")
+ ("A46x" "Torre Attack: 3...h6 4.Bh4" "d4 Nf6 Nf3 e6 Bg5 h6 Bh4")
+ ("A46x" "Torre Attack: 3...h6 4.Bh4 g5" "d4 Nf6 Nf3 e6 Bg5 h6 Bh4 g5")
+ ("A46y" "Torre Attack: 3...h6 4.Bxf6" "d4 Nf6 Nf3 e6 Bg5 h6 Bxf6")
+ ("A46y" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4"
+  "d4 Nf6 Nf3 e6 Bg5 h6 Bxf6 Qxf6 e4")
+ ("A46y" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 b6" "d4 Nf6 Nf3 e6 Bg5 h6 Bxf6 
Qxf6 e4 b6")
+ ("A46y" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 c5" "d4 Nf6 Nf3 e6 Bg5 h6 Bxf6 
Qxf6 e4 c5")
+ ("A46z" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6" "d4 Nf6 Nf3 e6 Bg5 h6 Bxf6 
Qxf6 e4 d6")
+ ("A46z" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6 6.Nc3" "d4 Nf6 Nf3 e6 Bg5 
h6 Bxf6 Qxf6 e4 d6 Nc3")
+ ("A46z" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6 6.Nc3 g6" "d4 Nf6 Nf3 e6 
Bg5 h6 Bxf6 Qxf6 e4 d6 Nc3 g6")
+ ("A46z" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6 6.Nc3 Nd7" "d4 Nf6 Nf3 e6 
Bg5 h6 Bxf6 Qxf6 e4 d6 Nc3 Nd7")
+ ("A46z" "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6 6.Nc3 Nd7 7.Qd2" "d4 Nf6 
Nf3 e6 Bg5 h6 Bxf6 Qxf6 e4 d6 Nc3 Nd7 Qd2")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 e6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 e6 e3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 e6 e3 c5")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 Bb7")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 Bb7 e3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bf4 Bb7 e3 e6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bg5")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 Bg5 Bb7")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 e6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 e6 Bd3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 e6 Bd3 c5")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 Bb7")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 Bb7 Bd3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 Bb7 Bd3 e6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 Bb7 Bd3 e6 O-O")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 e3 Bb7 Bd3 e6 O-O c5")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 g3")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 g3 e6")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 g3 Bb7 Bg2")
+ ("A47" "Neo-Queen's Indian" "d4 Nf6 Nf3 b6 g3 Bb7 Bg2 e6")
+ ("A47" "Neo-Queen's Indian: Marienbad System" "d4 Nf6 Nf3 b6 g3 Bb7 Bg2 c5")
+ ("A47" "Neo-Queen's Indian: Marienbad System, Berg Variation" "d4 Nf6 Nf3 b6 
g3 Bb7 Bg2 c5 c4 cxd4 Qxd4")
+ ("A48a" "Neo-King's Indian" "d4 Nf6 Nf3 g6")
+ ("A48a" "Neo-King's Indian" "d4 Nf6 Nf3 g6 Nbd2")
+ ("A48b" "Neo-King's Indian" "d4 Nf6 Nf3 g6 c3")
+ ("A48b" "Neo-King's Indian" "d4 Nf6 Nf3 g6 c3 Bg7")
+ ("A48c" "Neo-King's Indian" "d4 Nf6 Nf3 g6 e3")
+ ("A48c" "Neo-King's Indian" "d4 Nf6 Nf3 g6 e3 Bg7")
+ ("A48d" "Neo-King's Indian" "d4 Nf6 Nf3 g6 e3 c5")
+ ("A48e" "Neo-King's Indian" "d4 Nf6 Nf3 g6 Nc3")
+ ("A48f" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4")
+ ("A48g" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7")
+ ("A48h" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 Nbd2")
+ ("A48i" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 c3")
+ ("A48j" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 e3")
+ ("A48j" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 e3 O-O")
+ ("A48k" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 e3 O-O Be2")
+ ("A48k" "Neo-King's Indian: London System"
+  "d4 Nf6 Nf3 g6 Bf4 Bg7 e3 O-O Be2 d6")
+ ("A48l" "Neo-King's Indian: London System" "d4 Nf6 Nf3 g6 Bf4 Bg7 e3 O-O Be2 
d6 h3")
+ ("A48m" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5")
+ ("A48n" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Ne4")
+ ("A48o" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7")
+ ("A48o" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 c3")
+ ("A48o" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 e3")
+ ("A48p" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nc3")
+ ("A48q" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2")
+ ("A48r" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O")
+ ("A48s" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O e4")
+ ("A48t" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O e4 
d6")
+ ("A48u" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O e4 
d5")
+ ("A48v" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O c3")
+ ("A48v" "Neo-King's Indian: Torre Attack"
+  "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O c3 d6")
+ ("A48w" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O c3 
d6 e4")
+ ("A48x" "Neo-King's Indian: Torre Attack" "d4 Nf6 Nf3 g6 Bg5 Bg7 Nbd2 O-O c3 
d6 e4 c5")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7 Bg2")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7 Bg2 O-O")
+ ("A49" "Neo-King's Indian: Double Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7 
Bg2 O-O b3 d6 Bb2")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7 Bg2 O-O 
O-O")
+ ("A49" "Neo-King's Indian: Fianchetto System" "d4 Nf6 Nf3 g6 g3 Bg7 Bg2 O-O 
O-O d6")
+ ("A50a" "Indian: 2.c4" "d4 Nf6 c4")
+ ("A50b" "Indian: Mexican Defence (Two Knights Tango)" "d4 Nf6 c4 Nc6")
+ ("A50c" "Indian: Mexican Defence, 3.Nc3" "d4 Nf6 c4 Nc6 Nc3")
+ ("A50d" "Indian: Mexican Defence, 3.Nf3" "d4 Nf6 c4 Nc6 Nf3")
+ ("A50d" "Indian: Mexican Defence, 3.Nf3 d6" "d4 Nf6 c4 Nc6 Nf3 d6")
+ ("A50e" "Indian: Mexican Defence, 3.Nf3 e6" "d4 Nf6 c4 Nc6 Nf3 e6")
+ ("A50f" "Indian: Mexican Defence, 3.Nf3 e6 4.a3" "d4 Nf6 c4 Nc6 Nf3 e6 a3")
+ ("A50g" "Indian: Mexican Defence, 3.Nf3 e6 4.Nc3" "d4 Nf6 c4 Nc6 Nf3 e6 Nc3")
+ ("A50h" "Indian: Slav-Indian" "d4 Nf6 c4 c6")
+ ("A50i" "Indian: Slav-Indian, 3.Nf3" "d4 Nf6 c4 c6 Nf3")
+ ("A50j" "Indian: Slav-Indian, 3.Nc3" "d4 Nf6 c4 c6 Nc3")
+ ("A50k" "Indian: 2.c4 a6" "d4 Nf6 c4 a6")
+ ("A50l" "Indian: Queen's Indian Accelerated" "d4 Nf6 c4 b6")
+ ("A50m" "Indian: Queen's Indian Accelerated" "d4 Nf6 c4 b6 Nc3 Bb7")
+ ("A50n" "Indian: Queen's Indian Accelerated" "d4 Nf6 c4 b6 Nc3 Bb7 Qc2")
+ ("A51a" "Budapest" "d4 Nf6 c4 e5")
+ ("A51b" "Budapest: 3.e3" "d4 Nf6 c4 e5 e3")
+ ("A51c" "Budapest: 3.d5" "d4 Nf6 c4 e5 d5")
+ ("A51d" "Budapest: 3.dxe5" "d4 Nf6 c4 e5 dxe5")
+ ("A51d" "Budapest: Fajarowicz" "d4 Nf6 c4 e5 dxe5 Ne4")
+ ("A51e" "Budapest: Fajarowicz, Steiner Variation" "d4 Nf6 c4 e5 dxe5 Ne4 Qc2")
+ ("A51f" "Budapest: Fajarowicz, 4.Nd2" "d4 Nf6 c4 e5 dxe5 Ne4 Nd2")
+ ("A51g" "Budapest: Fajarowicz, 4.a3" "d4 Nf6 c4 e5 dxe5 Ne4 a3")
+ ("A51h" "Budapest: Fajarowicz, 4.Nf3" "d4 Nf6 c4 e5 dxe5 Ne4 Nf3")
+ ("A51i" "Budapest: Fajarowicz, 4.Nf3 Bb4+" "d4 Nf6 c4 e5 dxe5 Ne4 Nf3 Bb4+")
+ ("A51j" "Budapest: Fajarowicz, 4.Nf3 Nc6" "d4 Nf6 c4 e5 dxe5 Ne4 Nf3 Nc6")
+ ("A51k" "Budapest: Fajarowicz, 4.Nf3 Nc6 5.a3" "d4 Nf6 c4 e5 dxe5 Ne4 Nf3 Nc6 
a3")
+ ("A52a" "Budapest: 3...Ng4" "d4 Nf6 c4 e5 dxe5 Ng4")
+ ("A52b" "Budapest: 3...Ng4 4.e3" "d4 Nf6 c4 e5 dxe5 Ng4 e3")
+ ("A52c" "Budapest: Alekhine Variation" "d4 Nf6 c4 e5 dxe5 Ng4 e4")
+ ("A52c" "Budapest: Alekhine, Balogh Gambit" "d4 Nf6 c4 e5 dxe5 Ng4 e4 d6")
+ ("A52d" "Budapest: Alekhine, Abonyi Variation" "d4 Nf6 c4 e5 dxe5 Ng4 e4 Nxe5 
f4 Nec6")
+ ("A52e" "Budapest: Adler Variation" "d4 Nf6 c4 e5 dxe5 Ng4 Nf3")
+ ("A52f" "Budapest: Adler, 4...Bc5" "d4 Nf6 c4 e5 dxe5 Ng4 Nf3 Bc5")
+ ("A52g" "Budapest: Adler, 4...Bc5 5.e3 Nc6 6.Be2" "d4 Nf6 c4 e5 dxe5 Ng4 Nf3 
Bc5 e3 Nc6 Be2")
+ ("A52h" "Budapest: Rubinstein Variation" "d4 Nf6 c4 e5 dxe5 Ng4 Bf4")
+ ("A52i" "Budapest: Rubinstein, 4...Bb4+" "d4 Nf6 c4 e5 dxe5 Ng4 Bf4 Bb4+")
+ ("A52j" "Budapest: Rubinstein, 4...Nc6" "d4 Nf6 c4 e5 dxe5 Ng4 Bf4 Nc6")
+ ("A52k" "Budapest: Rubinstein, Main Line" "d4 Nf6 c4 e5 dxe5 Ng4 Bf4 Nc6 Nf3 
Bb4+")
+ ("A52l" "Budapest: Rubinstein, Main Line, 6.Nbd2" "d4 Nf6 c4 e5 dxe5 Ng4 Bf4 
Nc6 Nf3 Bb4+ Nbd2")
+ ("A52m" "Budapest: Rubinstein, Main Line, 6.Nbd2 Qe7 7.e3" "d4 Nf6 c4 e5 dxe5 
Ng4 Bf4 Nc6 Nf3 Bb4+ Nbd2 Qe7 e3")
+ ("A53" "Old Indian" "d4 Nf6 c4 d6")
+ ("A53" "Old Indian: 3.g3" "d4 Nf6 c4 d6 g3")
+ ("A53" "Old Indian: 3.Nf3" "d4 Nf6 c4 d6 Nf3")
+ ("A53" "Old Indian: 3.Nf3 c6" "d4 Nf6 c4 d6 Nf3 c6")
+ ("A53" "Old Indian: 3.Nf3 Nbd7" "d4 Nf6 c4 d6 Nf3 Nbd7")
+ ("A53" "Old Indian: 3.Nf3 Bf5" "d4 Nf6 c4 d6 Nf3 Bf5")
+ ("A53" "Old Indian: 3.Nf3 Bg4" "d4 Nf6 c4 d6 Nf3 Bg4")
+ ("A53" "Old Indian: 3.Nf3 Bg4 4.Qb3" "d4 Nf6 c4 d6 Nf3 Bg4 Qb3")
+ ("A53" "Old Indian: 3.Nf3 Bg4 4.Nc3" "d4 Nf6 c4 d6 Nf3 Bg4 Nc3")
+ ("A53" "Old Indian: 3.Nc3" "d4 Nf6 c4 d6 Nc3")
+ ("A53" "Old Indian: 3.Nc3 c6" "d4 Nf6 c4 d6 Nc3 c6")
+ ("A53" "Old Indian: 3.Nc3 Nbd7" "d4 Nf6 c4 d6 Nc3 Nbd7")
+ ("A53" "Old Indian: 3.Nc3 Nbd7 4.Nf3" "d4 Nf6 c4 d6 Nc3 Nbd7 Nf3")
+ ("A53" "Old Indian: 3.Nc3 Nbd7 4.e4" "d4 Nf6 c4 d6 Nc3 Nbd7 e4")
+ ("A53" "Old Indian: 3.Nc3 Nbd7 4.e4 e5" "d4 Nf6 c4 d6 Nc3 Nbd7 e4 e5")
+ ("A53" "Old Indian: 3.Nc3 Nbd7 4.e4 e5 5.d5" "d4 Nf6 c4 d6 Nc3 Nbd7 e4 e5 d5")
+ ("A53" "Old Indian: 3.Nc3 Nbd7 4.e4 e5 5.Nge2" "d4 Nf6 c4 d6 Nc3 Nbd7 e4 e5 
Nge2")
+ ("A53" "Old Indian: Janowski" "d4 Nf6 c4 d6 Nc3 Bf5")
+ ("A53" "Old Indian: Ukrainian" "d4 Nf6 c4 d6 Nc3 e5")
+ ("A53" "Old Indian: Ukranian, 4.e4" "d4 Nf6 c4 d6 Nc3 e5 e4")
+ ("A53" "Old Indian: Ukranian, 4.e3" "d4 Nf6 c4 d6 Nc3 e5 e3")
+ ("A53" "Old Indian: Dus-Khotimirsky" "d4 Nf6 c4 d6 Nc3 e5 e3 Nbd7 Bd3")
+ ("A53" "Old Indian: Ukrainian, 4.d5" "d4 Nf6 c4 d6 Nc3 e5 d5")
+ ("A53" "Old Indian: Ukrainian, 4.d5 Be7" "d4 Nf6 c4 d6 Nc3 e5 d5 Be7")
+ ("A53" "Old Indian: Ukrainian, 4.dxe5" "d4 Nf6 c4 d6 Nc3 e5 dxe5")
+ ("A53" "Old Indian: Ukrainian, Queenswap" "d4 Nf6 c4 d6 Nc3 e5 dxe5 dxe5 
Qxd8+ Kxd8")
+ ("A53" "Old Indian: Ukrainian, Queenswap, 6.Nf3" "d4 Nf6 c4 d6 Nc3 e5 dxe5 
dxe5 Qxd8+ Kxd8 Nf3")
+ ("A53" "Old Indian: Ukrainian, Queenswap, 6.Nf3 Nfd7" "d4 Nf6 c4 d6 Nc3 e5 
dxe5 dxe5 Qxd8+ Kxd8 Nf3 Nfd7")
+ ("A54" "Old Indian: 4.Nf3" "d4 Nf6 c4 d6 Nc3 e5 Nf3")
+ ("A54" "Old Indian: 4.Nf3 exd4" "d4 Nf6 c4 d6 Nc3 e5 Nf3 exd4")
+ ("A54" "Old Indian: 4.Nf3 Nc6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nc6")
+ ("A54" "Old Indian: 4.Nf3 e4" "d4 Nf6 c4 d6 Nc3 e5 Nf3 e4")
+ ("A54" "Old Indian: 4.Nf3 e4 5.Ng5" "d4 Nf6 c4 d6 Nc3 e5 Nf3 e4 Ng5")
+ ("A54" "Old Indian: 4.Nf3 Nbd7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7")
+ ("A54" "Old Indian: 5.e3" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e3")
+ ("A54" "Old Indian: 5.g3" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3")
+ ("A54" "Old Indian: 5.g3 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 c6")
+ ("A54" "Old Indian: 5.g3 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 c6 Bg2")
+ ("A54" "Old Indian: 5.g3 g6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 g6")
+ ("A54" "Old Indian: 5.g3 g6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 g6 Bg2")
+ ("A54" "Old Indian: 5.g3 g6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 g6 Bg2 Bg7")
+ ("A54" "Old Indian: 5.g3 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 Be7")
+ ("A54" "Old Indian: 5.g3 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 Be7 Bg2")
+ ("A54" "Old Indian: 5.g3 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 Be7 Bg2 O-O")
+ ("A54" "Old Indian: 5.g3 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 Be7 Bg2 O-O 
O-O")
+ ("A54" "Old Indian: 5.g3 Be7, Main Line" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 g3 Be7 
Bg2 O-O O-O c6")
+ ("A54" "Old Indian: 5.g3 Be7, Main Line, 8.Qc2" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 
g3 Be7 Bg2 O-O O-O c6 Qc2")
+ ("A54" "Old Indian: 5.Bg5" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5")
+ ("A54" "Old Indian: 5.Bg5 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 c6")
+ ("A54" "Old Indian: 5.Bg5 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7")
+ ("A54" "Old Indian: 5.Bg5 Be7 6.e3"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7 e3")
+ ("A54" "Old Indian: 5.Bg5 Be7 6.e3 c6"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7 e3 c6")
+ ("A54" "Old Indian: 5.Bg5 Be7 6.e3 O-O"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7 e3 O-O")
+ ("A54" "Old Indian: 5.Bg5 Be7 6.e3 O-O 7.Qc2"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7 e3 O-O Qc2")
+ ("A54" "Old Indian: 5.Bg5 Be7 6.e3 O-O 7.Qc2 c6"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 Bg5 Be7 e3 O-O Qc2 c6")
+ ("A55a" "Old Indian: 5.e4" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4")
+ ("A55b" "Old Indian: 5.e4 g6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 g6")
+ ("A55c" "Old Indian: 5.e4 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 c6")
+ ("A55c" "Old Indian: 5.e4 c6 6.Be2" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 c6 Be2")
+ ("A55d" "Old Indian: 5.e4 Be7" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 g3")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 O-O" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 
g3 O-O")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 
g3 c6")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 
Be7 g3 c6 Bg2")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O" "d4 Nf6 c4 d6 Nc3 e5 
Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O O-O")
+ ("A55e" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O Qc7" "d4 Nf6 c4 d6 Nc3 
e5 Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O O-O Qc7")
+ ("A55f" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O Re8" "d4 Nf6 c4 d6 Nc3 
e5 Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O O-O Re8")
+ ("A55g" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O a6" "d4 Nf6 c4 d6 Nc3 
e5 Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O O-O a6")
+ ("A55h" "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O a6 9.a4" "d4 Nf6 c4 d6 
Nc3 e5 Nf3 Nbd7 e4 Be7 g3 c6 Bg2 O-O O-O a6 a4")
+ ("A55i" "Old Indian: 5.e4 Be7 6.Be2" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 
Be2")
+ ("A55i" "Old Indian: 5.e4 Be7 6.Be2 O-O"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 O-O")
+ ("A55j" "Old Indian: 5.e4 Be7 6.Be2 c6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 
Be2 c6")
+ ("A55j" "Old Indian: 5.e4 Be7 6.Be2 c6 7.O-O" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 
e4 Be7 Be2 c6 O-O")
+ ("A55j" "Old Indian: 5.e4 Be7 6.Be2 c6 7.O-O a6" "d4 Nf6 c4 d6 Nc3 e5 Nf3 
Nbd7 e4 Be7 Be2 c6 O-O a6")
+ ("A55k" "Old Indian: Main Line" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 
O-O O-O")
+ ("A55l" "Old Indian: Main Line, 8.h3" "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 
Be2 c6 O-O O-O h3")
+ ("A55m" "Old Indian: Main Line, 8.Be3"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Be3")
+ ("A55n" "Old Indian: Main Line, 8.Be3 a6"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Be3 a6")
+ ("A55o" "Old Indian: Main Line, 8.Qc2"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Qc2")
+ ("A55o" "Old Indian: Main Line, 8.Qc2 Re8"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Qc2 Re8")
+ ("A55o" "Old Indian: Main Line, 8.Qc2 Qc7"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Qc2 Qc7")
+ ("A55p" "Old Indian: Main Line, 8.Qc2 a6"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Qc2 a6")
+ ("A55q" "Old Indian: Main Line, 8.Re1"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Re1")
+ ("A55r" "Old Indian: Main Line, 8.Re1 Re8"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Re1 Re8")
+ ("A55s" "Old Indian: Main Line, 8.Re1 a6"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Re1 a6")
+ ("A55t" "Old Indian: Main Line, 8.Re1 a6 9.Bf1"
+  "d4 Nf6 c4 d6 Nc3 e5 Nf3 Nbd7 e4 Be7 Be2 c6 O-O O-O Re1 a6 Bf1")
+ ("A56a" "Benoni: 2...c5" "d4 Nf6 c4 c5")
+ ("A56b" "Benoni: 2...c5 3.e3" "d4 Nf6 c4 c5 e3")
+ ("A56b" "Benoni: 2...c5 3.e3 e6" "d4 Nf6 c4 c5 e3 e6")
+ ("A56c" "Benoni: 2...c5 3.e3 g6" "d4 Nf6 c4 c5 e3 g6")
+ ("A56d" "Benoni: 2...c5 3.e3 g6 4.Nc3" "d4 Nf6 c4 c5 e3 g6 Nc3")
+ ("A56e" "Benoni: 3.dxc5" "d4 Nf6 c4 c5 dxc5")
+ ("A56f" "Benoni: 3.d5" "d4 Nf6 c4 c5 d5")
+ ("A56g" "Benoni: 3.d5 a6" "d4 Nf6 c4 c5 d5 a6")
+ ("A56h" "Benoni: 3.d5 g6" "d4 Nf6 c4 c5 d5 g6")
+ ("A56h" "Benoni: 3.d5 g6" "d4 Nf6 c4 c5 d5 g6 Nc3")
+ ("A56i" "Benoni: 3.d5 d6" "d4 Nf6 c4 c5 d5 d6")
+ ("A56j" "Benoni: 3.d5 d6 4.Nc3 g6" "d4 Nf6 c4 c5 d5 d6 Nc3 g6")
+ ("A56j" "Benoni: Bronstein's Gambit" "d4 Nf6 c4 c5 d5 g6 Nc3 d6 e4 b5")
+ ("A56k" "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7" "d4 Nf6 c4 c5 d5 d6 Nc3 g6 e4 
Bg7")
+ ("A56l" "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7 6.f3" "d4 Nf6 c4 c5 d5 d6 Nc3 g6 
e4 Bg7 f3")
+ ("A56m" "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7 6.Bd3"
+  "d4 Nf6 c4 c5 d5 d6 Nc3 g6 e4 Bg7 Bd3")
+ ("A56n" "Benoni: Vulture" "d4 Nf6 c4 c5 d5 Ne4")
+ ("A56o" "Benoni: Czech" "d4 Nf6 c4 c5 d5 e5")
+ ("A56p" "Benoni: Czech, 4.Nc3 d6" "d4 Nf6 c4 c5 d5 e5 Nc3 d6")
+ ("A56q" "Benoni: Czech, 5.e4 g6" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 g6")
+ ("A56r" "Benoni: Czech, 5.e4 Be7" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7")
+ ("A56s" "Benoni: Czech, 5.e4 Be7 6.g3" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7 g3")
+ ("A56s" "Benoni: Czech, 5.e4 Be7 6.g3 O-O" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7 
g3 O-O")
+ ("A56s" "Benoni: Czech, 5.e4 Be7 6.g3 O-O 7.Bg2" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 
e4 Be7 g3 O-O Bg2")
+ ("A56t" "Benoni: Czech, 5.e4 Be7 6.g3 O-O 7.Bg2 Ne8" "d4 Nf6 c4 c5 d5 e5 Nc3 
d6 e4 Be7 g3 O-O Bg2 Ne8")
+ ("A56u" "Benoni: Czech, 5.e4 Be7 6.Bd3" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7 
Bd3")
+ ("A56v" "Benoni: Czech, 5.e4 Be7 6.Nf3"
+  "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7 Nf3")
+ ("A56w" "Benoni: Czech, 5.e4 Be7 6.Nf3 O-O" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 e4 Be7 
Nf3 O-O")
+ ("A56w" "Benoni: Czech, 5.e4 Be7 6.Nf3 O-O 7.h3" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 
e4 Be7 Nf3 O-O h3")
+ ("A56x" "Benoni: Czech, 5.e4 Be7 6.Nf3 O-O 7.Be2" "d4 Nf6 c4 c5 d5 e5 Nc3 d6 
e4 Be7 Nf3 O-O Be2")
+ ("A57a" "Benko Gambit" "d4 Nf6 c4 c5 d5 b5")
+ ("A57b" "Benko Gambit: 4.a4" "d4 Nf6 c4 c5 d5 b5 a4")
+ ("A57c" "Benko Gambit: 4.Nd2" "d4 Nf6 c4 c5 d5 b5 Nd2")
+ ("A57d" "Benko Gambit: 4.Nf3" "d4 Nf6 c4 c5 d5 b5 Nf3")
+ ("A57d" "Benko Gambit: 4.Nf3 bxc4" "d4 Nf6 c4 c5 d5 b5 Nf3 bxc4")
+ ("A57e" "Benko Gambit: 4.Nf3 Bb7" "d4 Nf6 c4 c5 d5 b5 Nf3 Bb7")
+ ("A57e" "Benko Gambit: 4.Nf3 Bb7 5.a4" "d4 Nf6 c4 c5 d5 b5 Nf3 Bb7 a4")
+ ("A57f" "Benko Gambit: 4.Nf3 g6" "d4 Nf6 c4 c5 d5 b5 Nf3 g6")
+ ("A57g" "Benko Gambit: 4.Nf3 g6 5.cxb5" "d4 Nf6 c4 c5 d5 b5 Nf3 g6 cxb5")
+ ("A57g" "Benko Gambit: 4.Nf3 g6 5.cxb5 a6"
+  "d4 Nf6 c4 c5 d5 b5 Nf3 g6 cxb5 a6")
+ ("A57h" "Benko Gambit: 4.cxb5" "d4 Nf6 c4 c5 d5 b5 cxb5")
+ ("A57h" "Benko Gambit: 4.cxb5 a6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6")
+ ("A57i" "Benko Gambit: 4.cxb5 a6 5.b6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 b6")
+ ("A57j" "Benko Gambit: 4.cxb5 a6 5.b6 Qxb6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 b6 
Qxb6")
+ ("A57k" "Benko Gambit: 4.cxb5 a6 5.b6 d6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 b6 d6")
+ ("A57l" "Benko Gambit: 4.cxb5 a6 5.b6 e6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 b6 e6")
+ ("A57m" "Benko Gambit: 4.cxb5 a6 5.e3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 e3")
+ ("A57n" "Benko Gambit: 4.cxb5 a6 5.e3 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 e3 g6")
+ ("A57n" "Benko Gambit: 4.cxb5 a6 5.e3 g6 6.Nc3 d6" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 e3 g6 Nc3 d6")
+ ("A57n" "Benko Gambit: 4.cxb5 a6 5.e3 g6 6.Nc3 Bg7"
+  "d4 Nf6 c4 c5 d5 b5 cxb5 a6 e3 g6 Nc3 Bg7")
+ ("A57o" "Benko Gambit: 4.cxb5 a6 5.f3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 f3")
+ ("A57p" "Benko Gambit: 4.cxb5 a6 5.f3 e6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 f3 e6")
+ ("A57q" "Benko Gambit: 4.cxb5 a6 5.f3 axb5" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 f3 
axb5")
+ ("A57r" "Benko Gambit: Zaitsev Variation" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3")
+ ("A57r" "Benko Gambit: Zaitsev, 5...Qa5" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3 Qa5")
+ ("A57s" "Benko Gambit: Zaitsev, 5...axb5" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3 
axb5")
+ ("A57s" "Benko Gambit: Zaitsev, 5...axb5 6.e4 b4" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 
Nc3 axb5 e4 b4")
+ ("A57t" "Benko Gambit: Zaitsev, 8.Nf3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3 axb5 
e4 b4 Nb5 d6 Nf3")
+ ("A57u" "Benko Gambit: Zaitsev, Nescafe Frappe Attack" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 Nc3 axb5 e4 b4 Nb5 d6 Bc4")
+ ("A57v" "Benko Gambit: Zaitsev, 8.Bf4" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3 axb5 
e4 b4 Nb5 d6 Bf4")
+ ("A57w" "Benko Gambit: Zaitsev, 8.Bf4 g5"
+  "d4 Nf6 c4 c5 d5 b5 cxb5 a6 Nc3 axb5 e4 b4 Nb5 d6 Bf4 g5")
+ ("A58a" "Benko Gambit: 5.bxa6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6")
+ ("A58b" "Benko Gambit: 5.bxa6 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 g6")
+ ("A58c" "Benko Gambit: 5.bxa6 Bxa6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6")
+ ("A58c" "Benko Gambit: Accepted, 6.g3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
g3")
+ ("A58d" "Benko Gambit: Accepted, 6.g3 d6 7.Bg2 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 bxa6 Bxa6 g3 d6 Bg2 g6")
+ ("A58d" "Benko Gambit: Accepted, 6.g3 d6 7.Bg2 g6 8.b3" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 g3 d6 Bg2 g6 b3")
+ ("A58e" "Benko Gambit: Accepted, 6.Nc3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3")
+ ("A58f" "Benko Gambit: Accepted, 6.Nc3 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 g6")
+ ("A58g" "Benko Gambit: Accepted, 6.Nc3 d6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6")
+ ("A58g" "Benko Gambit: Accepted, 7.f4"
+  "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 f4")
+ ("A58g" "Benko Gambit: Accepted, 7.f4" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 f4 g6")
+ ("A58h" "Benko Gambit: Accepted, 7.g3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 g3")
+ ("A58h" "Benko Gambit: Accepted, 7.g3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 g3 g6")
+ ("A58i" "Benko Gambit: Accepted, 7.Nf3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 Nf3")
+ ("A58i" "Benko Gambit: Accepted, 7.Nf3 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6")
+ ("A58j" "Benko Gambit: Accepted, 7.Nf3 g6 8.Nd2" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 
bxa6 Bxa6 Nc3 d6 Nf3 g6 Nd2")
+ ("A58j" "Benko Gambit: Accepted, 7.Nf3 g6 8.Nd2 Qa5" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 Nd2 Qa5")
+ ("A58j" "Benko Gambit: Accepted, 7.Nf3 g6 8.Nd2 Bg7" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 Nd2 Bg7")
+ ("A58k" "Benko Gambit: Fianchetto Variation" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3")
+ ("A58k" "Benko Gambit: Fianchetto Variation" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3 Bg7")
+ ("A58l" "Benko Gambit: Fianchetto, 9.Bh3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bh3")
+ ("A58m" "Benko Gambit: Fianchetto, 9.Bg2" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2")
+ ("A58m" "Benko Gambit: Fianchetto, 9...Nbd7" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 Nbd7")
+ ("A58n" "Benko Gambit: Fianchetto, 9...Nbd7 10.O-O Nb6" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 Nbd7 O-O Nb6")
+ ("A58o" "Benko Gambit: Fianchetto, 9...O-O" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O")
+ ("A58p" "Benko Gambit: Fianchetto, Main Line" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 
bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7")
+ ("A58q" "Benko Gambit: Fianchetto, Main Line, 11.Rb1" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Rb1")
+ ("A58r" "Benko Gambit: Fianchetto, Main Line, 11.Re1" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Re1")
+ ("A58s" "Benko Gambit: Fianchetto, Main Line, 11.Qc2" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Qc2")
+ ("A58t" "Benko Gambit: Fianchetto, Main Line, 11.Qc2 Qb6" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Qc2 Qb6")
+ ("A59a" "Benko Gambit: 7.e4" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4")
+ ("A59b" "Benko Gambit: 7.e4 Bxf1 8.Kxf1 g6" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6")
+ ("A59c" "Benko Gambit: 7.e4 Line, 9.Nge2" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 Nge2")
+ ("A59d" "Benko Gambit: 7.e4 Line, 9.Nf3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 
Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 Nf3")
+ ("A59e" "Benko Gambit: 7.e4 Line, 9.Nf3 Bg7 10.h3" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 Nf3 Bg7 h3")
+ ("A59f" "Benko Gambit: 7.e4 Line, 9.Nf3 Bg7 10.h3 Nbd7" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 Nf3 Bg7 h3 Nbd7")
+ ("A59g" "Benko Gambit: 7.e4 Line, 9.g4" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 e4 Bxf1 Kxf1 g6 g4")
+ ("A59h" "Benko Gambit: 7.e4 Line, 9.g3" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 e4 Bxf1 Kxf1 g6 g3")
+ ("A59i" "Benko Gambit: 7.e4, Main Line" "d4 Nf6 c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 
Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3")
+ ("A59j" "Benko Gambit: 7.e4, Main Line, 11...Nbd7" "d4 Nf6 c4 c5 d5 b5 cxb5 
a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7")
+ ("A59k" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 Re1")
+ ("A59l" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1 Qa5" "d4 Nf6 c4 c5 
d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 Re1 Qa5")
+ ("A59m" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1 Ng4" "d4 Nf6 c4 c5 
d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 Re1 Ng4")
+ ("A59n" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3" "d4 Nf6 c4 c5 d5 b5 
cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3")
+ ("A59o" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Ra6" "d4 Nf6 c4 c5 d5 
b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 Ra6")
+ ("A59o" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Ra6 13.Re1" "d4 Nf6 
c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 
Ra6 Re1")
+ ("A59p" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qb6" "d4 Nf6 c4 c5 d5 
b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 Qb6")
+ ("A59p" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qb6 13.Re1" "d4 Nf6 
c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 
Qb6 Re1")
+ ("A59q" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qa5" "d4 Nf6 c4 c5 d5 
b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 Qa5")
+ ("A59q" "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qa5 13.Re1" "d4 Nf6 
c4 c5 d5 b5 cxb5 a6 bxa6 Bxa6 Nc3 d6 e4 Bxf1 Kxf1 g6 g3 Bg7 Kg2 O-O Nf3 Nbd7 h3 
Qa5 Re1")
+ ("A60a" "Benoni: 3.d5 e6" "d4 Nf6 c4 c5 d5 e6")
+ ("A60b" "Benoni: 4.Nf3" "d4 Nf6 c4 c5 d5 e6 Nf3")
+ ("A60c" "Benoni: 4.Nf3 exd5 5.cxd5" "d4 Nf6 c4 c5 d5 e6 Nf3 exd5 cxd5")
+ ("A60d" "Benoni: Snake Variation vs. 4.Nf3" "d4 Nf6 c4 c5 d5 e6 Nf3 exd5 cxd5 
Bd6")
+ ("A60e" "Benoni: 4.g3" "d4 Nf6 c4 c5 d5 e6 g3")
+ ("A60f" "Benoni: 4.g3 exd5 5.cxd5 b5" "d4 Nf6 c4 c5 d5 e6 g3 exd5 cxd5 b5")
+ ("A60g" "Benoni: 4.Nc3" "d4 Nf6 c4 c5 d5 e6 Nc3")
+ ("A60h" "Benoni: 4.Nc3 exd5 5.Nxd5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 Nxd5")
+ ("A60i" "Benoni: 4.Nc3 exd5 5.cxd5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5")
+ ("A60j" "Benoni: Snake Variation" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 Bd6")
+ ("A60k" "Benoni: Snake, 6.Nf3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 Bd6 Nf3")
+ ("A60l" "Benoni: Snake, 6.Nf3 Bc7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 Bd6 Nf3 
Bc7")
+ ("A60m" "Benoni: Snake, 6.e4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 Bd6 e4")
+ ("A60n" "Benoni: Snake, 6.e4 O-O 7.Nf3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 Bd6 
e4 O-O Nf3")
+ ("A60o" "Benoni: 4.Nc3 exd5 5.cxd5 g6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 g6")
+ ("A60p" "Benoni: 4.Nc3 exd5 5.cxd5 d6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6")
+ ("A60q" "Benoni: 4.Nc3 exd5 5.cxd5 d6 6.Nf3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3")
+ ("A61" "Benoni: 6.Nf3 g6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 g6")
+ ("A61" "Benoni: 6.Nf3 g6 7.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 g6 
h3")
+ ("A61" "Benoni: 6.Nf3 g6 7.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 g6 
Bf4")
+ ("A61" "Benoni: 6.Nf3 g6 7.Bf4 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 
g6 Bf4 a6")
+ ("A61" "Benoni: 6.Nf3 g6 7.Bf4 Bg7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 
g6 Bf4 Bg7")
+ ("A61" "Benoni: 6.Nf3 g6 7.Bf4 Bg7 8.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 Nf3 g6 Bf4 Bg7 Nd2")
+ ("A61" "Benoni: 6.Nf3 g6 7.Bf4 Bg7 8.Qa4+" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 Nf3 g6 Bf4 Bg7 Qa4+")
+ ("A61" "Benoni: Uhlmann Variation" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 
g6 Bg5")
+ ("A61" "Benoni: Uhlmann, 7...Bg7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 g6 
Bg5 Bg7")
+ ("A61" "Benoni: Uhlmann, 7...h6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 g6 
Bg5 h6")
+ ("A61" "Benoni: Nimzowitsch Variation" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 Nd2")
+ ("A61" "Benoni: Nimzowitsch, 7...Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 Nd2 Nbd7")
+ ("A61" "Benoni: Nimzowitsch, 7...Bg7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 Nd2 Bg7")
+ ("A61" "Benoni: Nimzowitsch, 7...Bg7 8.Nc4 O-O 9.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 Nf3 g6 Nd2 Bg7 Nc4 O-O Bf4")
+ ("A61" "Benoni: Nimzowitsch, 7...Bg7 8.Nc4 O-O 9.Bg5" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 Nf3 g6 Nd2 Bg7 Nc4 O-O Bg5")
+ ("A61" "Benoni: Fianchetto Variation" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3")
+ ("A62" "Benoni: Fianchetto, 8.Bg2 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O")
+ ("A62" "Benoni: Fianchetto, 9.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 Nf3 
g6 g3 Bg7 Bg2 O-O O-O")
+ ("A62" "Benoni: Fianchetto, 9.O-O a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O O-O a6")
+ ("A62" "Benoni: Fianchetto, 9.O-O Na6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O O-O Na6")
+ ("A62" "Benoni: Fianchetto, 9.O-O Na6 10.Nd2 Nc7" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Na6 Nd2 Nc7")
+ ("A62" "Benoni: Fianchetto, 9.O-O Re8" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O O-O Re8")
+ ("A63" "Benoni: Fianchetto, 9...Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7")
+ ("A63" "Benoni: Fianchetto, 9...Nbd7 10.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2")
+ ("A63" "Benoni: Fianchetto, 9...Nbd7 10.Nd2 Re8" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 Re8")
+ ("A63" "Benoni: Fianchetto, 9...a6 10.a4 Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O a6 a4 Nbd7")
+ ("A63" "Benoni: Fianchetto, 9...Nbd7 10.Nd2 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6")
+ ("A63" "Benoni: Fianchetto, 9...Nbd7 10.Nd2 a6 11.a4" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4")
+ ("A64" "Benoni: Fianchetto, 11...Re8" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.a5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 a5")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.Nc4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 Nc4")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.Nc4 Ne5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 Nc4 Ne5")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 h3")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.h3 Rb8" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 h3 Rb8")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.h3 Rb8 13.Nc4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 h3 Rb8 Nc4")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.h3 Rb8 13.Nc4 Ne5" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 h3 Rb8 Nc4 
Ne5")
+ ("A64" "Benoni: Fianchetto, 11...Re8 12.h3 Rb8 13.Nc4 Nb6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 Nf3 g6 g3 Bg7 Bg2 O-O O-O Nbd7 Nd2 a6 a4 Re8 h3 Rb8 Nc4 
Nb6")
+ ("A65a" "Benoni: 6.e4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4")
+ ("A65a" "Benoni: 6.e4 Be7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 Be7")
+ ("A65b" "Benoni: 6.e4 g6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6")
+ ("A65b" "Benoni: 6.e4 g6 7.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 h3")
+ ("A65c" "Benoni: 6.e4 g6 7.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Bf4")
+ ("A65d" "Benoni: 6.e4 g6 7.Bf4 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Bf4 a6")
+ ("A65e" "Benoni: 6.e4 g6 7.Bf4 a6 8.Nf3 b5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Bf4 a6 Nf3 b5")
+ ("A65e" "Benoni: 6.e4 g6 7.Bf4 a6 8.Nf3 b5 9.Qe2" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Bf4 a6 Nf3 b5 Qe2")
+ ("A65f" "Benoni: 6.e4 g6 7.Bd3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Bd3")
+ ("A65f" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 Bd3 Bg7 h3")
+ ("A65g" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Bd3 Bg7 Nge2")
+ ("A65g" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Bd3 Bg7 Nge2 O-O")
+ ("A65g" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Bd3 Bg7 Nge2 O-O O-O")
+ ("A65h" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O b6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Bd3 Bg7 Nge2 O-O O-O b6")
+ ("A65i" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O Na6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Bd3 Bg7 Nge2 O-O O-O Na6")
+ ("A65j" "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O a6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Bd3 Bg7 Nge2 O-O O-O a6")
+ ("A65k" "Benoni: Sämisch (6.e4 g6 7.f3)" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 f3")
+ ("A65k" "Benoni: Sämisch, 7...Bg7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f3 Bg7")
+ ("A65l" "Benoni: Sämisch, 8.Nge2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f3 Bg7 Nge2")
+ ("A65m" "Benoni: Sämisch, 8.Be3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f3 Bg7 Be3")
+ ("A65n" "Benoni: Sämisch, 8.Bg5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f3 Bg7 Bg5")
+ ("A65n" "Benoni: Sämisch, 8.Bg5 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 f3 Bg7 Bg5 O-O")
+ ("A65o" "Benoni: Sämisch, 8.Bg5 O-O 9.Nge2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 f3 Bg7 Bg5 O-O Nge2")
+ ("A65p" "Benoni: Sämisch, 8.Bg5 O-O 9.Qd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 f3 Bg7 Bg5 O-O Qd2")
+ ("A65q" "Benoni: Sämisch, 8.Bg5 O-O 9.Qd2 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f3 Bg7 Bg5 O-O Qd2 a6")
+ ("A65r" "Benoni: Sämisch, 8.Bg5 h6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 f3 Bg7 Bg5 h6")
+ ("A65r" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O")
+ ("A65s" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Nge2" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Nge2")
+ ("A65t" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2")
+ ("A65u" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 Re8" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 Re8")
+ ("A65v" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6")
+ ("A65v" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4" "d4 Nf6 c4 c5 
d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6 a4")
+ ("A65w" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 h5" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6 a4 h5")
+ ("A65x" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 Nbd7" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6 a4 Nbd7")
+ ("A65y" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 Re8" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6 a4 Re8")
+ ("A65y" "Benoni: Sämisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 Re8 12.Nge2 
Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f3 Bg7 Bg5 h6 Be3 O-O Qd2 a6 
a4 Re8 Nge2 Nbd7")
+ ("A66" "Benoni: Four Pawns Attack" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f4")
+ ("A66" "Benoni: Four Pawns Attack" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
f4 Bg7")
+ ("A66" "Benoni: Four Pawns, Mikenas Attack" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 f4 Bg7 e5")
+ ("A66" "Benoni: Mikenas Attack, 8...dxe5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 f4 Bg7 e5 dxe5")
+ ("A66" "Benoni: Mikenas Attack, 8...Nfd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 f4 Bg7 e5 Nfd7")
+ ("A66" "Benoni: Mikenas Attack, 8...Nfd7 9.e6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 e6")
+ ("A66" "Benoni: Mikenas Attack, 8...Nfd7 9.Nf3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 Nf3")
+ ("A66" "Benoni: Mikenas Attack, 8...Nfd7 9.Nb5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 Nb5")
+ ("A66" "Benoni: Mikenas Attack, 9.Nb5 dxe5 10.Nd6+" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 Nb5 dxe5 Nd6+")
+ ("A66" "Benoni: Mikenas Attack, 9.Nb5 dxe5 10.Nd6+ Ke7 11.Nxc8+" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 Nb5 dxe5 Nd6+ Ke7 Nxc8+")
+ ("A66" "Benoni: Mikenas Attack, 9.Nb5 dxe5 10.Nd6+ Ke7 11.Nxc8+ Qxc8 12.Nf3" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 e5 Nfd7 Nb5 dxe5 Nd6+ Ke7 
Nxc8+ Qxc8 Nf3")
+ ("A67a" "Benoni: Four Pawns, Taimanov (Alatortsev) Variation" "d4 Nf6 c4 c5 
d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+")
+ ("A67b" "Benoni: Four Pawns, Taimanov, 8...Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nbd7")
+ ("A67c" "Benoni: Four Pawns, Taimanov, 8...Nbd7 9.e5 dxe5 10.fxe5 Nh5 11.e6" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nbd7 e5 dxe5 fxe5 Nh5 
e6")
+ ("A67d" "Benoni: Four Pawns, Taimanov, 8...Nfd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7")
+ ("A67e" "Benoni: Four Pawns, Taimanov, 9.Bd3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3")
+ ("A67f" "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3 O-O")
+ ("A67g" "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3 O-O Nf3")
+ ("A67h" "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 a6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3 O-O Nf3 a6")
+ ("A67i" "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 a6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3 O-O Nf3 a6 a4")
+ ("A67j" "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 Na6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 Bd3 O-O Nf3 Na6")
+ ("A67k" "Benoni: Four Pawns, Taimanov, 9.a4 (Zaitsev)" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4")
+ ("A67l" "Benoni: Four Pawns, Taimanov, 9.a4 Qh4+" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 Qh4+")
+ ("A67m" "Benoni: Four Pawns, Taimanov, 9.a4 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 a6")
+ ("A67n" "Benoni: Four Pawns, Taimanov, 9.a4 a6 10.Bd3" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 a6 Bd3")
+ ("A67o" "Benoni: Four Pawns, Taimanov, 9.a4 a6 10.Be2" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 a6 Be2")
+ ("A67p" "Benoni: Four Pawns, Taimanov, 9.a4 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 O-O")
+ ("A67q" "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 O-O Nf3")
+ ("A67r" "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3 Na6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 O-O Nf3 Na6")
+ ("A67s" "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3 Na6 11.O-O Nc7" "d4 
Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Bb5+ Nfd7 a4 O-O Nf3 Na6 O-O Nc7")
+ ("A68a" "Benoni: Four Pawns, 8.Nf3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 f4 Bg7 Nf3")
+ ("A68a" "Benoni: Four Pawns, 8.Nf3 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 f4 Bg7 Nf3 O-O")
+ ("A68b" "Benoni: Four Pawns, 9.Bd3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 f4 Bg7 Nf3 O-O Bd3")
+ ("A68c" "Benoni: Four Pawns, 9.Be2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 f4 Bg7 Nf3 O-O Be2")
+ ("A68d" "Benoni: Four Pawns, 9.Be2 b5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 f4 Bg7 Nf3 O-O Be2 b5")
+ ("A68e" "Benoni: Four Pawns, 9.Be2 b5 10.e5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 b5 e5")
+ ("A68f" "Benoni: Four Pawns, 9.Be2 b5 10.e5 dxe5" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 b5 e5 dxe5")
+ ("A68g" "Benoni: Four Pawns, 9.Be2 b5 10.e5 dxe5 11.fxe5 Ng4 12.Bg5" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 b5 e5 dxe5 fxe5 Ng4 Bg5")
+ ("A68h" "Benoni: Four Pawns, 9.Be2 Bg4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4")
+ ("A68i" "Benoni: Four Pawns, 9.Be2 Bg4 10.e5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 e5")
+ ("A68j" "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 O-O")
+ ("A68k" "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 O-O Nbd7")
+ ("A68l" "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 O-O Nbd7 h3")
+ ("A68m" "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3 Bxf3 12.Bxf3 Re8" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 O-O Nbd7 h3 
Bxf3 Bxf3 Re8")
+ ("A68n" "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3 Bxf3 12.Bxf3 Re8 
13.Re1" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Bg4 O-O 
Nbd7 h3 Bxf3 Bxf3 Re8 Re1")
+ ("A69a" "Benoni: Four Pawns, Main Line" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 f4 Bg7 Nf3 O-O Be2 Re8")
+ ("A69b" "Benoni: Four Pawns, Main Line, 10.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 O-O")
+ ("A69c" "Benoni: Four Pawns, Main Line, 10.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 Nd2")
+ ("A69d" "Benoni: Four Pawns, Main Line, 10.Nd2 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 Nd2 a6")
+ ("A69e" "Benoni: Four Pawns, Main Line, 10.Nd2 Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 Nd2 Nbd7")
+ ("A69f" "Benoni: Four Pawns, Main Line, 10.e5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5")
+ ("A69g" "Benoni: Four Pawns, Main Line, 10.e5: 12.O-O" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 Ng4 O-O")
+ ("A69h" "Benoni: Four Pawns, Main Line, 10.e5: 12.e6" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 Ng4 e6")
+ ("A69i" "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 Ng4 Bg5")
+ ("A69j" "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 f6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 Ng4 Bg5 f6")
+ ("A69k" "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 Ng4 Bg5 Qb6")
+ ("A69l" "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6 13.O-O Nxe5 
14.Nxe5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 
dxe5 fxe5 Ng4 Bg5 Qb6 O-O Nxe5 Nxe5")
+ ("A69m" "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6 13.O-O Nxe5 14.d6" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 f4 Bg7 Nf3 O-O Be2 Re8 e5 dxe5 fxe5 
Ng4 Bg5 Qb6 O-O Nxe5 d6")
+ ("A70a" "Benoni: Classical" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3")
+ ("A70b" "Benoni: Classical, 7...a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 a6")
+ ("A70b" "Benoni: Classical, 7...a6 8.a4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 Nf3 a6 a4")
+ ("A70b" "Benoni: Classical, 7...a6 8.a4 Bg4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 a6 a4 Bg4")
+ ("A70c" "Benoni: Classical, 7...a6 8.a4 Bg4 9.Be2" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 a6 a4 Bg4 Be2")
+ ("A70d" "Benoni: Classical, 7...Bg7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7")
+ ("A70e" "Benoni: Classical, 8.Be2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Nf3 Bg7 Be2")
+ ("A70e" "Benoni: Classical, 8.Be2 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 a6")
+ ("A70f" "Benoni: Classical, 8.Qa4+" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Qa4+")
+ ("A70f" "Benoni: Classical, 8.Qa4+ Bd7 9.Qb3 Qc7" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Qa4+ Bd7 Qb3 Qc7")
+ ("A70g" "Benoni: Classical, 8.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Nf3 Bg7 Bf4")
+ ("A70g" "Benoni: Classical, 8.Bf4 O-O 9.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Bf4 O-O Nd2")
+ ("A70h" "Benoni: Classical, 8.Bd3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Nf3 Bg7 Bd3")
+ ("A70i" "Benoni: Classical, 8.Bd3 O-O 9.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Bd3 O-O O-O")
+ ("A70j" "Benoni: Classical, 8.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Nf3 Bg7 h3")
+ ("A70k" "Benoni: Classical, 8.h3 O-O 9.Bd3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 h3 O-O Bd3")
+ ("A70l" "Benoni: Classical, 8.h3 O-O 9.Bd3 Bd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 Bd7")
+ ("A70m" "Benoni: Classical, 8.h3 O-O 9.Bd3 Na6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 Na6")
+ ("A70n" "Benoni: Classical, 8.h3 O-O 9.Bd3 Re8" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 Re8")
+ ("A70o" "Benoni: Classical, 8.h3 O-O 9.Bd3 Re8 10.O-O c4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 Re8 O-O c4")
+ ("A70p" "Benoni: Classical, 8.h3 O-O 9.Bd3 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 a6")
+ ("A70q" "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.O-O b5" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 a6 O-O b5")
+ ("A70r" "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 a6 a4")
+ ("A70s" "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4 Nbd7" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 a6 a4 Nbd7")
+ ("A70t" "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4 Nbd7 11.O-O Re8" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 a6 a4 Nbd7 O-O Re8")
+ ("A70u" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5")
+ ("A70v" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Bxb5" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5 Bxb5")
+ ("A70w" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5 Nxb5")
+ ("A70w" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5 Nxe4"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5 Nxb5 Nxe4")
+ ("A70x" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5 Re8"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5 Nxb5 Re8")
+ ("A70y" "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5 Re8 11.O-O Nxe4"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 h3 O-O Bd3 b5 Nxb5 Re8 
O-O Nxe4")
+ ("A71" "Benoni: Classical, 8.Bg5"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Bg5")
+ ("A71" "Benoni: Classical, 8.Bg5 h6 9.Bh4 g5"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Bg5 h6 Bh4 g5")
+ ("A71" "Benoni: Classical, 8.Bg5 h6 9.Bh4 a6"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Bg5 h6 Bh4 a6")
+ ("A71" "Benoni: Classical, 8.Bg5 h6 9.Bh4 a6 10.Nd2"
+  "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Bg5 h6 Bh4 a6 Nd2")
+ ("A71" "Benoni: Classical, 8.Bg5 h6 9.Bh4 a6 10.Nd2 b5 11.Be2" "d4 Nf6 c4 c5 
d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Bg5 h6 Bh4 a6 Nd2 b5 Be2")
+ ("A72" "Benoni: Classical, 8.Be2 O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 O-O")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 Be2 O-O Nd2")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Bg5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 Be2 O-O Bg5")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Bg5 h6 10.Bh4 g5 11.Bg3 Nh5 12.Nd2" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O Bg5 h6 Bh4 g5 Bg3 
Nh5 Nd2")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 Be2 O-O Bf4")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Bf4 b5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O Bf4 b5")
+ ("A72" "Benoni: Classical, 8.Be2 O-O 9.Bf4 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O Bf4 a6")
+ ("A73" "Benoni: Classical, 9.O-O" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 
Nf3 Bg7 Be2 O-O O-O")
+ ("A73" "Benoni: Classical, 9.O-O Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 
e4 g6 Nf3 Bg7 Be2 O-O O-O Nbd7")
+ ("A73" "Benoni: Classical, 9.O-O Na6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 O-O O-O Na6")
+ ("A73" "Benoni: Classical, 9.O-O Na6 10.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Na6 Nd2")
+ ("A73" "Benoni: Classical, 9.O-O Na6 10.Nd2 Nc7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Na6 Nd2 Nc7")
+ ("A73" "Benoni: Classical, 9.O-O Bg4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 O-O O-O Bg4")
+ ("A73" "Benoni: Classical, 9.O-O Bg4 10.Bg5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Bg4 Bg5")
+ ("A73" "Benoni: Classical, 9.O-O Bg4 10.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Bg4 Bf4")
+ ("A73" "Benoni: Classical, 9.O-O Bg4 10.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Bg4 h3")
+ ("A73" "Benoni: Classical, 9.O-O a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 O-O O-O a6")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 
d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4 Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Nbd7")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4 Nbd7 11.Nd2" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Nbd7 Nd2")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4 Nbd7 11.Bg5" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Nbd7 Bg5")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4 Nbd7 11.Bf4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Nbd7 Bf4")
+ ("A74" "Benoni: Classical, 9.O-O a6 10.a4 Nbd7 11.Bf4 Qe7" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Nbd7 Bf4 Qe7")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.h3" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 h3")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Nd2")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bg5" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bg5")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bg5 h6" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bg5 h6")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Qe7" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4 Qe7")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Re8" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4 Re8")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Re8 12.Nd2 Bxe2 13.Qxe2 
Nh5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 
Bf4 Re8 Nd2 Bxe2 Qxe2 Nh5")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Bxf3" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4 Bxf3")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Bxf3 12.Bxf3 Qe7" "d4 
Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4 Bxf3 
Bxf3 Qe7")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Bxf3 12.Bxf3 Qe7 13.Re1" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 Bf4 
Bxf3 Bxf3 Qe7 Re1")
+ ("A75" "Benoni: Classical, 9.O-O a6 10.a4 Bg4 11.Bf4 Bxf3 12.Bxf3 Qe7 with 
14.a5" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O a6 a4 Bg4 
Bf4 Bxf3 Bxf3 Qe7 Re1 Nbd7 a5")
+ ("A76" "Benoni: Classical, Main Line" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 
g6 Nf3 Bg7 Be2 O-O O-O Re8")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2 Bg4" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2 Bg4")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2 Na6" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2 Na6")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2 Na6 11.Bf4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2 Na6 Bf4")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2 Na6 11.Re1" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2 Na6 Re1")
+ ("A76" "Benoni: Classical, Main Line, 10.Qc2 Na6 11.Re1 Bg4" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Qc2 Na6 Re1 Bg4")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 a6" "d4 Nf6 c4 c5 d5 e6 Nc3 exd5 
cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 a6")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 a6" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 a6")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 a6 12.Ra3" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 a6 Ra3")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 a6 12.Qc2" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 a6 Qc2")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 a6 12.h3" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 a6 h3")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 Ne5" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 Ne5")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 Ne5 12.Ndb1" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 Ne5 
Ndb1")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 Ne5 12.Ra3" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 Ne5 Ra3")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 Ne5 12.Re1" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 Ne5 Re1")
+ ("A77" "Benoni: Classical, Main Line, 10.Nd2 Nbd7 11.a4 Ne5 12.Qc2" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Nbd7 a4 Ne5 Qc2")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6" "d4 Nf6 c4 c5 d5 e6 Nc3 
exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.Kh1" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 Kh1")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.Rb1" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 Rb1")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.Re1" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 Re1")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f4" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f4")
+ ("A78" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f4 Nc7" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f4 Nc7")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3" "d4 Nf6 c4 c5 d5 e6 
Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7" "d4 Nf6 c4 c5 d5 
e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 Nc7")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7 12.a4" "d4 Nf6 c4 
c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 Nc7 a4")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7 12.a4 Nd7" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 Nc7 a4 
Nd7")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7 12.a4 b6" "d4 Nf6 
c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 Nc7 a4 
b6")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7 12.a4 b6 13.Kh1" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 
Nc7 a4 b6 Kh1")
+ ("A79" "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3 Nc7 12.a4 b6 13.Nc4" 
"d4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Nf3 Bg7 Be2 O-O O-O Re8 Nd2 Na6 f3 
Nc7 a4 b6 Nc4")
+ ("A80a" "Dutch" "d4 f5")
+ ("A80b" "Dutch: Krejcik Gambit" "d4 f5 g4")
+ ("A80b" "Dutch: Krejcik Gambit Accepted" "d4 f5 g4 fxg4")
+ ("A80c" "Dutch: Korchnoi Attack" "d4 f5 h3")
+ ("A80c" "Dutch: Korchnoi, Janzen Gambit" "d4 f5 h3 Nf6 g4")
+ ("A80d" "Dutch: 2.Bg5" "d4 f5 Bg5")
+ ("A80d" "Dutch: 2.Bg5 d5" "d4 f5 Bg5 d5")
+ ("A80d" "Dutch: 2.Bg5 c6" "d4 f5 Bg5 c6")
+ ("A80e" "Dutch: 2.Bg5 Nf6" "d4 f5 Bg5 Nf6")
+ ("A80f" "Dutch: 2.Bg5 h6" "d4 f5 Bg5 h6")
+ ("A80g" "Dutch: 2.Bg5 g6" "d4 f5 Bg5 g6")
+ ("A80h" "Dutch: 2.Bg5 g6 3.Nc3" "d4 f5 Bg5 g6 Nc3")
+ ("A80i" "Dutch: Alapin" "d4 f5 Qd3")
+ ("A80i" "Dutch: Alapin, Manhattan Gambit" "d4 f5 Qd3 d6 g4")
+ ("A80i" "Dutch: Von Pretzel Gambit" "d4 f5 Qd3 e6 g4")
+ ("A80j" "Dutch: 2.Nc3" "d4 f5 Nc3")
+ ("A80k" "Dutch: 2.Nc3 d5" "d4 f5 Nc3 d5")
+ ("A80k" "Dutch: 2.Nc3 d5, Euwe Gambit" "d4 f5 Nc3 d5 e4")
+ ("A80l" "Dutch: 2.Nc3 d5 3.Bg5" "d4 f5 Nc3 d5 Bg5")
+ ("A80m" "Dutch: 2.Nc3 Nf6" "d4 f5 Nc3 Nf6")
+ ("A80m" "Dutch: Spielmann Gambit" "d4 f5 Nc3 Nf6 g4")
+ ("A80n" "Dutch: 2.Nc3 Nf6 3.Bg5" "d4 f5 Nc3 Nf6 Bg5")
+ ("A80n" "Dutch: 2.Nc3 Nf6 3.Bg5 e6" "d4 f5 Nc3 Nf6 Bg5 e6")
+ ("A80o" "Dutch: 2.Nc3 Nf6 3.Bg5 d5" "d4 f5 Nc3 Nf6 Bg5 d5")
+ ("A80p" "Dutch: 2.Nc3 Nf6 3.Bg5 d5 4.Bxf6 exf6" "d4 f5 Nc3 Nf6 Bg5 d5 Bxf6 
exf6")
+ ("A80p" "Dutch: 2.Nc3 Nf6 3.Bg5 d5 4.Bxf6 exf6 5.e3" "d4 f5 Nc3 Nf6 Bg5 d5 
Bxf6 exf6 e3")
+ ("A80p" "Dutch: 2.Nc3 Nf6 3.Bg5 d5 4.Bxf6 exf6 5.e3 c6" "d4 f5 Nc3 Nf6 Bg5 d5 
Bxf6 exf6 e3 c6")
+ ("A80q" "Dutch: 2.Nf3" "d4 f5 Nf3")
+ ("A80r" "Dutch: 2.Nf3 e6" "d4 f5 Nf3 e6")
+ ("A80s" "Dutch: 2.Nf3 e6 3.d5" "d4 f5 Nf3 e6 d5")
+ ("A80t" "Dutch: 2.Nf3 Nf6" "d4 f5 Nf3 Nf6")
+ ("A80u" "Dutch: Barcza System" "d4 f5 Nf3 Nf6 c3")
+ ("A80v" "Dutch: 2.Nf3 Nf6 3.Bg5" "d4 f5 Nf3 Nf6 Bg5")
+ ("A81" "Dutch: 2.g3" "d4 f5 g3")
+ ("A81" "Dutch: 2.g3 e6" "d4 f5 g3 e6")
+ ("A81" "Dutch: 2.g3 e6 3.Nf3" "d4 f5 g3 e6 Nf3")
+ ("A81" "Dutch: 2.g3 e6 3.Nf3 Nf6" "d4 f5 g3 e6 Nf3 Nf6")
+ ("A81" "Dutch: 2.g3 Nf6" "d4 f5 g3 Nf6")
+ ("A81" "Dutch: 2.g3 Nf6 3.Nf3" "d4 f5 g3 Nf6 Nf3")
+ ("A81" "Dutch: 2.g3 Nf6 3.Bg2" "d4 f5 g3 Nf6 Bg2")
+ ("A81" "Dutch: 2.g3 Nf6 3.Bg2 e6" "d4 f5 g3 Nf6 Bg2 e6")
+ ("A81" "Dutch: Blackburne Variation" "d4 f5 g3 Nf6 Bg2 e6 Nh3")
+ ("A81" "Dutch: 2.g3 Nf6 3.Bg2 g6" "d4 f5 g3 Nf6 Bg2 g6")
+ ("A81" "Dutch: 2.g3 Nf6 3.Bg2 g6 4.Nf3" "d4 f5 g3 Nf6 Bg2 g6 Nf3")
+ ("A81" "Dutch: Leningrad, Basman Variation" "d4 f5 g3 g6 Bg2 Bg7 Nf3 c6 O-O 
Nh6")
+ ("A81" "Dutch: Leningrad, Carlsbad Variation" "d4 f5 g3 g6 Bg2 Bg7 Nh3")
+ ("A82" "Dutch: Staunton Gambit" "d4 f5 e4")
+ ("A82" "Dutch: Staunton Gambit, Balogh Defence" "d4 f5 e4 d6")
+ ("A82" "Dutch: Staunton Gambit Accepted" "d4 f5 e4 fxe4")
+ ("A82" "Dutch: Staunton Gambit, 3.Nc3" "d4 f5 e4 fxe4 Nc3")
+ ("A82" "Dutch: Staunton Gambit, 3.Nc3 e6" "d4 f5 e4 fxe4 Nc3 e6")
+ ("A82" "Dutch: Staunton Gambit, 3.Nc3 g6" "d4 f5 e4 fxe4 Nc3 g6")
+ ("A82" "Dutch: Staunton Gambit, 3.Nc3 Nf6" "d4 f5 e4 fxe4 Nc3 Nf6")
+ ("A82" "Dutch: Staunton Gambit, Tartakower Variation" "d4 f5 e4 fxe4 Nc3 Nf6 
g4")
+ ("A82" "Dutch: Staunton Gambit, 4.f3" "d4 f5 e4 fxe4 Nc3 Nf6 f3")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 e6" "d4 f5 e4 fxe4 Nc3 Nf6 f3 e6")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 Nc6" "d4 f5 e4 fxe4 Nc3 Nf6 f3 Nc6")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 exf3" "d4 f5 e4 fxe4 Nc3 Nf6 f3 exf3")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 exf3 5.Nxf3"
+  "d4 f5 e4 fxe4 Nc3 Nf6 f3 exf3 Nxf3")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 d5" "d4 f5 e4 fxe4 Nc3 Nf6 f3 d5")
+ ("A82" "Dutch: Staunton Gambit, 4.f3 d5 5.fxe4" "d4 f5 e4 fxe4 Nc3 Nf6 f3 d5 
fxe4")
+ ("A83a" "Dutch: Staunton Gambit, Staunton Variation" "d4 f5 e4 fxe4 Nc3 Nf6 
Bg5")
+ ("A83b" "Dutch: Staunton Gambit, Nimzowitsch Variation" "d4 f5 e4 fxe4 Nc3 
Nf6 Bg5 b6")
+ ("A83c" "Dutch: Staunton Gambit, Chigorin Variation" "d4 f5 e4 fxe4 Nc3 Nf6 
Bg5 c6")
+ ("A83d" "Dutch: Staunton Gambit, 4.Bg5 g6" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 g6")
+ ("A83e" "Dutch: Staunton Gambit, Alekhine Variation" "d4 f5 e4 fxe4 Nc3 Nf6 
Bg5 g6 h4")
+ ("A83f" "Dutch: Staunton Gambit, Lasker Variation" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 
g6 f3")
+ ("A83g" "Dutch: Staunton Gambit, 4.Bg5 e6" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 e6")
+ ("A83h" "Dutch: Staunton Gambit, 4.Bg5 e6 5.Nxe4" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 
e6 Nxe4")
+ ("A83i" "Dutch: Staunton Gambit, 4.Bg5 e6 5.Nxe4" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 
e6 Nxe4 Be7 Bxf6 Bxf6 Nf3")
+ ("A83j" "Dutch: Staunton Gambit, 4.Bg5 Nc6" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 Nc6")
+ ("A83k" "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.f3" "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 
Nc6 f3")
+ ("A83l" "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.d5"
+  "d4 f5 e4 fxe4 Nc3 Nf6 Bg5 Nc6 d5")
+ ("A83m" "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.d5 Ne5 6.Qd4" "d4 f5 e4 fxe4 Nc3 
Nf6 Bg5 Nc6 d5 Ne5 Qd4")
+ ("A84" "Dutch: 2.c4" "d4 f5 c4")
+ ("A84" "Dutch: 2.c4 d6" "d4 f5 c4 d6")
+ ("A84" "Dutch: 2.c4 g6" "d4 f5 c4 g6")
+ ("A84" "Dutch: Bladel Variation" "d4 f5 c4 g6 Nc3 Nh6")
+ ("A84" "Dutch: 2.c4 e6" "d4 f5 c4 e6")
+ ("A84" "Dutch: 2.c4 e6 3.Nf3" "d4 f5 c4 e6 Nf3")
+ ("A84" "Dutch: 2.c4 e6 3.Nf3 Nf6" "d4 f5 c4 e6 Nf3 Nf6")
+ ("A84" "Dutch: Rubinstein Variation" "d4 f5 c4 e6 Nc3")
+ ("A84" "Dutch: Rubinstein, 3...d5" "d4 f5 c4 e6 Nc3 d5")
+ ("A84" "Dutch: Rubinstein, 3...d5 4.e3 c6" "d4 f5 c4 e6 Nc3 d5 e3 c6")
+ ("A84" "Dutch: Staunton Gambit Deferred" "d4 f5 c4 e6 e4")
+ ("A84" "Dutch: 2.c4 Nf6" "d4 f5 c4 Nf6")
+ ("A84" "Dutch: 2.c4 Nf6" "d4 f5 c4 Nf6 Nf3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3" "d4 f5 c4 Nf6 Nc3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 d6" "d4 f5 c4 Nf6 Nc3 d6")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6" "d4 f5 c4 Nf6 Nc3 e6")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.a3" "d4 f5 c4 Nf6 Nc3 e6 a3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.Qc2" "d4 f5 c4 Nf6 Nc3 e6 Qc2")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.Bg5" "d4 f5 c4 Nf6 Nc3 e6 Bg5")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.e3" "d4 f5 c4 Nf6 Nc3 e6 e3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.e3 d5" "d4 f5 c4 Nf6 Nc3 e6 e3 d5")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.e3 Bb4" "d4 f5 c4 Nf6 Nc3 e6 e3 Bb4")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 e6 4.Nf3"
+  "d4 f5 c4 Nf6 Nc3 e6 Nf3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6" "d4 f5 c4 Nf6 Nc3 g6")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.f3" "d4 f5 c4 Nf6 Nc3 g6 f3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Bg5" "d4 f5 c4 Nf6 Nc3 g6 Bg5")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Nf3" "d4 f5 c4 Nf6 Nc3 g6 Nf3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Nf3 Bg7" "d4 f5 c4 Nf6 Nc3 g6 Nf3 Bg7")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.e3" "d4 f5 c4 Nf6 Nc3 g6 Nf3 Bg7 
e3")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Bf4" "d4 f5 c4 Nf6 Nc3 g6 Nf3 
Bg7 Bf4")
+ ("A85" "Dutch: 2.c4 Nf6 3.Nc3 g6 4.Nf3 Bg7 5.Bg5" "d4 f5 c4 Nf6 Nc3 g6 Nf3 
Bg7 Bg5")
+ ("A86" "Dutch: 2.c4 Nf6 3.g3" "d4 f5 c4 Nf6 g3")
+ ("A86" "Dutch: 2.c4 Nf6 3.g3 d6" "d4 f5 c4 Nf6 g3 d6")
+ ("A86" "Dutch: Hort-Antoshin System" "d4 f5 c4 Nf6 g3 d6 Bg2 c6 Nc3 Qc7")
+ ("A86" "Dutch: Leningrad Variation" "d4 f5 c4 Nf6 g3 g6")
+ ("A86" "Dutch: Leningrad, 4.Nc3" "d4 f5 c4 Nf6 g3 g6 Nc3")
+ ("A86" "Dutch: Leningrad, 4.Nc3 Bg7" "d4 f5 c4 Nf6 g3 g6 Nc3 Bg7")
+ ("A86" "Dutch: Leningrad, 4.Nf3" "d4 f5 c4 Nf6 g3 g6 Nf3")
+ ("A86" "Dutch: Leningrad, 4.Nf3 Bg7" "d4 f5 c4 Nf6 g3 g6 Nf3 Bg7")
+ ("A86" "Dutch: Leningrad, 4.Nf3 Bg7 5.Nc3" "d4 f5 c4 Nf6 g3 g6 Nf3 Bg7 Nc3")
+ ("A86" "Dutch: Leningrad, 4.Bg2" "d4 f5 c4 Nf6 g3 g6 Bg2")
+ ("A86" "Dutch: Leningrad, 4.Bg2 d6" "d4 f5 c4 Nf6 g3 g6 Bg2 d6")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nh3" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nh3")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nc3")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3 d6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nc3 
d6")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3 d6 6.Nh3" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nc3 d6 Nh3")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3 d6 6.d5" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nc3 d6 d5")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3 O-O" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nc3 O-O")
+ ("A86" "Dutch: Leningrad, 4.Bg2 Bg7 5.Nc3 O-O 6.Nh3" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nc3 O-O Nh3")
+ ("A87" "Dutch: Leningrad, Main Line" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3")
+ ("A87" "Dutch: Leningrad, Main Line, 5...d6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
d6")
+ ("A87" "Dutch: Leningrad, Main Line, 5...d6 6.Nc3"
+  "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 d6 Nc3")
+ ("A87" "Dutch: Leningrad, Main Line, 5...O-O" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O")
+ ("A87" "Dutch: Leningrad, Main Line, 6.Nc3" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O Nc3")
+ ("A87" "Dutch: Leningrad, Main Line, 6.Nc3 d6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O Nc3 d6")
+ ("A87" "Dutch: Leningrad, Main Line, 6.O-O" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O")
+ ("A87" "Dutch: Leningrad, Main Line, 6...c6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O c6")
+ ("A87" "Dutch: Leningrad, Main Line, 6...d6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.b3" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 b3")
+ ("A87" "Dutch: Leningrad, Main Line, 7.b3 c6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 b3 c6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.d5" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 d5")
+ ("A87" "Dutch: Leningrad, Main Line, 7.d5 c6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 d5 c6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.d5 c5" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 d5 c5")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 
O-O O-O d6 Nc3")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 e6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O O-O d6 Nc3 e6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Na6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O O-O d6 Nc3 Na6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O O-O d6 Nc3 Qe8")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.Re1" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Qe8 Re1")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.Nd5" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Qe8 Nd5")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.b3" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Qe8 b3")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.d5" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Qe8 d5")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.d5 a5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Qe8 d5 a5")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.d5 Na6" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Qe8 d5 Na6")
+ ("A87" "Dutch: Leningrad, Main Line, 7.Nc3 Qe8 8.d5 Na6 9.Rb1" "d4 f5 c4 Nf6 
g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Qe8 d5 Na6 Rb1")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O O-O d6 Nc3 c6")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.Re1" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 c6 Re1")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.Qc2" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 c6 Qc2")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.b3"
+  "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 b3")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.b3 Na6" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 b3 Na6")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.b3 Qe8" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 b3 Qe8")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.b3 Qa5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 b3 Qa5")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 c6 d5")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 cxd5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 cxd5")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 Qe8" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 Qe8")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 Qa5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 Qa5")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 Bd7" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 Bd7")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 e5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 e5")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 e5 9.dxe6 Bxe6 10.b3" "d4 
f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 e5 dxe6 Bxe6 b3")
+ ("A88" "Dutch: Leningrad, Main Line, 7.Nc3 c6 8.d5 e5 9.dxe6 Bxe6 10.Qd3" "d4 
f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 c6 d5 e5 dxe6 Bxe6 Qd3")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6" "d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 
Nf3 O-O O-O d6 Nc3 Nc6")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.b3" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Nc6 b3")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5" "d4 f5 c4 Nf6 g3 g6 Bg2 
Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Na5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Na5")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Na5 9.Qd3" "d4 f5 c4 Nf6 
g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Na5 Qd3")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Na5 9.Nd2" "d4 f5 c4 Nf6 
g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Na5 Nd2")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Ne5" "d4 f5 c4 Nf6 g3 g6 
Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Ne5")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Ne5 9.Nxe5" "d4 f5 c4 Nf6 
g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Ne5 Nxe5")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Ne5 9.Nxe5 dxe5 10.Qb3" 
"d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Ne5 Nxe5 dxe5 Qb3")
+ ("A89" "Dutch: Leningrad, Main Line, 7.Nc3 Nc6 8.d5 Ne5 9.Nxe5 dxe5 10.e4" 
"d4 f5 c4 Nf6 g3 g6 Bg2 Bg7 Nf3 O-O O-O d6 Nc3 Nc6 d5 Ne5 Nxe5 dxe5 e4")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6" "d4 f5 c4 Nf6 g3 e6")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Nc3" "d4 f5 c4 Nf6 g3 e6 Nc3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Nc3 d5" "d4 f5 c4 Nf6 g3 e6 Nc3 d5")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Nf3" "d4 f5 c4 Nf6 g3 e6 Nf3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Nf3 d5" "d4 f5 c4 Nf6 g3 e6 Nf3 d5")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2" "d4 f5 c4 Nf6 g3 e6 Bg2")
+ ("A90" "Dutch: Dutch-Indian (Nimzo-Dutch) Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 
Bb4+")
+ ("A90" "Dutch: Dutch-Indian, 5.Nc3" "d4 f5 c4 Nf6 g3 e6 Bg2 Bb4+ Nc3")
+ ("A90" "Dutch: Dutch-Indian, 5.Nd2" "d4 f5 c4 Nf6 g3 e6 Bg2 Bb4+ Nd2")
+ ("A90" "Dutch: Dutch-Indian, 5.Bd2" "d4 f5 c4 Nf6 g3 e6 Bg2 Bb4+ Bd2")
+ ("A90" "Dutch: Dutch-Indian, Alekhine Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Bb4+ 
Bd2 Be7")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 d5" "d4 f5 c4 Nf6 g3 e6 Bg2 d5")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 d5 5.Nh3" "d4 f5 c4 Nf6 g3 e6 Bg2 d5 
Nh3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 d5 5.Nf3" "d4 f5 c4 Nf6 g3 e6 Bg2 d5 
Nf3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 c6" "d4 f5 c4 Nf6 g3 e6 Bg2 c6")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 c6 5.Nh3" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nh3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 c6 5.Nf3" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nf3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 c6 5.Nf3 d5" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nf3 d5")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.Nc3" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nf3 d5 Nc3")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.Qc2" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nf3 d5 Qc2")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.Qc2 Bd6" "d4 f5 c4 Nf6 g3 e6 Bg2 
c6 Nf3 d5 Qc2 Bd6")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.O-O" "d4 f5 c4 Nf6 g3 e6 Bg2 c6 
Nf3 d5 O-O")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.O-O Bd6" "d4 f5 c4 Nf6 g3 e6 Bg2 
c6 Nf3 d5 O-O Bd6")
+ ("A90" "Dutch: 2.c4 Nf6 3.g3 e6 5.Nf3 d5 6.O-O Bd6 7.b3" "d4 f5 c4 Nf6 g3 e6 
Bg2 c6 Nf3 d5 O-O Bd6 b3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nh3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3 O-O 6.O-O" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nh3 O-O O-O")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3 O-O 6.O-O d6" "d4 f5 c4 Nf6 
g3 e6 Bg2 Be7 Nh3 O-O O-O d6")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3 O-O 6.O-O d6 7.Nc3" "d4 f5 c4 
Nf6 g3 e6 Bg2 Be7 Nh3 O-O O-O d6 Nc3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3 O-O 6.O-O d6 7.Nc3 c6" "d4 f5 
c4 Nf6 g3 e6 Bg2 Be7 Nh3 O-O O-O d6 Nc3 c6")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nh3 O-O 6.O-O d6 7.Nc3 Qe8" "d4 
f5 c4 Nf6 g3 e6 Bg2 Be7 Nh3 O-O O-O d6 Nc3 Qe8")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nc3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nc3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nc3 d5" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nc3 d5")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nc3 O-O" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nc3 O-O")
+ ("A91" "Dutch: Botvinnik-Bronstein Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nc3 
O-O e3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 d6" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 d6")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 d6 6.Nc3" "d4 f5 c4 Nf6 g3 e6 
Bg2 Be7 Nf3 d6 Nc3")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 d5" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 d5")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 d5 6.O-O"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 d5 O-O")
+ ("A91" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 d5 6.O-O c6" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 d5 O-O c6")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 O-O")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.d5" "d4 f5 c4 Nf6 g3 e6 
Bg2 Be7 Nf3 O-O d5")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.Nc3" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 O-O Nc3")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.Nc3 d6" "d4 f5 c4 Nf6 
g3 e6 Bg2 Be7 Nf3 O-O Nc3 d6")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.O-O" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 O-O O-O")
+ ("A92" "Dutch: Alekhine Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
Ne4")
+ ("A92" "Dutch: Alekhine, 7.d5" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O Ne4 
d5")
+ ("A92" "Dutch: Alekhine, 7.Nbd2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O Ne4 
Nbd2")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.O-O c6" "d4 f5 c4 Nf6 
g3 e6 Bg2 Be7 Nf3 O-O O-O c6")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.O-O c6 7.b3" "d4 f5 c4 
Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O c6 b3")
+ ("A92" "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O 6.O-O c6 7.b3 a5" "d4 f5 
c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O c6 b3 a5")
+ ("A92" "Dutch: Stonewall Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d5")
+ ("A92" "Dutch: Stonewall, 7.Nbd2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 
Nbd2")
+ ("A92" "Dutch: Stonewall, 7.Nbd2 c6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d5 Nbd2 c6")
+ ("A92" "Dutch: Stonewall, 7.Qc2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 
Qc2")
+ ("A92" "Dutch: Stonewall, 7.Qc2 c6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d5 Qc2 c6")
+ ("A92" "Dutch: Stonewall, 7.Qc2 c6 8.Nbd2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 Qc2 c6 Nbd2")
+ ("A93" "Dutch: Stonewall, Botvinnik Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d5 b3")
+ ("A93" "Dutch: Stonewall, Botvinnik, 7...b6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 b6")
+ ("A93" "Dutch: Stonewall, Botvinnik, 7...Nc6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 Nc6")
+ ("A93" "Dutch: Stonewall, Botvinnik, 7...c6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 c6")
+ ("A93" "Dutch: Stonewall, Botvinnik, 8.Bb2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 c6 Bb2")
+ ("A93" "Dutch: Stonewall, Botvinnik, 8.Qc2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 c6 Qc2")
+ ("A93" "Dutch: Stonewall, Botvinnik, 8.Qc2 Ne4" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d5 b3 c6 Qc2 Ne4")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 b3 c6 Ba3")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bd7"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Bd7")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Nbd7" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d5 b3 c6 Ba3 Nbd7")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Nbd7 9.Bxe7" "d4 f5 c4 Nf6 g3 e6 
Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Nbd7 Bxe7")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bxa3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d5 b3 c6 Ba3 Bxa3")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bxa3 9.Nxa3" "d4 f5 c4 Nf6 g3 e6 
Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Bxa3 Nxa3")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bxa3 9.Nxa3 Nbd7" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Bxa3 Nxa3 Nbd7")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bxa3 9.Nxa3 Qe7" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Bxa3 Nxa3 Qe7")
+ ("A94" "Dutch: Stonewall, Botvinnik, 8.Ba3 Bxa3 9.Nxa3 Qe7 10.Qc1"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 b3 c6 Ba3 Bxa3 Nxa3 Qe7 Qc1")
+ ("A92" "Dutch: Stonewall, 7.Nc3"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.Ne5"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 Ne5")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.Bf4"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 Bf4")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.Bg5"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 Bg5")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.Qc2"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 Qc2")
+ ("A95" "Dutch: Stonewall: Chekhover Variation"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d5 Nc3 c6 Qc2 Qe8 Bg5")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.b3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d5 Nc3 c6 b3")
+ ("A95" "Dutch: Stonewall, 7.Nc3 c6 8.b3 Qe8" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d5 Nc3 c6 b3 Qe8")
+ ("A96" "Dutch: Classical" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6")
+ ("A96" "Dutch: Classical, 7.b3"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 b3")
+ ("A96" "Dutch: Classical, 7.b3 a5" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 
b3 a5")
+ ("A96" "Dutch: Classical, 7.b3 a5 8.Bb2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 b3 a5 Bb2")
+ ("A96" "Dutch: Classical, 7.b3 Qe8" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d6 b3 Qe8")
+ ("A96" "Dutch: Classical, 7.b3 Qe8 8.Bb2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 b3 Qe8 Bb2")
+ ("A96" "Dutch: Classical, 7.Nc3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 
Nc3")
+ ("A96" "Dutch: Classical, 7.Nc3 a5" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d6 Nc3 a5")
+ ("A96" "Dutch: Classical, 7.Nc3 a5 8.Qc2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 Nc3 a5 Qc2")
+ ("A96" "Dutch: Classical, 7.Nc3 a5 8.Re1" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 Nc3 a5 Re1")
+ ("A96" "Dutch: Classical, 7.Nc3 a5 8.b3" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 Nc3 a5 b3")
+ ("A97" "Dutch: Ilyin-Zhenevsky Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 Nc3 Qe8")
+ ("A97" "Dutch: Ilyin-Zhenevsky, 8.b4" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O 
d6 Nc3 Qe8 b4")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter Variation" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d6 Nc3 Qe8 Re1")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter, 8...Ne4" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d6 Nc3 Qe8 Re1 Ne4")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter, 8...Qh5" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d6 Nc3 Qe8 Re1 Qh5")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter, 8...Qg6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 
Nf3 O-O O-O d6 Nc3 Qe8 Re1 Qg6")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter, 8...Qg6 9.e4" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 O-O O-O d6 Nc3 Qe8 Re1 Qg6 e4")
+ ("A97" "Dutch: Ilyin-Zhenevsky, Winter, 8...Qg6 9.e4 fxe4" "d4 f5 c4 Nf6 g3 
e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 Re1 Qg6 e4 fxe4")
+ ("A98" "Dutch: Ilyin-Zhenevsky, 8.Qc2" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O 
O-O d6 Nc3 Qe8 Qc2")
+ ("A98" "Dutch: Ilyin-Zhenevsky, 8.Qc2 Nc6" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d6 Nc3 Qe8 Qc2 Nc6")
+ ("A98" "Dutch: Ilyin-Zhenevsky, 8.Qc2 Qh5" "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 
O-O O-O d6 Nc3 Qe8 Qc2 Qh5")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 c6"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 c6")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 Nc6"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 Nc6")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 Nbd7"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 Nbd7")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 Qh5"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 Qh5")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 Qh5 9.Bb2"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 Qh5 Bb2")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Qc2"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Qc2")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Ba3"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Ba3")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Bb2"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Bb2")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Bb2 c6"
+  "d4 f5 c4 Nf6 g3 e6 Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Bb2 c6")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Bb2 Na6" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Bb2 Na6")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Bb2 Qh5" "d4 f5 c4 Nf6 g3 e6 Bg2 
Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Bb2 Qh5")
+ ("A99" "Dutch: Ilyin-Zhenevsky, 8.b3 a5 9.Bb2 Qh5 10.e3" "d4 f5 c4 Nf6 g3 e6 
Bg2 Be7 Nf3 O-O O-O d6 Nc3 Qe8 b3 a5 Bb2 Qh5 e3")
+ ("B00a" "King's Pawn" "e4")
+ ("B00a" "King's Pawn: Hippopotamus Defence" "e4 Nh6 d4 g6 c4 f6")
+ ("B00a" "King's Pawn: Fred" "e4 f5")
+ ("B00b" "Reversed Grob (Borg/Basman Defence)" "e4 g5")
+ ("B00b" "Reversed Grob (Borg/Basman Defence)" "e4 g5 d4")
+ ("B00c" "St. George Defence" "e4 a6")
+ ("B00c" "St. George Defence" "e4 a6 d4")
+ ("B00c" "Basman's Creepy-Crawly System (as Black)" "e4 a6 d4 h6")
+ ("B00d" "Owen Defence" "e4 b6")
+ ("B00d" "Owen Defence" "e4 b6 d4")
+ ("B00e" "Owen Defence: French" "e4 b6 d4 e6")
+ ("B00f" "Owen Defence: 2.d4 Bb7" "e4 b6 d4 Bb7")
+ ("B00f" "Owen Defence: Naselwaus Gambit" "e4 b6 d4 Bb7 Bg5")
+ ("B00f" "Owen Defence: Smith Gambit" "e4 b6 d4 Bb7 Nf3")
+ ("B00g" "Owen Defence: 3.Bd3" "e4 b6 d4 Bb7 Bd3")
+ ("B00g" "Owen Defence: Matinovsky Gambit" "e4 b6 d4 Bb7 Bd3 f5")
+ ("B00h" "Owen Defence: 3.Bd3 Nf6" "e4 b6 d4 Bb7 Bd3 Nf6")
+ ("B00i" "Owen Defence: 3.Bd3 e6" "e4 b6 d4 Bb7 Bd3 e6")
+ ("B00j" "Owen Defence: 3.Bd3 e6 4.Nf3" "e4 b6 d4 Bb7 Bd3 e6 Nf3")
+ ("B00k" "Owen Defence: 3.Bd3 e6 4.Nf3 c5" "e4 b6 d4 Bb7 Bd3 e6 Nf3 c5")
+ ("B00k" "Owen Defence: 3.Bd3 e6 4.Nf3 c5 5.c3" "e4 b6 d4 Bb7 Bd3 e6 Nf3 c5 
c3")
+ ("B00l" "Nimzowitsch Defence" "e4 Nc6")
+ ("B00l" "Nimzowitsch Defence: Wheeler Gambit" "e4 Nc6 b4")
+ ("B00m" "Nimzowitsch Defence: 2.Nc3" "e4 Nc6 Nc3")
+ ("B00m" "Nimzowitsch Defence: 2.Nc3 Nf6" "e4 Nc6 Nc3 Nf6")
+ ("B00m" "Nimzowitsch Defence: 2.Nc3 e6" "e4 Nc6 Nc3 e6")
+ ("B00n" "Nimzowitsch Defence: 2.Nf3" "e4 Nc6 Nf3")
+ ("B00n" "Nimzowitsch Defence: Colorado Counter" "e4 Nc6 Nf3 f5")
+ ("B00o" "Nimzowitsch Defence: 2.Nf3 d6" "e4 Nc6 Nf3 d6")
+ ("B00o" "Nimzowitsch Defence: 2.Nf3 d6 3.d4" "e4 Nc6 Nf3 d6 d4")
+ ("B00o" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Bg4" "e4 Nc6 Nf3 d6 d4 Bg4")
+ ("B00p" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6" "e4 Nc6 Nf3 d6 d4 Nf6")
+ ("B00q" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3" "e4 Nc6 Nf3 d6 d4 Nf6 
Nc3")
+ ("B00q" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 g6" "e4 Nc6 Nf3 d6 d4 
Nf6 Nc3 g6")
+ ("B00r" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4" "e4 Nc6 Nf3 d6 d4 
Nf6 Nc3 Bg4")
+ ("B00r" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4 5.d5" "e4 Nc6 Nf3 
d6 d4 Nf6 Nc3 Bg4 d5")
+ ("B00r" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4 5.Bb5"
+  "e4 Nc6 Nf3 d6 d4 Nf6 Nc3 Bg4 Bb5")
+ ("B00r" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4 5.Be2"
+  "e4 Nc6 Nf3 d6 d4 Nf6 Nc3 Bg4 Be2")
+ ("B00s" "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4 5.Be3" "e4 Nc6 Nf3 
d6 d4 Nf6 Nc3 Bg4 Be3")
+ ("B00t" "Nimzowitsch Defence: 2.d4" "e4 Nc6 d4")
+ ("B00t" "Nimzowitsch Defence: 2.d4 d6" "e4 Nc6 d4 d6")
+ ("B00t" "Nimzowitsch Defence: 2.d4 d6 3.Nc3" "e4 Nc6 d4 d6 Nc3")
+ ("B00u" "Nimzowitsch Defence: 2.d4 e5" "e4 Nc6 d4 e5")
+ ("B00u" "Nimzowitsch Defence: 2.d4 e5 3.dxe5" "e4 Nc6 d4 e5 dxe5")
+ ("B00u" "Nimzowitsch Defence: Bielefelder Gambit" "e4 Nc6 d4 e5 dxe5 Bc5")
+ ("B00u" "Nimzowitsch Defence: 2.d4 e5 3.d5" "e4 Nc6 d4 e5 d5")
+ ("B00v" "Nimzowitsch Defence: 2.d4 d5" "e4 Nc6 d4 d5")
+ ("B00v" "Nimzowitsch Defence: 2.d4 d5 3.exd5" "e4 Nc6 d4 d5 exd5")
+ ("B00v" "Nimzowitsch Defence: Aachen Gambit" "e4 Nc6 d4 d5 exd5 Nb4")
+ ("B00v" "Nimzowitsch Defence: 2.d4 d5 3.exd5 Qxd5" "e4 Nc6 d4 d5 exd5 Qxd5")
+ ("B00v" "Nimzowitsch Defence: Marshall Gambit" "e4 Nc6 d4 d5 exd5 Qxd5 Nc3")
+ ("B00v" "Nimzowitsch Defence: 2.d4 d5 3.exd5 Qxd5 4.Nf3" "e4 Nc6 d4 d5 exd5 
Qxd5 Nf3")
+ ("B00w" "Nimzowitsch Defence: Bogoljubow Variation" "e4 Nc6 d4 d5 Nc3")
+ ("B00w" "Nimzowitsch Defence: Bogoljubow, 3...e5" "e4 Nc6 d4 d5 Nc3 e5")
+ ("B00w" "Nimzowitsch Defence: Bogoljubow, 3...dxe4" "e4 Nc6 d4 d5 Nc3 dxe4")
+ ("B00x" "Nimzowitsch Defence: 2.d4 d5 3.e5" "e4 Nc6 d4 d5 e5")
+ ("B00x" "Nimzowitsch Defence: 2.d4 d5 3.e5 Bf5" "e4 Nc6 d4 d5 e5 Bf5")
+ ("B00x" "Nimzowitsch Defence: 2.d4 d5 3.e5 Bf5 4.c3" "e4 Nc6 d4 d5 e5 Bf5 c3")
+ ("B01a" "Scandinavian (Centre Counter)" "e4 d5")
+ ("B01a" "Scandinavian: 2.d3" "e4 d5 d3")
+ ("B01a" "Scandinavian: 2.e5" "e4 d5 e5")
+ ("B01a" "Scandinavian: 2.exd5" "e4 d5 exd5")
+ ("B01a" "Scandinavian: Böhnke Gambit" "e4 d5 exd5 e5")
+ ("B01b" "Scandinavian: 2...Qxd5" "e4 d5 exd5 Qxd5")
+ ("B01b" "Scandinavian: 2...Qxd5 3.Nf3" "e4 d5 exd5 Qxd5 Nf3")
+ ("B01b" "Scandinavian: 2...Qxd5 3.Nf3 Nf6" "e4 d5 exd5 Qxd5 Nf3 Nf6")
+ ("B01b" "Scandinavian: 2...Qxd5 3.d4" "e4 d5 exd5 Qxd5 d4")
+ ("B01b" "Scandinavian: 2...Qxd5 3.d4 Nf6" "e4 d5 exd5 Qxd5 d4 Nf6")
+ ("B01b" "Scandinavian: 2...Qxd5 3.d4 e5" "e4 d5 exd5 Qxd5 d4 e5")
+ ("B01b" "Scandinavian: 2...Qxd5 3.Nc3" "e4 d5 exd5 Qxd5 Nc3")
+ ("B01c" "Scandinavian: 2...Qxd5 3.Nc3 Qd8" "e4 d5 exd5 Qxd5 Nc3 Qd8")
+ ("B01d" "Scandinavian: Schiller Defence" "e4 d5 exd5 Qxd5 Nc3 Qd6")
+ ("B01d" "Scandinavian: Schiller, 4.d4 Nf6" "e4 d5 exd5 Qxd5 Nc3 Qd6 d4 Nf6")
+ ("B01d" "Scandinavian: Schiller, Bronstein Variation" "e4 d5 exd5 Qxd5 Nc3 
Qd6 d4 Nf6 Nf3 a6")
+ ("B01e" "Scandinavian: 2...Qxd5 3.Nc3 Qa5" "e4 d5 exd5 Qxd5 Nc3 Qa5")
+ ("B01e" "Scandinavian, Mieses Gambit" "e4 d5 exd5 Qxd5 Nc3 Qa5 b4")
+ ("B01e" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.g3" "e4 d5 exd5 Qxd5 Nc3 Qa5 g3")
+ ("B01e" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Bc4" "e4 d5 exd5 Qxd5 Nc3 Qa5 
Bc4")
+ ("B01e" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Bc4 Nf6" "e4 d5 exd5 Qxd5 Nc3 Qa5 
Bc4 Nf6")
+ ("B01f" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Nf3" "e4 d5 exd5 Qxd5 Nc3 Qa5 
Nf3")
+ ("B01f" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Nf3 Nf6" "e4 d5 exd5 Qxd5 Nc3 Qa5 
Nf3 Nf6")
+ ("B01f" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Nf3 Nf6 5.Be2" "e4 d5 exd5 Qxd5 
Nc3 Qa5 Nf3 Nf6 Be2")
+ ("B01g" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4")
+ ("B01g" "Scandinavian: Anderssen Counterattack" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 
e5")
+ ("B01g" "Scandinavian: Anderssen Counterattack, Goteborg Variation" "e4 d5 
exd5 Qxd5 Nc3 Qa5 d4 e5 Nf3")
+ ("B01g" "Scandinavian: Anderssen Counterattack, Collijn Variation" "e4 d5 
exd5 Qxd5 Nc3 Qa5 d4 e5 Nf3 Bg4")
+ ("B01g" "Scandinavian: Anderssen Counterattack, 5.dxe5" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 e5 dxe5")
+ ("B01h" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 c6" "e4 d5 exd5 Qxd5 Nc3 Qa5 
d4 c6")
+ ("B01h" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 c6 5.Bc4" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 c6 Bc4")
+ ("B01h" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 c6 5.Nf3" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 c6 Nf3")
+ ("B01i" "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 Nf6" "e4 d5 exd5 Qxd5 Nc3 Qa5 
d4 Nf6")
+ ("B01i" "Scandinavian: 2...Qxd5, 5.Bd2" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Bd2")
+ ("B01i" "Scandinavian: 2...Qxd5, 5.Bd2 c6" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Bd2 c6")
+ ("B01i" "Scandinavian: 2...Qxd5, 5.Bc4" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Bc4")
+ ("B01i" "Scandinavian: 2...Qxd5, 5.Bc4 c6" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Bc4 c6")
+ ("B01j" "Scandinavian: 2...Qxd5, 5.Nf3" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Nf3")
+ ("B01j" "Scandinavian: 2...Qxd5, 5.Nf3 Bg4" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Nf3 Bg4")
+ ("B01k" "Scandinavian: Lasker Variation" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 Nf3 
Bg4 h3")
+ ("B01l" "Scandinavian: 2...Qxd5, 5.Nf3 Bf5" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Nf3 Bf5")
+ ("B01l" "Scandinavian: Grünfeld Variation" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Nf3 Bf5 Ne5 c6 g4")
+ ("B01l" "Scandinavian: 2...Qxd5, 5.Nf3 Bf5 6.Bc4" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 
Nf6 Nf3 Bf5 Bc4")
+ ("B01m" "Scandinavian: 2...Qxd5, Main Line" "e4 d5 exd5 Qxd5 Nc3 Qa5 d4 Nf6 
Nf3 c6")
+ ("B01n" "Scandinavian: 2...Qxd5, Main Line, 6.Bc4" "e4 d5 exd5 Qxd5 Nc3 Qa5 
d4 Nf6 Nf3 c6 Bc4")
+ ("B01n" "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bg4" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 Nf6 Nf3 c6 Bc4 Bg4")
+ ("B01o" "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bf5" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5")
+ ("B01p" "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bf5 7.Bd2" "e4 d5 exd5 Qxd5 
Nc3 Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2")
+ ("B01p" "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bf5 7.Bd2 e6" "e4 d5 exd5 
Qxd5 Nc3 Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6")
+ ("B01p" "Scandinavian: 2...Qxd5, Main Line, 8.Nd5" "e4 d5 exd5 Qxd5 Nc3 Qa5 
d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Nd5")
+ ("B01q" "Scandinavian: 2...Qxd5, Main Line, 8.Qe2" "e4 d5 exd5 Qxd5 Nc3 Qa5 
d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Qe2")
+ ("B01q" "Scandinavian: 2...Qxd5, Main Line, 8.Qe2 Bb4" "e4 d5 exd5 Qxd5 Nc3 
Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Qe2 Bb4")
+ ("B01q" "Scandinavian: 2...Qxd5, Main Line, 8.Qe2 Bb4 9.a3" "e4 d5 exd5 Qxd5 
Nc3 Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Qe2 Bb4 a3")
+ ("B01q" "Scandinavian: 2...Qxd5, Main Line, 8.Qe2 Bb4 9.O-O-O" "e4 d5 exd5 
Qxd5 Nc3 Qa5 d4 Nf6 Nf3 c6 Bc4 Bf5 Bd2 e6 Qe2 Bb4 O-O-O")
+ ("B01r" "Scandinavian: 2...Nf6" "e4 d5 exd5 Nf6")
+ ("B01r" "Scandinavian: 2...Nf6 3.Bc4" "e4 d5 exd5 Nf6 Bc4")
+ ("B01r" "Scandinavian: 2...Nf6 3.Nf3" "e4 d5 exd5 Nf6 Nf3")
+ ("B01r" "Scandinavian: 2...Nf6 3.Nf3 Nxd5" "e4 d5 exd5 Nf6 Nf3 Nxd5")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+" "e4 d5 exd5 Nf6 Bb5+")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Nbd7" "e4 d5 exd5 Nf6 Bb5+ Nbd7")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Bd7" "e4 d5 exd5 Nf6 Bb5+ Bd7")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Bd7 4.Bc4" "e4 d5 exd5 Nf6 Bb5+ Bd7 
Bc4")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Bd7 4.Bc4 Bg4" "e4 d5 exd5 Nf6 Bb5+ Bd7 
Bc4 Bg4")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Bd7 4.Be2" "e4 d5 exd5 Nf6 Bb5+ Bd7 
Be2")
+ ("B01s" "Scandinavian: 2...Nf6 3.Bb5+ Bd7 4.Be2 Nxd5 5.d4 Bf5" "e4 d5 exd5 
Nf6 Bb5+ Bd7 Be2 Nxd5 d4 Bf5")
+ ("B01t" "Scandinavian: 2...Nf6 3.c4" "e4 d5 exd5 Nf6 c4")
+ ("B01t" "Scandinavian: Scandinavian Gambit" "e4 d5 exd5 Nf6 c4 c6")
+ ("B01t" "Scandinavian: Scandinavian Gambit Accepted" "e4 d5 exd5 Nf6 c4 c6 
dxc6")
+ ("B01t" "Scandinavian: Icelandic Gambit" "e4 d5 exd5 Nf6 c4 e6")
+ ("B01t" "Scandinavian: Icelandic Gambit Accepted" "e4 d5 exd5 Nf6 c4 e6 dxe6")
+ ("B01t" "Scandinavian: Icelandic Gambit Accepted" "e4 d5 exd5 Nf6 c4 e6 dxe6 
Bxe6")
+ ("B01t" "Scandinavian: Icelandic Gambit, 5.d4" "e4 d5 exd5 Nf6 c4 e6 dxe6 
Bxe6 d4")
+ ("B01t" "Scandinavian: Icelandic Gambit, 5.Nf3" "e4 d5 exd5 Nf6 c4 e6 dxe6 
Bxe6 Nf3")
+ ("B01u" "Scandinavian: 2...Nf6 3.d4" "e4 d5 exd5 Nf6 d4")
+ ("B01u" "Scandinavian: Richter Variation" "e4 d5 exd5 Nf6 d4 g6")
+ ("B01u" "Scandinavian: Portuguese Variation" "e4 d5 exd5 Nf6 d4 Bg4")
+ ("B01u" "Scandinavian: Portuguese, 4.Bb5+" "e4 d5 exd5 Nf6 d4 Bg4 Bb5+")
+ ("B01u" "Scandinavian: Portuguese, 4.Nf3" "e4 d5 exd5 Nf6 d4 Bg4 Nf3")
+ ("B01u" "Scandinavian: Portuguese, 4.Nf3 Qxd5" "e4 d5 exd5 Nf6 d4 Bg4 Nf3 
Qxd5")
+ ("B01u" "Scandinavian: Portuguese, 4.Nf3 Qxd5 5.Be2" "e4 d5 exd5 Nf6 d4 Bg4 
Nf3 Qxd5 Be2")
+ ("B01u" "Scandinavian: Portuguese, 4.Nf3 Qxd5 5.Be2 Nc6" "e4 d5 exd5 Nf6 d4 
Bg4 Nf3 Qxd5 Be2 Nc6")
+ ("B01u" "Scandinavian: Portuguese, 4.Be2" "e4 d5 exd5 Nf6 d4 Bg4 Be2")
+ ("B01u" "Scandinavian: Portuguese, 4.Be2 Bxe2" "e4 d5 exd5 Nf6 d4 Bg4 Be2 
Bxe2")
+ ("B01v" "Scandinavian: Portuguese, 4.f3" "e4 d5 exd5 Nf6 d4 Bg4 f3")
+ ("B01v" "Scandinavian: Portuguese, 4.f3 Bf5" "e4 d5 exd5 Nf6 d4 Bg4 f3 Bf5")
+ ("B01v" "Scandinavian: Portuguese, 4.f3 Bf5 5.c4" "e4 d5 exd5 Nf6 d4 Bg4 f3 
Bf5 c4")
+ ("B01v" "Scandinavian: Portuguese, 4.f3 Bf5 5.Bb5+" "e4 d5 exd5 Nf6 d4 Bg4 f3 
Bf5 Bb5+")
+ ("B01v" "Scandinavian: Portuguese, 4.f3 Bf5 5.Bb5+ Nbd7" "e4 d5 exd5 Nf6 d4 
Bg4 f3 Bf5 Bb5+ Nbd7")
+ ("B01v" "Scandinavian: Portuguese, 4.f3 Bf5 5.Bb5+ Nbd7 6.c4" "e4 d5 exd5 Nf6 
d4 Bg4 f3 Bf5 Bb5+ Nbd7 c4")
+ ("B01w" "Scandinavian: Marshall Variation" "e4 d5 exd5 Nf6 d4 Nxd5")
+ ("B01w" "Scandinavian: Marshall, 4.Nf3" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3")
+ ("B01w" "Scandinavian: Marshall, 4.Nf3 Bf5" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3 Bf5")
+ ("B01w" "Scandinavian: Marshall, 4.Nf3 Bg4" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3 Bg4")
+ ("B01w" "Scandinavian: Marshall, 4.Nf3 Bg4 5.Be2" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3 
Bg4 Be2")
+ ("B01w" "Scandinavian: Marshall, 4.Nf3 Bg4 5.Be2 e6" "e4 d5 exd5 Nf6 d4 Nxd5 
Nf3 Bg4 Be2 e6")
+ ("B01x" "Scandinavian: Marshall, 4.Nf3 g6" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3 g6")
+ ("B01x" "Scandinavian: Marshall, 4.Nf3 g6 5.Be2" "e4 d5 exd5 Nf6 d4 Nxd5 Nf3 
g6 Be2")
+ ("B01x" "Scandinavian: Marshall, 4.Nf3 g6 5.Be2 Bg7" "e4 d5 exd5 Nf6 d4 Nxd5 
Nf3 g6 Be2 Bg7")
+ ("B01y" "Scandinavian: Marshall, 4.c4" "e4 d5 exd5 Nf6 d4 Nxd5 c4")
+ ("B01y" "Scandinavian: Marshall, 4.c4 Nf6" "e4 d5 exd5 Nf6 d4 Nxd5 c4 Nf6")
+ ("B01y" "Scandinavian: Marshall, 4.c4 Nb6" "e4 d5 exd5 Nf6 d4 Nxd5 c4 Nb6")
+ ("B01y" "Scandinavian: Marshall, 4.c4 Nb6 5.Nc3" "e4 d5 exd5 Nf6 d4 Nxd5 c4 
Nb6 Nc3")
+ ("B01y" "Scandinavian: Marshall, 4.c4 Nb6 5.Nc3 e5" "e4 d5 exd5 Nf6 d4 Nxd5 
c4 Nb6 Nc3 e5")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3" "e4 d5 exd5 Nf6 d4 Nxd5 c4 
Nb6 Nf3")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 Bg4" "e4 d5 exd5 Nf6 d4 Nxd5 
c4 Nb6 Nf3 Bg4")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 Bg4 6.Be2 e6" "e4 d5 exd5 Nf6 
d4 Nxd5 c4 Nb6 Nf3 Bg4 Be2 e6")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 Bg4 6.c5" "e4 d5 exd5 Nf6 d4 
Nxd5 c4 Nb6 Nf3 Bg4 c5")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6" "e4 d5 exd5 Nf6 d4 Nxd5 
c4 Nb6 Nf3 g6")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.Be2" "e4 d5 exd5 Nf6 d4 
Nxd5 c4 Nb6 Nf3 g6 Be2")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.Be2 Bg7" "e4 d5 exd5 Nf6 
d4 Nxd5 c4 Nb6 Nf3 g6 Be2 Bg7")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.h3" "e4 d5 exd5 Nf6 d4 
Nxd5 c4 Nb6 Nf3 g6 h3")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.h3 Bg7"
+  "e4 d5 exd5 Nf6 d4 Nxd5 c4 Nb6 Nf3 g6 h3 Bg7")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.Nc3" "e4 d5 exd5 Nf6 d4 
Nxd5 c4 Nb6 Nf3 g6 Nc3")
+ ("B01z" "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3 g6 6.Nc3 Bg7" "e4 d5 exd5 Nf6 
d4 Nxd5 c4 Nb6 Nf3 g6 Nc3 Bg7")
+ ("B02a" "Alekhine Defence" "e4 Nf6")
+ ("B02a" "Alekhine: Krejcik Variation" "e4 Nf6 Bc4")
+ ("B02b" "Alekhine: Maroczy Variation" "e4 Nf6 d3")
+ ("B02c" "Alekhine: Scandinavian Variation" "e4 Nf6 Nc3")
+ ("B02c" "Alekhine: Scandinavian Variation" "e4 Nf6 Nc3 d5")
+ ("B02d" "Alekhine: Scandinavian, 3.e5" "e4 Nf6 Nc3 d5 e5")
+ ("B02e" "Alekhine: Scandinavian, 3.e5 Ne4" "e4 Nf6 Nc3 d5 e5 Ne4")
+ ("B02f" "Alekhine: Scandinavian, 3.e5 Nfd7" "e4 Nf6 Nc3 d5 e5 Nfd7")
+ ("B02f" "Alekhine: Spielmann Gambit" "e4 Nf6 Nc3 d5 e5 Nfd7 e6")
+ ("B02g" "Alekhine: Scandinavian, Exchange" "e4 Nf6 Nc3 d5 exd5")
+ ("B02g" "Alekhine: Scandinavian, Geschev Gambit" "e4 Nf6 Nc3 d5 exd5 c6")
+ ("B02g" "Alekhine: Scandinavian, Exchange" "e4 Nf6 Nc3 d5 exd5 Nxd5")
+ ("B02g" "Alekhine: Scandinavian, Exchange, 4.Nf3" "e4 Nf6 Nc3 d5 exd5 Nxd5 
Nf3")
+ ("B02g" "Alekhine: Scandinavian, Exchange, 4.Nxd5" "e4 Nf6 Nc3 d5 exd5 Nxd5 
Nxd5")
+ ("B02g" "Alekhine: Scandinavian, Exchange, 4.Nxd5" "e4 Nf6 Nc3 d5 exd5 Nxd5 
Nxd5 Qxd5")
+ ("B02h" "Alekhine: Scandinavian, Exchange, 4.Bc4" "e4 Nf6 Nc3 d5 exd5 Nxd5 
Bc4")
+ ("B02i" "Alekhine: Scandinavian, Exchange, 4.Bc4 Nb6" "e4 Nf6 Nc3 d5 exd5 
Nxd5 Bc4 Nb6")
+ ("B02j" "Alekhine: 2.e5" "e4 Nf6 e5")
+ ("B02j" "Alekhine: Mokele Mbembe (Bücker) Variation" "e4 Nf6 e5 Ne4")
+ ("B02j" "Alekhine: Brooklyn Defence (Retreat Variation)" "e4 Nf6 e5 Ng8")
+ ("B02k" "Alekhine: 2.e5 Nd5" "e4 Nf6 e5 Nd5")
+ ("B02k" "Alekhine: Welling Variation" "e4 Nf6 e5 Nd5 b3")
+ ("B02l" "Alekhine: 3.Bc4" "e4 Nf6 e5 Nd5 Bc4")
+ ("B02l" "Alekhine: Kmoch Variation" "e4 Nf6 e5 Nd5 Bc4 Nb6 Bb3 c5 d3")
+ ("B02m" "Alekhine: Sämisch Attack" "e4 Nf6 e5 Nd5 Nc3")
+ ("B02n" "Alekhine: Sämisch Attack, 3...Nxc3" "e4 Nf6 e5 Nd5 Nc3 Nxc3")
+ ("B02o" "Alekhine: Chase Variation" "e4 Nf6 e5 Nd5 c4")
+ ("B02o" "Alekhine: Chase Variation" "e4 Nf6 e5 Nd5 c4 Nb6")
+ ("B02o" "Alekhine: Chase, Steiner Variation" "e4 Nf6 e5 Nd5 c4 Nb6 b3")
+ ("B02p" "Alekhine: Two Pawns (Lasker) Attack" "e4 Nf6 e5 Nd5 c4 Nb6 c5")
+ ("B02q" "Alekhine: Two Pawns Attack, 5.Nc3" "e4 Nf6 e5 Nd5 c4 Nb6 c5 Nd5 Nc3")
+ ("B02r" "Alekhine: Two Pawns Attack, 5.Bc4" "e4 Nf6 e5 Nd5 c4 Nb6 c5 Nd5 Bc4")
+ ("B02r" "Alekhine: Two Pawns Attack, Mikenas Variation" "e4 Nf6 e5 Nd5 c4 Nb6 
c5 Nd5 Bc4 e6 Nc3 d6")
+ ("B03a" "Alekhine: 3.d4" "e4 Nf6 e5 Nd5 d4")
+ ("B03a" "Alekhine: O'Sullivan Gambit" "e4 Nf6 e5 Nd5 d4 b5")
+ ("B03b" "Alekhine: 3.d4 d6" "e4 Nf6 e5 Nd5 d4 d6")
+ ("B03c" "Alekhine: 3.d4 d6 4.exd6" "e4 Nf6 e5 Nd5 d4 d6 exd6")
+ ("B03d" "Alekhine: Balogh Variation" "e4 Nf6 e5 Nd5 d4 d6 Bc4")
+ ("B03e" "Alekhine: 4.c4" "e4 Nf6 e5 Nd5 d4 d6 c4")
+ ("B03e" "Alekhine: 4.c4 Nb6" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6")
+ ("B03f" "Alekhine: 4.c4 Nb6 5.Nf3" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 Nf3")
+ ("B03g" "Alekhine: Four Pawns Attack" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 f4")
+ ("B03g" "Alekhine: Four Pawns Attack, Planinc Variation" "e4 Nf6 e5 Nd5 d4 d6 
c4 Nb6 f4 g5")
+ ("B03h" "Alekhine: Four Pawns Attack, Trifunovic Variation" "e4 Nf6 e5 Nd5 d4 
d6 c4 Nb6 f4 Bf5")
+ ("B03i" "Alekhine: Four Pawns Attack, Fianchetto Variation" "e4 Nf6 e5 Nd5 d4 
d6 c4 Nb6 f4 g6")
+ ("B03j" "Alekhine: Four Pawns Attack, 5...dxe5" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 
f4 dxe5")
+ ("B03j" "Alekhine: Four Pawns Attack, 5...dxe5" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 
f4 dxe5 fxe5")
+ ("B03k" "Alekhine: Four Pawns Attack, 6...c5" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 f4 
dxe5 fxe5 c5")
+ ("B03l" "Alekhine: Four Pawns Attack, 6...Bf5" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 f4 
dxe5 fxe5 Bf5")
+ ("B03l" "Alekhine: Four Pawns Attack, Fahrni Variation" "e4 Nf6 e5 Nd5 d4 d6 
c4 Nb6 f4 dxe5 fxe5 Bf5 Nc3 e6 Nf3 Bb4 Bd3")
+ ("B03l" "Alekhine: Four Pawns Attack, Korchnoi Variation" "e4 Nf6 e5 Nd5 d4 
d6 c4 Nb6 f4 dxe5 fxe5 Bf5 Nc3 e6 Nf3 Be7 Be2 O-O O-O f6")
+ ("B03m" "Alekhine: Four Pawns Attack, 6...Nc6" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 f4 
dxe5 fxe5 Nc6")
+ ("B03m" "Alekhine: Four Pawns Attack, Ilyin-Zhenevsky Variation" "e4 Nf6 e5 
Nd5 d4 d6 c4 Nb6 f4 dxe5 fxe5 Nc6 Nf3 Bg4 e6 fxe6 c5")
+ ("B03n" "Alekhine: Four Pawns Attack, 7.Be3" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 f4 
dxe5 fxe5 Nc6 Be3")
+ ("B03o" "Alekhine: Exchange Variation" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6")
+ ("B03o" "Alekhine: Exchange, 5...exd6" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6 exd6")
+ ("B03p" "Alekhine: Exchange, 5...exd6 6.Nc3" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6 
exd6 Nc3")
+ ("B03q" "Alekhine: Exchange, 5...exd6 6.Nc3 Be7" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 
exd6 exd6 Nc3 Be7")
+ ("B03r" "Alekhine: Exchange, 5...cxd6" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6 cxd6")
+ ("B03s" "Alekhine: Exchange, 5...cxd6 6.Nc3" "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6 
cxd6 Nc3")
+ ("B03t" "Alekhine: Exchange, 5...cxd6 6.Nc3 g6 7.Be3"
+  "e4 Nf6 e5 Nd5 d4 d6 c4 Nb6 exd6 cxd6 Nc3 g6 Be3")
+ ("B04a" "Alekhine: Modern Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3")
+ ("B04b" "Alekhine: Modern, 4...Nc6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Nc6")
+ ("B04c" "Alekhine: Modern, 4...c6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 c6")
+ ("B04d" "Alekhine: Modern, 4...c6 5.c4" "e4 Nf6 e5 Nd5 d4 d6 Nf3 c6 c4")
+ ("B04e" "Alekhine: Modern, Schmid Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Nb6")
+ ("B04f" "Alekhine: Modern, Larsen Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 dxe5")
+ ("B04g" "Alekhine: Modern, Larsen, 5.Nxe5 g6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 dxe5 
Nxe5 g6")
+ ("B04h" "Alekhine: Modern, Larsen, 5.Nxe5 g6 6.Bc4" "e4 Nf6 e5 Nd5 d4 d6 Nf3 
dxe5 Nxe5 g6 Bc4")
+ ("B04i" "Alekhine: Modern, Larsen, 5.Nxe5 g6 6.Bc4 c6 7.O-O" "e4 Nf6 e5 Nd5 
d4 d6 Nf3 dxe5 Nxe5 g6 Bc4 c6 O-O")
+ ("B04j" "Alekhine: Modern, Fianchetto Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 g6")
+ ("B04k" "Alekhine: Modern, Fianchetto, 5.Bc4" "e4 Nf6 e5 Nd5 d4 d6 Nf3 g6 
Bc4")
+ ("B04l" "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 g6 
Bc4 Nb6")
+ ("B04m" "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6 6.Bb3 Bg7" "e4 Nf6 e5 Nd5 d4 
d6 Nf3 g6 Bc4 Nb6 Bb3 Bg7")
+ ("B04n" "Alekhine: Modern, Fianchetto, Keres Variation" "e4 Nf6 e5 Nd5 d4 d6 
Nf3 g6 Bc4 Nb6 Bb3 Bg7 a4")
+ ("B04o" "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6 6.Bb3 Bg7 7.Ng5" "e4 Nf6 e5 
Nd5 d4 d6 Nf3 g6 Bc4 Nb6 Bb3 Bg7 Ng5")
+ ("B05a" "Alekhine: Modern, 4...Bg4" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4")
+ ("B05b" "Alekhine: Modern, Panov Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 h3")
+ ("B05c" "Alekhine: Modern, Alekhine Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 
c4")
+ ("B05c" "Alekhine: Modern, Alekhine Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 
c4 Nb6")
+ ("B05d" "Alekhine: Modern, Alekhine Variation, 6.exd6" "e4 Nf6 e5 Nd5 d4 d6 
Nf3 Bg4 c4 Nb6 exd6")
+ ("B05d" "Alekhine: Modern, Alekhine Variation, 6.exd6 cxd6"
+  "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 c4 Nb6 exd6 cxd6")
+ ("B05e" "Alekhine: Modern, Alekhine Variation, 6.exd6 exd6" "e4 Nf6 e5 Nd5 d4 
d6 Nf3 Bg4 c4 Nb6 exd6 exd6")
+ ("B05f" "Alekhine: Modern, 5.Be2" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2")
+ ("B05g" "Alekhine: Modern, 5.Be2 Nc6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 Nc6")
+ ("B05h" "Alekhine: Modern, Flohr Variation" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 
c6")
+ ("B05i" "Alekhine: Modern, Flohr, 6.c4" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 c6 
c4")
+ ("B05j" "Alekhine: Modern, Flohr, 6.O-O" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 c6 
O-O")
+ ("B05k" "Alekhine: Modern, 5.Be2 e6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 e6")
+ ("B05l" "Alekhine: Modern, 5.Be2 e6 6.O-O" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 
e6 O-O")
+ ("B05m" "Alekhine: Modern, Main Line" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 e6 O-O 
Be7 c4")
+ ("B05n" "Alekhine: Modern, Main Line, 8.h3" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 
e6 O-O Be7 c4 Nb6 h3")
+ ("B05n" "Alekhine: Modern, Main Line, 8.h3 Bh5" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 
Be2 e6 O-O Be7 c4 Nb6 h3 Bh5")
+ ("B05o" "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3" "e4 Nf6 e5 Nd5 d4 d6 
Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 h3 Bh5 Nc3")
+ ("B05o" "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3 O-O" "e4 Nf6 e5 Nd5 d4 
d6 Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 h3 Bh5 Nc3 O-O")
+ ("B05o" "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3 O-O 10.Be3" "e4 Nf6 e5 
Nd5 d4 d6 Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 h3 Bh5 Nc3 O-O Be3")
+ ("B05p" "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3 O-O 10.Be3 d5" "e4 Nf6 
e5 Nd5 d4 d6 Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 h3 Bh5 Nc3 O-O Be3 d5")
+ ("B05q" "Alekhine: Modern, Main Line, 8.exd6" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 
Be2 e6 O-O Be7 c4 Nb6 exd6")
+ ("B05r" "Alekhine: Modern, Main Line, 8.Nc3" "e4 Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 
e6 O-O Be7 c4 Nb6 Nc3")
+ ("B05s" "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3" "e4 Nf6 e5 Nd5 d4 d6 
Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 Nc3 O-O Be3")
+ ("B05t" "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3 Nc6" "e4 Nf6 e5 Nd5 d4 
d6 Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 Nc3 O-O Be3 Nc6")
+ ("B05u" "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3 Nc6 10.exd6 cxd6" "e4 
Nf6 e5 Nd5 d4 d6 Nf3 Bg4 Be2 e6 O-O Be7 c4 Nb6 Nc3 O-O Be3 Nc6 exd6 cxd6")
+ ("B06a" "Modern" "e4 g6")
+ ("B06b" "Modern" "e4 g6 Nc3")
+ ("B06b" "Modern" "e4 g6 Nc3 d6")
+ ("B06b" "Modern" "e4 g6 Nc3 Bg7")
+ ("B06c" "Modern" "e4 g6 Nc3 Bg7 f4 d6")
+ ("B06c" "Modern" "e4 g6 f4")
+ ("B06c" "Modern" "e4 g6 f4 d6")
+ ("B06c" "Modern" "e4 g6 f4 Bg7 Nf3")
+ ("B06c" "Modern" "e4 g6 f4 Bg7 Nf3 d6")
+ ("B06d" "Modern" "e4 g6 d4")
+ ("B06d" "Modern: Norwegian Defence" "e4 g6 d4 Nf6")
+ ("B06d" "Modern: Norwegian Defence" "e4 g6 d4 Nf6 e5 Nh5 g4 Ng7")
+ ("B06d" "Modern" "e4 g6 d4 c6")
+ ("B06e" "Modern" "e4 g6 d4 d6")
+ ("B06f" "Modern" "e4 g6 d4 Bg7")
+ ("B06f" "Modern: 3.Bc4" "e4 g6 d4 Bg7 Bc4")
+ ("B06g" "Modern: 3.c3" "e4 g6 d4 Bg7 c3")
+ ("B06g" "Modern: 3.c3" "e4 g6 d4 Bg7 c3 d6")
+ ("B06g" "Modern: c3 Pterodactyl" "e4 g6 d4 Bg7 c3 d6 f4 c5")
+ ("B06h" "Modern: Geller System" "e4 g6 d4 Bg7 c3 d6 Nf3")
+ ("B06i" "Modern: 3.Nf3" "e4 g6 d4 Bg7 Nf3")
+ ("B06j" "Modern: 3.Nf3 d6" "e4 g6 d4 Bg7 Nf3 d6")
+ ("B06k" "Modern: 3.Nf3 d6 4.Bc4" "e4 g6 d4 Bg7 Nf3 d6 Bc4")
+ ("B06l" "Modern: 3.Nc3" "e4 g6 d4 Bg7 Nc3")
+ ("B06l" "Modern: Mittenberger Gambit" "e4 g6 d4 Bg7 Nc3 d5")
+ ("B06l" "Modern: Nc3 Pterodactyl" "e4 g6 d4 Bg7 Nc3 c5")
+ ("B06m" "Modern: 3.Nc3" "e4 g6 d4 Bg7 Nc3 d6")
+ ("B06n" "Modern: 3.Nc3 d6 4.Bc4" "e4 g6 d4 Bg7 Nc3 d6 Bc4")
+ ("B06n" "Modern: 3.Nc3 d6 4.Bc4" "e4 g6 d4 Bg7 Nc3 d6 Bc4 c6")
+ ("B06n" "Modern: 3.Nc3 d6 4.Bc4" "e4 g6 d4 Bg7 Nc3 d6 Bc4 c6 Qf3")
+ ("B06n" "Modern: 3.Nc3 d6 4.Bc4" "e4 g6 d4 Bg7 Nc3 d6 Bc4 c6 Qf3 Nf6")
+ ("B06n" "Modern: 3.Nc3 d6 4.Bc4" "e4 g6 d4 Bg7 Nc3 d6 Bc4 c6 Qf3 e6")
+ ("B06o" "Modern: 3.Nc3 d6 4.Be3" "e4 g6 d4 Bg7 Nc3 d6 Be3")
+ ("B06p" "Modern: 3.Nc3 d6 4.Be3 a6" "e4 g6 d4 Bg7 Nc3 d6 Be3 a6")
+ ("B06q" "Modern: 3.Nc3 d6 4.Be3 c6" "e4 g6 d4 Bg7 Nc3 d6 Be3 c6")
+ ("B06r" "Modern: Two Knights Variation" "e4 g6 d4 Bg7 Nc3 d6 Nf3")
+ ("B06r" "Modern: Two Knights, Suttles Variation" "e4 g6 d4 Bg7 Nc3 d6 Nf3 c6")
+ ("B06r" "Modern: Two Knights, Suttles, Tal Gambit" "e4 g6 d4 Bg7 Nc3 d6 Nf3 
c6 Bg5 Qb6 Qd2")
+ ("B06s" "Modern: Pseudo-Austrian Attack" "e4 g6 d4 Bg7 Nc3 d6 f4")
+ ("B06s" "Modern: Pseudo-Austrian Attack" "e4 g6 d4 Bg7 Nc3 d6 f4 c6")
+ ("B06t" "Modern: Pseudo-Austrian Attack" "e4 g6 d4 Bg7 Nc3 d6 f4 c6 Nf3")
+ ("B06t" "Modern: Pseudo-Austrian Attack" "e4 g6 d4 Bg7 Nc3 d6 f4 Nc6")
+ ("B06u" "Modern: Three Pawns Attack" "e4 g6 d4 Bg7 f4")
+ ("B07a" "Pirc" "e4 d6")
+ ("B07a" "Pirc" "e4 d6 g3")
+ ("B07a" "Pirc" "e4 d6 c4")
+ ("B07a" "Pirc: 2.Nc3" "e4 d6 Nc3")
+ ("B07a" "Pirc: 2.Nc3" "e4 d6 Nc3 Nf6")
+ ("B07b" "Pirc: 2.Nf3" "e4 d6 Nf3")
+ ("B07b" "Pirc/Reti: Wade Defence" "e4 d6 Nf3 Bg4")
+ ("B07b" "Pirc: 2.Nf3 Nf6" "e4 d6 Nf3 Nf6")
+ ("B07b" "Pirc: 2.Nf3 Nf6 3.Nc3" "e4 d6 Nf3 Nf6 Nc3")
+ ("B07c" "Pirc: 2.f4" "e4 d6 f4")
+ ("B07c" "Pirc: 2.f4 Nf6" "e4 d6 f4 Nf6")
+ ("B07c" "Pirc: 2.f4 Nf6 3.Nc3" "e4 d6 f4 Nf6 Nc3")
+ ("B07c" "Pirc: 2.f4 Nf6 3.Nc3 g6 4.Nf3 Bg7" "e4 d6 f4 Nf6 Nc3 g6 Nf3 Bg7")
+ ("B07d" "Pirc: 2.d4" "e4 d6 d4")
+ ("B07d" "Pirc: 2.d4 c6" "e4 d6 d4 c6")
+ ("B07d" "Pirc: Lengfellner System" "e4 d6 d4 e6")
+ ("B07d" "Pirc: 2.d4 Nd7" "e4 d6 d4 Nd7")
+ ("B07d" "Pirc: 2.d4 Nf6" "e4 d6 d4 Nf6")
+ ("B07d" "Pirc: Roscher Gambit" "e4 d6 d4 Nf6 Nf3")
+ ("B07d" "Pirc: 3.Nbd2" "e4 d6 d4 Nf6 Nbd2")
+ ("B07d" "Pirc: 3.Nbd2 g6" "e4 d6 d4 Nf6 Nbd2 g6")
+ ("B07d" "Pirc: 3.Nbd2 g6" "e4 d6 d4 Nf6 Nbd2 g6 c3 Bg7")
+ ("B07e" "Pirc: 3.f3" "e4 d6 d4 Nf6 f3")
+ ("B07f" "Pirc: 3.f3 e5" "e4 d6 d4 Nf6 f3 e5")
+ ("B07f" "Pirc: 3.f3 e5 Queenswap" "e4 d6 d4 Nf6 f3 e5 dxe5 dxe5 Qxd8+")
+ ("B07f" "Pirc: 3.f3 e5 4.d5" "e4 d6 d4 Nf6 f3 e5 d5")
+ ("B07g" "Pirc: 3.f3 g6" "e4 d6 d4 Nf6 f3 g6")
+ ("B07h" "Pirc: 3.Bd3" "e4 d6 d4 Nf6 Bd3")
+ ("B07h" "Pirc: 3.Bd3 e5" "e4 d6 d4 Nf6 Bd3 e5")
+ ("B07h" "Pirc: 3.Bd3 e5 4.c3 d5" "e4 d6 d4 Nf6 Bd3 e5 c3 d5")
+ ("B07h" "Pirc: 3.Bd3 e5 4.c3 d5" "e4 d6 d4 Nf6 Bd3 e5 c3 d5 dxe5 dxe4")
+ ("B07h" "Pirc: 3.Bd3 e5 4.c3 d5" "e4 d6 d4 Nf6 Bd3 e5 c3 d5 dxe5 Nxe4")
+ ("B07i" "Pirc: 3.Bd3 g6" "e4 d6 d4 Nf6 Bd3 g6")
+ ("B07i" "Pirc: 3.Bd3 g6" "e4 d6 d4 Nf6 Bd3 g6 Nf3")
+ ("B07i" "Pirc: 3.Bd3 g6" "e4 d6 d4 Nf6 Bd3 g6 Nf3 Bg7")
+ ("B07j" "Pirc: 3.Bd3 g6 4.Nf3 Bg7 5.c3" "e4 d6 d4 Nf6 Bd3 g6 Nf3 Bg7 c3")
+ ("B07k" "Pirc: 3.Nc3" "e4 d6 d4 Nf6 Nc3")
+ ("B07l" "Pirc: 3.Nc3 Nbd7" "e4 d6 d4 Nf6 Nc3 Nbd7")
+ ("B07m" "Pirc: 3.Nc3 e5" "e4 d6 d4 Nf6 Nc3 e5")
+ ("B07m" "Pirc: 3.Nc3 e5 Queenswap" "e4 d6 d4 Nf6 Nc3 e5 dxe5 dxe5 Qxd8+")
+ ("B07n" "Pirc: Pytel/Czech" "e4 d6 d4 Nf6 Nc3 c6")
+ ("B07o" "Pirc: Czech, 4.Nf3" "e4 d6 d4 Nf6 Nc3 c6 Nf3")
+ ("B07p" "Pirc: Czech, 4.f4" "e4 d6 d4 Nf6 Nc3 c6 f4")
+ ("B07p" "Pirc: Czech, 4.f4 Qa5" "e4 d6 d4 Nf6 Nc3 c6 f4 Qa5")
+ ("B07q" "Pirc: 3...g6" "e4 d6 d4 Nf6 Nc3 g6")
+ ("B07q" "Pirc: 3...g6" "e4 d6 d4 Nf6 Nc3 g6 h4")
+ ("B07q" "Pirc: 4.Nge2" "e4 d6 d4 Nf6 Nc3 g6 Nge2")
+ ("B07q" "Pirc: 4.Nge2" "e4 d6 d4 Nf6 Nc3 g6 Nge2 Bg7")
+ ("B07r" "Pirc: Sveshnikov (4.g3)" "e4 d6 d4 Nf6 Nc3 g6 g3")
+ ("B07r" "Pirc: Sveshnikov (4.g3)" "e4 d6 d4 Nf6 Nc3 g6 g3 Bg7")
+ ("B07r" "Pirc: Sveshnikov (4.g3)" "e4 d6 d4 Nf6 Nc3 g6 g3 Bg7 Bg2 c6")
+ ("B07s" "Pirc: Holmov (4.Bc4)" "e4 d6 d4 Nf6 Nc3 g6 Bc4")
+ ("B07s" "Pirc: Holmov (4.Bc4)" "e4 d6 d4 Nf6 Nc3 g6 Bc4 Bg7")
+ ("B07t" "Pirc: 4.Be3" "e4 d6 d4 Nf6 Nc3 g6 Be3")
+ ("B07t" "Pirc: 4.Be3 c6" "e4 d6 d4 Nf6 Nc3 g6 Be3 c6")
+ ("B07u" "Pirc: 4.Be3 Bg7" "e4 d6 d4 Nf6 Nc3 g6 Be3 Bg7")
+ ("B07u" "Pirc: 4.Be3, 150 Attack" "e4 d6 d4 Nf6 Nc3 g6 Be3 Bg7 Qd2")
+ ("B07v" "Pirc: 4.Be3, 150 Attack" "e4 d6 d4 Nf6 Nc3 g6 Be3 Bg7 Qd2 c6")
+ ("B07v" "Pirc: 4.Be3, 150 Attack" "e4 d6 d4 Nf6 Nc3 g6 Be3 Bg7 Qd2 c6 f3 b5")
+ ("B07w" "Pirc: Byrne 4.Bg5" "e4 d6 d4 Nf6 Nc3 g6 Bg5")
+ ("B07x" "Pirc: 4.Bg5 Bg7" "e4 d6 d4 Nf6 Nc3 g6 Bg5 Bg7")
+ ("B07y" "Pirc: 4.Be2" "e4 d6 d4 Nf6 Nc3 g6 Be2")
+ ("B07y" "Pirc: 4.Be2" "e4 d6 d4 Nf6 Nc3 g6 Be2 Bg7")
+ ("B07y" "Pirc: Chinese Variation" "e4 d6 d4 Nf6 Nc3 g6 Be2 Bg7 g4")
+ ("B07z" "Pirc: Bayonet/Mariotti Attack" "e4 d6 d4 Nf6 Nc3 g6 Be2 Bg7 h4")
+ ("B08a" "Pirc: Classical" "e4 d6 d4 Nf6 Nc3 g6 Nf3")
+ ("B08a" "Pirc: Classical" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7")
+ ("B08b" "Pirc: Classical, 5.h3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 h3")
+ ("B08b" "Pirc: Classical, 5.h3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 h3 c6")
+ ("B08b" "Pirc: Classical, 5.h3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 h3 O-O")
+ ("B08c" "Pirc: Classical, Spassky System" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 h3 O-O 
Be3")
+ ("B08c" "Pirc: Classical, Spassky System, 6...d5" "e4 d6 d4 Nf6 Nc3 g6 Nf3 
Bg7 h3 O-O Be3 d5")
+ ("B08d" "Pirc: Classical, Spassky System, 6...a6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 
Bg7 h3 O-O Be3 a6")
+ ("B08e" "Pirc: Classical, Spassky System, 6...c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 
Bg7 h3 O-O Be3 c6")
+ ("B08f" "Pirc: Classical, 5.a4" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 a4")
+ ("B08f" "Pirc: Classical, 5.a4 c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 a4 c6")
+ ("B08g" "Pirc: Classical, 5.Bc4" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Bc4")
+ ("B08g" "Pirc: Classical, 5.Bc4 c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Bc4 c6")
+ ("B08h" "Pirc: Classical, 5.Be3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be3")
+ ("B08h" "Pirc: Classical, 5.Be3 a6 6.a4" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be3 a6 
a4")
+ ("B08i" "Pirc: Classical, 5.Be3 c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be3 c6")
+ ("B08j" "Pirc: Classical, 5.Be2" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2")
+ ("B08j" "Pirc: Classical, 5.Be2 a6 6.a4"
+  "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 a6 a4")
+ ("B08k" "Pirc: Classical, 5.Be2 c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 c6")
+ ("B08l" "Pirc: Classical, 5.Be2 O-O" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O")
+ ("B08m" "Pirc: Classical, 5.Be2 O-O 6.Be3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 
O-O Be3")
+ ("B08n" "Pirc: Classical, 5.Be2 O-O 6.O-O" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 Be2 
O-O O-O")
+ ("B08o" "Pirc: Classical, 5.Be2 O-O 6.O-O Nc6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 
Be2 O-O O-O Nc6")
+ ("B08p" "Pirc: Classical, 5.Be2 O-O 6.O-O c6" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 
Be2 O-O O-O c6")
+ ("B08q" "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.h3" "e4 d6 d4 Nf6 Nc3 g6 Nf3 
Bg7 Be2 O-O O-O c6 h3")
+ ("B08r" "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.a4" "e4 d6 d4 Nf6 Nc3 g6 Nf3 
Bg7 Be2 O-O O-O c6 a4")
+ ("B08s" "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.a4 Nbd7" "e4 d6 d4 Nf6 Nc3 g6 
Nf3 Bg7 Be2 O-O O-O c6 a4 Nbd7")
+ ("B08t" "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4" "e4 d6 d4 Nf6 Nc3 g6 Nf3 Bg7 
Be2 O-O O-O Bg4")
+ ("B08u" "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4 7.Be3 Nc6 8.Qd2" "e4 d6 d4 Nf6 
Nc3 g6 Nf3 Bg7 Be2 O-O O-O Bg4 Be3 Nc6 Qd2")
+ ("B08v" "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4 7.Be3 Nc6 8.Qd2 e5" "e4 d6 d4 
Nf6 Nc3 g6 Nf3 Bg7 Be2 O-O O-O Bg4 Be3 Nc6 Qd2 e5")
+ ("B09a" "Pirc: Austrian Attack" "e4 d6 d4 Nf6 Nc3 g6 f4")
+ ("B09b" "Pirc: Austrian Attack" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7")
+ ("B09c" "Pirc: Austrian, Ljubojevic Variation" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 
Bc4")
+ ("B09d" "Pirc: Austrian, 5.Nf3" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3")
+ ("B09e" "Pirc: Austrian, 5...O-O" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O")
+ ("B09f" "Pirc: Austrian, 5...O-O 6.e5" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O 
e5")
+ ("B09g" "Pirc: Austrian, 5...O-O 6.Be3" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O 
Be3")
+ ("B09h" "Pirc: Austrian, 5...O-O 6.Be2" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O 
Be2")
+ ("B09i" "Pirc: Austrian, 5...O-O 6.Bd3" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 O-O 
Bd3")
+ ("B09j" "Pirc: Austrian, 5...O-O 6.Bd3 Nc6" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 
O-O Bd3 Nc6")
+ ("B09k" "Pirc: Austrian, 5...O-O 6.Bd3 Nc6 7.e5" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 
Nf3 O-O Bd3 Nc6 e5")
+ ("B09l" "Pirc: Austrian, 5...O-O 6.Bd3 Na6" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 
O-O Bd3 Na6")
+ ("B09m" "Pirc: Austrian, 5...O-O 6.Bd3 Na6 7.O-O c5" "e4 d6 d4 Nf6 Nc3 g6 f4 
Bg7 Nf3 O-O Bd3 Na6 O-O c5")
+ ("B09m" "Pirc: Austrian, 5...O-O 6.Bd3 Na6 7.O-O c5 8.d5" "e4 d6 d4 Nf6 Nc3 
g6 f4 Bg7 Nf3 O-O Bd3 Na6 O-O c5 d5")
+ ("B09n" "Pirc: Austrian, 5...O-O 6.Bd3 Na6 7.O-O c5 8.d5 Bg4" "e4 d6 d4 Nf6 
Nc3 g6 f4 Bg7 Nf3 O-O Bd3 Na6 O-O c5 d5 Bg4")
+ ("B09o" "Pirc: Austrian, 5...c5" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5")
+ ("B09p" "Pirc: Austrian, 5...c5 6.dxc5" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 
dxc5")
+ ("B09q" "Pirc: Austrian, 5...c5 6.dxc5 Qa5 7.Bd3" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 
Nf3 c5 dxc5 Qa5 Bd3")
+ ("B09r" "Pirc: Austrian, 5...c5 6.Bb5+" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 
Bb5+")
+ ("B09s" "Pirc: Austrian, 5...c5 6.Bb5+" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 
Bb5+ Bd7")
+ ("B09t" "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5" "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 
Nf3 c5 Bb5+ Bd7 e5")
+ ("B09u" "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4" "e4 d6 d4 Nf6 Nc3 g6 f4 
Bg7 Nf3 c5 Bb5+ Bd7 e5 Ng4")
+ ("B09v" "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.Bxd7+" "e4 d6 d4 Nf6 
Nc3 g6 f4 Bg7 Nf3 c5 Bb5+ Bd7 e5 Ng4 Bxd7+")
+ ("B09w" "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.e6" "e4 d6 d4 Nf6 Nc3 
g6 f4 Bg7 Nf3 c5 Bb5+ Bd7 e5 Ng4 e6")
+ ("B09w" "Pirc: Austrian, 5...c5, Seirawan Variation"
+  "e4 d6 d4 Nf6 Nc3 g6 f4 Bg7 Nf3 c5 Bb5+ Bd7 e5 Ng4 e6 fxe6")
+ ("B09x" "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.e6 Bxb5" "e4 d6 d4 Nf6 
Nc3 g6 f4 Bg7 Nf3 c5 Bb5+ Bd7 e5 Ng4 e6 Bxb5")
+ ("B10a" "Caro-Kann" "e4 c6")
+ ("B10a" "Caro-Kann: 2.Ne2" "e4 c6 Ne2")
+ ("B10a" "Caro-Kann: 2.f4" "e4 c6 f4")
+ ("B10b" "Caro-Kann: Breyer Variation" "e4 c6 d3")
+ ("B10b" "Caro-Kann: Breyer Variation" "e4 c6 d3 d5")
+ ("B10c" "Caro-Kann: Breyer, 3.Nd2" "e4 c6 d3 d5 Nd2")
+ ("B10d" "Caro-Kann: Breyer, 3.Nd2 g6" "e4 c6 d3 d5 Nd2 g6")
+ ("B10e" "Caro-Kann: Breyer, 3.Nd2 e5" "e4 c6 d3 d5 Nd2 e5")
+ ("B10f" "Caro-Kann: Breyer, Main Line" "e4 c6 d3 d5 Nd2 e5 Ngf3 Bd6 g3")
+ ("B10g" "Caro-Kann: English Variation" "e4 c6 c4")
+ ("B10h" "Caro-Kann: English Variation" "e4 c6 c4 e5")
+ ("B10i" "Caro-Kann: English Variation" "e4 c6 c4 d5")
+ ("B10i" "Caro-Kann: English Variation" "e4 c6 c4 d5 cxd5")
+ ("B10i" "Caro-Kann: English Variation" "e4 c6 c4 d5 cxd5 cxd5")
+ ("B10i" "Caro-Kann: English Variation" "e4 c6 c4 d5 exd5")
+ ("B10i" "Caro-Kann: English Variation" "e4 c6 c4 d5 exd5 cxd5")
+ ("B10j" "Caro-Kann: English, Exchange" "e4 c6 c4 d5 exd5 cxd5 cxd5")
+ ("B10k" "Caro-Kann: English, Exchange, 4...Nf6" "e4 c6 c4 d5 exd5 cxd5 cxd5 
Nf6")
+ ("B10l" "Caro-Kann: English, Exchange, 4...Nf6 5.Bb5+" "e4 c6 c4 d5 exd5 cxd5 
cxd5 Nf6 Bb5+")
+ ("B10m" "Caro-Kann: English, Exchange, 4...Nf6 5.Nc3" "e4 c6 c4 d5 exd5 cxd5 
cxd5 Nf6 Nc3")
+ ("B10n" "Caro-Kann: English, Exchange, 4...Nf6 5.Nc3 Nxd5" "e4 c6 c4 d5 exd5 
cxd5 cxd5 Nf6 Nc3 Nxd5")
+ ("B10o" "Caro-Kann: 2.Nf3" "e4 c6 Nf3")
+ ("B10p" "Caro-Kann: 2.Nc3" "e4 c6 Nc3")
+ ("B10q" "Caro-Kann: 2.Nc3 d5" "e4 c6 Nc3 d5")
+ ("B10r" "Caro-Kann: Goldman/Spielmann" "e4 c6 Nc3 d5 Qf3")
+ ("B10s" "Caro-Kann: Two Knights Variation" "e4 c6 Nc3 d5 Nf3")
+ ("B10t" "Caro-Kann: Two Knights, 3...dxe4" "e4 c6 Nc3 d5 Nf3 dxe4")
+ ("B10t" "Caro-Kann: Hector Gambit" "e4 c6 Nc3 d5 Nf3 dxe4 Ng5")
+ ("B10u" "Caro-Kann: Two Knights, 3...dxe4 4.Nxe4" "e4 c6 Nc3 d5 Nf3 dxe4 
Nxe4")
+ ("B10v" "Caro-Kann: Two Knights, 3...dxe4 4.Nxe4 Nf6" "e4 c6 Nc3 d5 Nf3 dxe4 
Nxe4 Nf6")
+ ("B11a" "Caro-Kann: Two Knights, 3...Bg4" "e4 c6 Nc3 d5 Nf3 Bg4")
+ ("B11b" "Caro-Kann: Two Knights, 3...Bg4 4.h3" "e4 c6 Nc3 d5 Nf3 Bg4 h3")
+ ("B11b" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bh5" "e4 c6 Nc3 d5 Nf3 Bg4 h3 
Bh5")
+ ("B11c" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bh5, 7.g4 Bg6" "e4 c6 Nc3 d5 
Nf3 Bg4 h3 Bh5 exd5 cxd5 Bb5+ Nc6 g4 Bg6")
+ ("B11d" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3" "e4 c6 Nc3 d5 Nf3 Bg4 h3 
Bxf3")
+ ("B11d" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3" "e4 c6 Nc3 d5 Nf3 
Bg4 h3 Bxf3 Qxf3")
+ ("B11e" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 dxe4" "e4 c6 Nc3 d5 
Nf3 Bg4 h3 Bxf3 Qxf3 dxe4")
+ ("B11e" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 dxe4" "e4 c6 Nc3 d5 
Nf3 Bg4 h3 Bxf3 Qxf3 dxe4 Nxe4")
+ ("B11f" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 Nf6" "e4 c6 Nc3 d5 
Nf3 Bg4 h3 Bxf3 Qxf3 Nf6")
+ ("B11g" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6" "e4 c6 Nc3 d5 
Nf3 Bg4 h3 Bxf3 Qxf3 e6")
+ ("B11h" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d4" "e4 c6 Nc3 
d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d4")
+ ("B11i" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.g3" "e4 c6 Nc3 
d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 g3")
+ ("B11i" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.g3 Nf6" "e4 c6 
Nc3 d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 g3 Nf6")
+ ("B11j" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3" "e4 c6 Nc3 
d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d3")
+ ("B11k" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nd7" "e4 c6 
Nc3 d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d3 Nd7")
+ ("B11l" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6" "e4 c6 
Nc3 d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d3 Nf6")
+ ("B11m" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6 7.a3" 
"e4 c6 Nc3 d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d3 Nf6 a3")
+ ("B11n" "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6 7.Bd2" 
"e4 c6 Nc3 d5 Nf3 Bg4 h3 Bxf3 Qxf3 e6 d3 Nf6 Bd2")
+ ("B12a" "Caro-Kann: 2.d4" "e4 c6 d4")
+ ("B12a" "Caro-Kann: de Bruycker Defence" "e4 c6 d4 Na6")
+ ("B12a" "Caro-Kann: Masi Defence" "e4 c6 d4 Nf6")
+ ("B12b" "Caro-Kann: 2.d4 d5" "e4 c6 d4 d5")
+ ("B12b" "Caro-Kann: Ulysses Gambit" "e4 c6 d4 d5 Nf3")
+ ("B12b" "Caro-Kann: Ulysses Gambit" "e4 c6 d4 d5 Nf3 dxe4 Ng5")
+ ("B12c" "Caro-Kann: Mieses Gambit" "e4 c6 d4 d5 Be3")
+ ("B12d" "Caro-Kann: Maroczy (Fantasy) Variation" "e4 c6 d4 d5 f3")
+ ("B12e" "Caro-Kann: Maroczy (Fantasy), 3...e6" "e4 c6 d4 d5 f3 e6")
+ ("B12f" "Caro-Kann: Maroczy (Fantasy), 3...dxe4" "e4 c6 d4 d5 f3 dxe4")
+ ("B12f" "Caro-Kann: Maroczy (Fantasy), Gambit line" "e4 c6 d4 d5 f3 dxe4 fxe4 
e5 Nf3 exd4 Bc4")
+ ("B12g" "Caro-Kann: 3.Nd2" "e4 c6 d4 d5 Nd2")
+ ("B12g" "Caro-Kann: 3.Nd2 dxe4" "e4 c6 d4 d5 Nd2 dxe4")
+ ("B12g" "Caro-Kann: Edinburgh Variation" "e4 c6 d4 d5 Nd2 Qb6")
+ ("B12h" "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6" "e4 c6 d4 d5 Nd2 g6")
+ ("B12h" "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6 4.Ngf3" "e4 c6 d4 d5 Nd2 g6 
Ngf3")
+ ("B12h" "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6 4.Ngf3 Bg7" "e4 c6 d4 d5 Nd2 
g6 Ngf3 Bg7")
+ ("B12h" "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6 4.Ngf3 Bg7 5.h3" "e4 c6 d4 d5 
Nd2 g6 Ngf3 Bg7 h3")
+ ("B12h" "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6 4.Ngf3 Bg7 5.c3" "e4 c6 d4 d5 
Nd2 g6 Ngf3 Bg7 c3")
+ ("B12i" "Caro-Kann: Advance Variation" "e4 c6 d4 d5 e5")
+ ("B12j" "Caro-Kann: Advance, 3...c5" "e4 c6 d4 d5 e5 c5")
+ ("B12j" "Caro-Kann: Advance, 3...c5 4.dxc5" "e4 c6 d4 d5 e5 c5 dxc5")
+ ("B12k" "Caro-Kann: Advance, 3...c5 4.dxc5 Nc6" "e4 c6 d4 d5 e5 c5 dxc5 Nc6")
+ ("B12l" "Caro-Kann: Advance, 3...Bf5" "e4 c6 d4 d5 e5 Bf5")
+ ("B12l" "Caro-Kann: Advance, Bayonet Variation" "e4 c6 d4 d5 e5 Bf5 g4")
+ ("B12m" "Caro-Kann: Advance, 4.h4" "e4 c6 d4 d5 e5 Bf5 h4")
+ ("B12n" "Caro-Kann: Advance, 4.c3" "e4 c6 d4 d5 e5 Bf5 c3")
+ ("B12n" "Caro-Kann: Advance, Short Variation" "e4 c6 d4 d5 e5 Bf5 c3 e6 Be2")
+ ("B12o" "Caro-Kann: Advance, 4.Bd3" "e4 c6 d4 d5 e5 Bf5 Bd3")
+ ("B12p" "Caro-Kann: Advance, 4.Nf3" "e4 c6 d4 d5 e5 Bf5 Nf3")
+ ("B12p" "Caro-Kann: Advance, 4.Nf3 e6" "e4 c6 d4 d5 e5 Bf5 Nf3 e6")
+ ("B12q" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2" "e4 c6 d4 d5 e5 Bf5 Nf3 e6 Be2")
+ ("B12r" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 Nd7" "e4 c6 d4 d5 e5 Bf5 Nf3 e6 
Be2 Nd7")
+ ("B12s" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5" "e4 c6 d4 d5 e5 Bf5 Nf3 e6 
Be2 c5")
+ ("B12t" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.O-O" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 O-O")
+ ("B12t" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.O-O" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 O-O Ne7")
+ ("B12t" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.O-O" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 O-O Nd7")
+ ("B12u" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.Be3" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 Be3")
+ ("B12u" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.Be3" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 Be3 Ne7")
+ ("B12u" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.Be3"
+  "e4 c6 d4 d5 e5 Bf5 Nf3 e6 Be2 c5 Be3 Nd7")
+ ("B12u" "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.Be3" "e4 c6 d4 d5 e5 Bf5 Nf3 
e6 Be2 c5 Be3 Nd7 O-O")
+ ("B12v" "Caro-Kann: Advance, 4.Nc3" "e4 c6 d4 d5 e5 Bf5 Nc3")
+ ("B12v" "Caro-Kann: Advance, 4.Nc3 h5" "e4 c6 d4 d5 e5 Bf5 Nc3 h5")
+ ("B12v" "Caro-Kann: Advance, 4.Nc3 Qb6" "e4 c6 d4 d5 e5 Bf5 Nc3 Qb6")
+ ("B12v" "Caro-Kann: Advance, 4.Nc3 e6" "e4 c6 d4 d5 e5 Bf5 Nc3 e6")
+ ("B12w" "Caro-Kann: Advance, Main Line" "e4 c6 d4 d5 e5 Bf5 Nc3 e6 g4")
+ ("B12w" "Caro-Kann: Advance, Main Line, 6.Nge2" "e4 c6 d4 d5 e5 Bf5 Nc3 e6 g4 
Bg6 Nge2")
+ ("B12x" "Caro-Kann: Advance, Main Line, 6.Nge2 c5" "e4 c6 d4 d5 e5 Bf5 Nc3 e6 
g4 Bg6 Nge2 c5")
+ ("B13a" "Caro-Kann: Exchange Variation" "e4 c6 d4 d5 exd5")
+ ("B13a" "Caro-Kann: Exchange, 3...Qxd5" "e4 c6 d4 d5 exd5 Qxd5")
+ ("B13b" "Caro-Kann: Exchange, 3...cxd5" "e4 c6 d4 d5 exd5 cxd5")
+ ("B13c" "Caro-Kann: Exchange, 4.Nf3" "e4 c6 d4 d5 exd5 cxd5 Nf3")
+ ("B13d" "Caro-Kann: Exchange, 4.Nf3 Nf6" "e4 c6 d4 d5 exd5 cxd5 Nf3 Nf6")
+ ("B13e" "Caro-Kann: Exchange, 4.Bd3" "e4 c6 d4 d5 exd5 cxd5 Bd3")
+ ("B13f" "Caro-Kann: Exchange, 4.Bd3 Nc6" "e4 c6 d4 d5 exd5 cxd5 Bd3 Nc6")
+ ("B13f" "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3" "e4 c6 d4 d5 exd5 cxd5 Bd3 Nc6 
c3")
+ ("B13g" "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 g6" "e4 c6 d4 d5 exd5 cxd5 Bd3 
Nc6 c3 g6")
+ ("B13h" "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 Nf6" "e4 c6 d4 d5 exd5 cxd5 Bd3 
Nc6 c3 Nf6")
+ ("B13i" "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 Nf6 6.Nf3" "e4 c6 d4 d5 exd5 
cxd5 Bd3 Nc6 c3 Nf6 Nf3")
+ ("B13j" "Caro-Kann: Exchange, Rubinstein Variation" "e4 c6 d4 d5 exd5 cxd5 
Bd3 Nc6 c3 Nf6 Bf4")
+ ("B13k" "Caro-Kann: Exchange, Rubinstein, 6...Bg4" "e4 c6 d4 d5 exd5 cxd5 Bd3 
Nc6 c3 Nf6 Bf4 Bg4")
+ ("B13l" "Caro-Kann: Exchange, Rubinstein, 7.Qb3 Qc8" "e4 c6 d4 d5 exd5 cxd5 
Bd3 Nc6 c3 Nf6 Bf4 Bg4 Qb3 Qc8")
+ ("B13m" "Caro-Kann: Exchange, Rubinstein, 7.Qb3 Qd7" "e4 c6 d4 d5 exd5 cxd5 
Bd3 Nc6 c3 Nf6 Bf4 Bg4 Qb3 Qd7")
+ ("B13n" "Caro-Kann: Panov-Botvinnik Attack" "e4 c6 d4 d5 exd5 cxd5 c4")
+ ("B13n" "Caro-Kann: Panov-Botvinnik, 4...e6" "e4 c6 d4 d5 exd5 cxd5 c4 e6")
+ ("B13o" "Caro-Kann: Panov-Botvinnik, 4...Nf6" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6")
+ ("B13o" "Caro-Kann: Panov-Botvinnik, Gunderam Variation" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 c5")
+ ("B13p" "Caro-Kann: Panov-Botvinnik, 5.Nc3" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 
Nc3")
+ ("B13p" "Caro-Kann: Panov-Botvinnik, 5...dxc4" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 
Nc3 dxc4")
+ ("B13p" "Caro-Kann: Panov-Botvinnik, 5...dxc4"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 dxc4 Bxc4")
+ ("B13q" "Caro-Kann: Panov-Botvinnik, 5...Nc6" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 
Nc3 Nc6")
+ ("B13q" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.cxd5" "e4 c6 d4 d5 exd5 cxd5 
c4 Nf6 Nc3 Nc6 cxd5")
+ ("B13q" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.cxd5 Nxd5" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 cxd5 Nxd5")
+ ("B13r" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3" "e4 c6 d4 d5 exd5 cxd5 c4 
Nf6 Nc3 Nc6 Nf3")
+ ("B13s" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4")
+ ("B13s" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4 cxd5")
+ ("B13s" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4 cxd5 Nxd5")
+ ("B13t" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4: 8.Qb3" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4 cxd5 Nxd5 Qb3")
+ ("B13t" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4: 9.gxf3 Nb6" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4 cxd5 Nxd5 Qb3 Bxf3 gxf3 Nb6")
+ ("B13u" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4: Main Line" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Nf3 Bg4 cxd5 Nxd5 Qb3 Bxf3 gxf3 e6")
+ ("B13v" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Bg5" "e4 c6 d4 d5 exd5 cxd5 c4 
Nf6 Nc3 Nc6 Bg5")
+ ("B13v" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Spielmann Variation" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 Qb6")
+ ("B13v" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Bg5 dxc4" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 Bg5 dxc4")
+ ("B13v" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Herzog Defence" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 dxc4 d5 Na5")
+ ("B13w" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Czerniak Variation" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 Qa5")
+ ("B13x" "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Bg5 Be6" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 Nc6 Bg5 Be6")
+ ("B13y" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6")
+ ("B13y" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6 Nf3")
+ ("B13y" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6 Nf3 Be7")
+ ("B13z" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variaiton, 8.c5" "e4 c6 
d4 d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6 Nf3 Be7 c5")
+ ("B13z" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation, 8.c5 O-O" "e4 
c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6 Nf3 Be7 c5 O-O")
+ ("B13z" "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation, 8.c5 O-O 
9.Bb5" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 Nc6 Bg5 e6 Nf3 Be7 c5 O-O Bb5")
+ ("B14a" "Caro-Kann: Panov-Botvinnik, 5...g6" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 
Nc3 g6")
+ ("B14a" "Caro-Kann: Panov-Botvinnik, 5...g6 6.Nf3"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 g6 Nf3")
+ ("B14b" "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5" "e4 c6 d4 d5 exd5 cxd5 c4 
Nf6 Nc3 g6 cxd5")
+ ("B14c" "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Nxd5" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 g6 cxd5 Nxd5")
+ ("B14d" "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Nxd5 7.Bc4" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 g6 cxd5 Nxd5 Bc4")
+ ("B14e" "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Bg7" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 g6 cxd5 Bg7")
+ ("B14f" "Caro-Kann: Panov-Botvinnik, 5...g6 6.Qb3" "e4 c6 d4 d5 exd5 cxd5 c4 
Nf6 Nc3 g6 Qb3")
+ ("B14f" "Caro-Kann: Panov-Botvinnik, 5...g6 6.Qb3 Bg7 7.cxd5" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 g6 Qb3 Bg7 cxd5")
+ ("B14f" "Caro-Kann: Panov-Botvinnik, 5...g6, Main Line" "e4 c6 d4 d5 exd5 
cxd5 c4 Nf6 Nc3 g6 Qb3 Bg7 cxd5 O-O")
+ ("B14g" "Caro-Kann: Panov-Botvinnik, 5...g6, Main Line, 8.Be2" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 g6 Qb3 Bg7 cxd5 O-O Be2")
+ ("B14h" "Caro-Kann: Panov-Botvinnik, 5...g6, Main Line, 8.Be2 Nbd7" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 g6 Qb3 Bg7 cxd5 O-O Be2 Nbd7")
+ ("B14i" "Caro-Kann: Panov-Botvinnik, 5...e6" "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 
Nc3 e6")
+ ("B14j" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3" "e4 c6 d4 d5 exd5 cxd5 c4 
Nf6 Nc3 e6 Nf3")
+ ("B14j" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Nc6" "e4 c6 d4 d5 exd5 cxd5 
c4 Nf6 Nc3 e6 Nf3 Nc6")
+ ("B14k" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7" "e4 c6 d4 d5 exd5 cxd5 
c4 Nf6 Nc3 e6 Nf3 Be7")
+ ("B14l" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.Bd3" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Be7 Bd3")
+ ("B14m" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5" "e4 c6 d4 d5 
exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Be7 cxd5")
+ ("B14n" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5 Nxd5" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Be7 cxd5 Nxd5")
+ ("B14o" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5 Nxd5 8.Bd3" "e4 
c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Be7 cxd5 Nxd5 Bd3")
+ ("B14p" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4" "e4 c6 d4 d5 exd5 cxd5 
c4 Nf6 Nc3 e6 Nf3 Bb4")
+ ("B14q" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 exd5" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 exd5")
+ ("B14r" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5" "e4 c6 d4 
d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5")
+ ("B14s" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2" "e4 
c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Qc2")
+ ("B14t" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2 Nc6"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Qc2 Nc6")
+ ("B14u"
+  "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2 Nc6 9.Bd3"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Qc2 Nc6 Bd3")
+ ("B14v" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Bd2")
+ ("B14w" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2 Nc6"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Bd2 Nc6")
+ ("B14x" "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2 Nc6"
+  "e4 c6 d4 d5 exd5 cxd5 c4 Nf6 Nc3 e6 Nf3 Bb4 cxd5 Nxd5 Bd2 Nc6 Bd3 O-O")
+ ("B15a" "Caro-Kann: 3.Nc3" "e4 c6 d4 d5 Nc3")
+ ("B15b" "Caro-Kann: Gurgenidze Counterattack" "e4 c6 d4 d5 Nc3 b5")
+ ("B15c" "Caro-Kann: Gurgenidze/Modern" "e4 c6 d4 d5 Nc3 g6")
+ ("B15d" "Caro-Kann: Gurgenidze: 4.Be3" "e4 c6 d4 d5 Nc3 g6 Be3")
+ ("B15d" "Caro-Kann: Gurgenidze: 4.Be3" "e4 c6 d4 d5 Nc3 g6 Be3 Bg7")
+ ("B15e" "Caro-Kann: Gurgenidze: 4.h3" "e4 c6 d4 d5 Nc3 g6 h3")
+ ("B15e" "Caro-Kann: Gurgenidze: 4.h3" "e4 c6 d4 d5 Nc3 g6 h3 Bg7")
+ ("B15f" "Caro-Kann: Gurgenidze: 4.e5" "e4 c6 d4 d5 Nc3 g6 e5")
+ ("B15f" "Caro-Kann: Gurgenidze: 4.e5" "e4 c6 d4 d5 Nc3 g6 e5 Bg7")
+ ("B15g" "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4" "e4 c6 d4 d5 Nc3 g6 e5 Bg7 f4")
+ ("B15g" "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4 Nh6" "e4 c6 d4 d5 Nc3 g6 e5 Bg7 
f4 Nh6")
+ ("B15h" "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4 h5" "e4 c6 d4 d5 Nc3 g6 e5 Bg7 
f4 h5")
+ ("B15i" "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4 h5 6.Nf3" "e4 c6 d4 d5 Nc3 g6 
e5 Bg7 f4 h5 Nf3")
+ ("B15j" "Caro-Kann: Gurgenidze: 4.Nf3" "e4 c6 d4 d5 Nc3 g6 Nf3")
+ ("B15k" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7" "e4 c6 d4 d5 Nc3 g6 Nf3 Bg7")
+ ("B15k" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.exd5" "e4 c6 d4 d5 Nc3 g6 Nf3 Bg7 
exd5")
+ ("B15k" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.e5" "e4 c6 d4 d5 Nc3 g6 Nf3 Bg7 
e5")
+ ("B15l" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3" "e4 c6 d4 d5 Nc3 g6 Nf3 Bg7 
h3")
+ ("B15m" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 dxe4" "e4 c6 d4 d5 Nc3 g6 Nf3 
Bg7 h3 dxe4")
+ ("B15m" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 dxe4" "e4 c6 d4 d5 Nc3 g6 Nf3 
Bg7 h3 dxe4 Nxe4")
+ ("B15n" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 Nf6" "e4 c6 d4 d5 Nc3 g6 Nf3 
Bg7 h3 Nf6")
+ ("B15o" "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 Nf6 6.e5" "e4 c6 d4 d5 Nc3 g6 
Nf3 Bg7 h3 Nf6 e5")
+ ("B15p" "Caro-Kann: 3.Nc3 dxe4" "e4 c6 d4 d5 Nc3 dxe4")
+ ("B15p" "Caro-Kann: Rasa-Studier Gambit" "e4 c6 d4 d5 Nc3 dxe4 f3")
+ ("B15p" "Caro-Kann: von Hennig Gambit" "e4 c6 d4 d5 Nc3 dxe4 Bc4")
+ ("B15q" "Caro-Kann: 4.Nxe4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4")
+ ("B15r" "Caro-Kann: 4.Nxe4 Nf6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6")
+ ("B15r" "Caro-Kann: 4.Nxe4 Nf6 5.f3 Gambit" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
f3")
+ ("B15r" "Caro-Kann: Alekhine Gambit" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Bd3")
+ ("B15s" "Caro-Kann: 4.Nxe4 Nf6 5.Ng3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Ng3")
+ ("B15t" "Caro-Kann: 4.Nxe4 Nf6 5.Nxf6+" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Nxf6+")
+ ("B15t" "Caro-Kann: Tartakower (Nimzowitsch) Variation" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Nf6 Nxf6+ exf6")
+ ("B15u" "Caro-Kann: Tartakower, Forgacs Variation" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nf6 Nxf6+ exf6 Bc4")
+ ("B15v" "Caro-Kann: Tartakower, 6.c3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Nxf6+ 
exf6 c3")
+ ("B16a" "Caro-Kann: Bronstein-Larsen" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 Nxf6+ 
gxf6")
+ ("B16b" "Caro-Kann: Bronstein-Larsen, 6.Qd3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
Nxf6+ gxf6 Qd3")
+ ("B16c" "Caro-Kann: Bronstein-Larsen, 6.Ne2" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
Nxf6+ gxf6 Ne2")
+ ("B16d" "Caro-Kann: Bronstein-Larsen, 6.Bc4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
Nxf6+ gxf6 Bc4")
+ ("B16e" "Caro-Kann: Bronstein-Larsen, 6.Nf3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
Nxf6+ gxf6 Nf3")
+ ("B16f" "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bf5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nf6 Nxf6+ gxf6 Nf3 Bf5")
+ ("B16g" "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bg4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nf6 Nxf6+ gxf6 Nf3 Bg4")
+ ("B16h" "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bg4 7.Be2 e6" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Nf6 Nxf6+ gxf6 Nf3 Bg4 Be2 e6")
+ ("B16i" "Caro-Kann: Bronstein-Larsen, 6.c3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nf6 
Nxf6+ gxf6 c3")
+ ("B16j" "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nf6 Nxf6+ gxf6 c3 Bf5")
+ ("B16k" "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Ne2" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Nf6 Nxf6+ gxf6 c3 Bf5 Ne2")
+ ("B16l" "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Nf6 Nxf6+ gxf6 c3 Bf5 Nf3")
+ ("B16m" "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3 Qc7" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Nf6 Nxf6+ gxf6 c3 Bf5 Nf3 Qc7")
+ ("B16n" "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3 e6" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Nf6 Nxf6+ gxf6 c3 Bf5 Nf3 e6")
+ ("B17a" "Caro-Kann: Steinitz Variation" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7")
+ ("B17b" "Caro-Kann: Steinitz, 5.Nf3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3")
+ ("B17c" "Caro-Kann: Steinitz, 5.Nf3 Ngf6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 
Ngf6")
+ ("B17d" "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Nxf6+" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Nf3 Ngf6 Nxf6+")
+ ("B17e" "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Nxf6+ Nxf6 7.Bc4" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Nd7 Nf3 Ngf6 Nxf6+ Nxf6 Bc4")
+ ("B17f" "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Ng3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Nf3 Ngf6 Ng3")
+ ("B17g" "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Ng3 e6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Nf3 Ngf6 Ng3 e6")
+ ("B17h" "Caro-Kann: Steinitz, 5.Ng5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Ng5")
+ ("B17i" "Caro-Kann: Steinitz, 5.Ng5 Ngf6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Ng5 
Ngf6")
+ ("B17j" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Ng5 Ngf6 Bd3")
+ ("B17k" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3 e6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Ng5 Ngf6 Bd3 e6")
+ ("B17l" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3 e6 7.N1f3 Bd6 8.Qe2" "e4 c6 d4 
d5 Nc3 dxe4 Nxe4 Nd7 Ng5 Ngf6 Bd3 e6 N1f3 Bd6 Qe2")
+ ("B17m" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4" "e4 c6 d4 
d5 Nc3 dxe4 Nxe4 Nd7 Ng5 Ngf6 Bd3 e6 N1f3 Bd6 Qe2 h6 Ne4 Nxe4 Qxe4")
+ ("B17n" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4 Qc7" "e4 c6 
d4 d5 Nc3 dxe4 Nxe4 Nd7 Ng5 Ngf6 Bd3 e6 N1f3 Bd6 Qe2 h6 Ne4 Nxe4 Qxe4 Qc7")
+ ("B17o" "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4 Nf6" "e4 c6 
d4 d5 Nc3 dxe4 Nxe4 Nd7 Ng5 Ngf6 Bd3 e6 N1f3 Bd6 Qe2 h6 Ne4 Nxe4 Qxe4 Nf6")
+ ("B17p" "Caro-Kann: Steinitz, 5.Bc4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Bc4")
+ ("B17q" "Caro-Kann: Steinitz, 5.Bc4 Ngf6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Bc4 
Ngf6")
+ ("B17r" "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Bc4 Ngf6 Ng5")
+ ("B17s" "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bb3" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Nd7 Bc4 Ngf6 Ng5 e6 Qe2 Nb6 Bb3")
+ ("B17t" "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bd3" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Nd7 Bc4 Ngf6 Ng5 e6 Qe2 Nb6 Bd3")
+ ("B17u" "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bd3 h6" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Nd7 Bc4 Ngf6 Ng5 e6 Qe2 Nb6 Bd3 h6")
+ ("B18a" "Caro-Kann: Classical" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5")
+ ("B18b" "Caro-Kann: Classical, 5.Nc5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Nc5")
+ ("B18c" "Caro-Kann: Classical, 5.Nc5 b6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Nc5 
b6")
+ ("B18d" "Caro-Kann: Classical, 5.Ng3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3")
+ ("B18e" "Caro-Kann: Classical, 5.Ng3 Bg6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6")
+ ("B18f" "Caro-Kann: Classical, Maroczy Attack" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 f4")
+ ("B18g" "Caro-Kann: Classical, Flohr Variation" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 Nh3")
+ ("B18h" "Caro-Kann: Classical, 6.N1e2" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 
N1e2")
+ ("B18i" "Caro-Kann: Classical, 6.Bc4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 
Bc4")
+ ("B18j" "Caro-Kann: Classical, 6.Bc4 e6 7.N1e2" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 Bc4 e6 N1e2")
+ ("B18k" "Caro-Kann: Classical, 6.Bc4 e6 7.N1e2 Nf6" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Bf5 Ng3 Bg6 Bc4 e6 N1e2 Nf6")
+ ("B18l" "Caro-Kann: Classical, 6.Nf3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 
Nf3")
+ ("B18m" "Caro-Kann: Classical, 6.Nf3 Nd7" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6 Nf3 Nd7")
+ ("B18n" "Caro-Kann: Classical, 6.Nf3 Nd7 7.Bd3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 Nf3 Nd7 Bd3")
+ ("B18o" "Caro-Kann: Classical, 6.Nf3 Nd7 7.Bd3 e6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 Nf3 Nd7 Bd3 e6")
+ ("B18p" "Caro-Kann: Classical, 6.h4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 
h4")
+ ("B18p" "Caro-Kann: Classical, 6.h4 h6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6 h4 h6")
+ ("B18q" "Caro-Kann: Classical, 6.h4 h6 7.Nh3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 h4 h6 Nh3")
+ ("B18r" "Caro-Kann: Classical, 6.h4 h6 7.f4" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 h4 h6 f4")
+ ("B18s" "Caro-Kann: Classical, 6.h4 h6 7.h5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 h4 h6 h5")
+ ("B19a" "Caro-Kann: Classical, 7.Nf3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 
h4 h6 Nf3")
+ ("B19b" "Caro-Kann: Classical, 7.Nf3 e6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6 h4 h6 Nf3 e6")
+ ("B19c" "Caro-Kann: Classical, 7.Nf3 Nf6" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6 h4 h6 Nf3 Nf6")
+ ("B19d" "Caro-Kann: Classical, 7.Nf3 Nf6 8.h5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 h4 h6 Nf3 Nf6 h5")
+ ("B19d" "Caro-Kann: Classical, 7.Nf3 Nf6 8.h5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 
Ng3 Bg6 h4 h6 Nf3 Nf6 h5 Bh7")
+ ("B19e" "Caro-Kann: Classical, 7.Nf3 Nf6 8.Ne5" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 h4 h6 Nf3 Nf6 Ne5")
+ ("B19f" "Caro-Kann: Classical, 7.Nf3 Nf6 8.Ne5 Bh7 9.Bd3" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nf6 Ne5 Bh7 Bd3")
+ ("B19g" "Caro-Kann: Classical, 7.Nf3 Nd7" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 
Bg6 h4 h6 Nf3 Nd7")
+ ("B19h" "Caro-Kann: Classical, Spassky Variation" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5")
+ ("B19h" "Caro-Kann: Classical, Spassky Variation" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7")
+ ("B19i" "Caro-Kann: Classical, Spassky, 10.Qxd3" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3")
+ ("B19j" "Caro-Kann: Classical, Spassky, 10.Qxd3 Ngf6" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Ngf6")
+ ("B19k" "Caro-Kann: Classical, Spassky, 10.Qxd3 e6" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 e6")
+ ("B19l" "Caro-Kann: Classical, Spassky, 10.Qxd3 e6 11.Bf4" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 e6 Bf4")
+ ("B19m" "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7" "e4 c6 d4 d5 Nc3 dxe4 
Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7")
+ ("B19n" "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2")
+ ("B19o" "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2 e6" "e4 c6 d4 d5 
Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 e6")
+ ("B19p" "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2 e6 12.O-O-O" "e4 
c6 d4 d5 Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 
e6 O-O-O")
+ ("B19q" "Caro-Kann: Classical, Spassky, Main Line" "e4 c6 d4 d5 Nc3 dxe4 Nxe4 
Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 e6 O-O-O Ngf6")
+ ("B19r" "Caro-Kann: Classical, Spassky, Main Line, 13.Ne4" "e4 c6 d4 d5 Nc3 
dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 e6 O-O-O Ngf6 
Ne4")
+ ("B19s" "Caro-Kann: Classical, Spassky, Main Line, 13.Ne4 O-O-O" "e4 c6 d4 d5 
Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 e6 O-O-O 
Ngf6 Ne4 O-O-O")
+ ("B19t" "Caro-Kann: Classical, Spassky, Main Line, 14.g3 Nxe4" "e4 c6 d4 d5 
Nc3 dxe4 Nxe4 Bf5 Ng3 Bg6 h4 h6 Nf3 Nd7 h5 Bh7 Bd3 Bxd3 Qxd3 Qc7 Bd2 e6 O-O-O 
Ngf6 Ne4 O-O-O g3 Nxe4")
+ ("B20" "Sicilian Defence" "e4 c5")
+ ("B20" "Sicilian: Mengarini" "e4 c5 a3")
+ ("B20" "Sicilian: Keres Variation (2.Ne2)" "e4 c5 Ne2")
+ ("B20" "Sicilian: 2.Bc4" "e4 c5 Bc4")
+ ("B20" "Sicilian: Wing Gambit" "e4 c5 b4")
+ ("B20" "Sicilian: Wing Gambit, Santasiere Variation" "e4 c5 b4 cxb4 c4")
+ ("B20" "Sicilian: Wing Gambit, Marshall Variation" "e4 c5 b4 cxb4 a3")
+ ("B20" "Sicilian: Wing Gambit, Marienbad Variation" "e4 c5 b4 cxb4 a3 d5 exd5 
Qxd5 Bb2")
+ ("B20" "Sicilian: Wing Gambit, Carlsbad Variation" "e4 c5 b4 cxb4 a3 bxa3")
+ ("B20" "Sicilian: Snyder" "e4 c5 b3")
+ ("B20" "Sicilian: Snyder, 2...e6" "e4 c5 b3 e6")
+ ("B20" "Sicilian: Snyder, 2...d6" "e4 c5 b3 d6")
+ ("B20" "Sicilian: Snyder, 2...Nc6" "e4 c5 b3 Nc6")
+ ("B20" "Sicilian: English (2.c4)" "e4 c5 c4")
+ ("B20" "Sicilian: English, 2...e6" "e4 c5 c4 e6")
+ ("B20" "Sicilian: English, 2...d6" "e4 c5 c4 d6")
+ ("B20" "Sicilian: English, 2...Nc6" "e4 c5 c4 Nc6")
+ ("B20" "Sicilian: English, 2...Nc6 3.Nf3" "e4 c5 c4 Nc6 Nf3")
+ ("B20" "Sicilian: English, 2...Nc6 3.Ne2" "e4 c5 c4 Nc6 Ne2")
+ ("B20" "Sicilian: English, 2...Nc6 3.Nc3" "e4 c5 c4 Nc6 Nc3")
+ ("B20" "Sicilian: English, 2...Nc6 3.Nc3 g6" "e4 c5 c4 Nc6 Nc3 g6")
+ ("B20" "Sicilian: 2.g3" "e4 c5 g3")
+ ("B20" "Sicilian: 2.g3" "e4 c5 g3 g6")
+ ("B20" "Sicilian: 2.g3" "e4 c5 g3 g6 Bg2 Bg7")
+ ("B20" "Sicilian: 2.g3" "e4 c5 g3 g6 Bg2 Bg7 f4")
+ ("B20" "Sicilian: 2.g3" "e4 c5 g3 g6 Bg2 Bg7 f4 d6")
+ ("B20" "Sicilian: 2.d3" "e4 c5 d3")
+ ("B20" "Sicilian: 2.d3 e6" "e4 c5 d3 e6")
+ ("B20" "Sicilian: 2.d3 e6 3.g3" "e4 c5 d3 e6 g3")
+ ("B20" "Sicilian: 2.d3 Nc6" "e4 c5 d3 Nc6")
+ ("B20" "Sicilian: 2.d3 Nc6 3.g3" "e4 c5 d3 Nc6 g3")
+ ("B21a" "Sicilian: Grand Prix Attack" "e4 c5 f4")
+ ("B21b" "Sicilian: Grand Prix, 2...g6" "e4 c5 f4 g6")
+ ("B21c" "Sicilian: Grand Prix, 2...d6" "e4 c5 f4 d6")
+ ("B21d" "Sicilian: Grand Prix, 2...e6" "e4 c5 f4 e6")
+ ("B21d" "Sicilian: Grand Prix, 2...e6 3.Nf3" "e4 c5 f4 e6 Nf3")
+ ("B21e" "Sicilian: Grand Prix, 2...Nc6" "e4 c5 f4 Nc6")
+ ("B21e" "Sicilian: Grand Prix, 2...Nc6 3.d3" "e4 c5 f4 Nc6 d3")
+ ("B21f" "Sicilian: Grand Prix, 2...Nc6 3.Nf3" "e4 c5 f4 Nc6 Nf3")
+ ("B21g" "Sicilian: Grand Prix, 2...Nc6 3.Nf3 e6" "e4 c5 f4 Nc6 Nf3 e6")
+ ("B21h" "Sicilian: Grand Prix, 2...Nc6 3.Nf3 g6" "e4 c5 f4 Nc6 Nf3 g6")
+ ("B21i" "Sicilian: Grand Prix, Tal Defence" "e4 c5 f4 d5")
+ ("B21i" "Sicilian: Grand Prix, Tal Defence, 3.e5" "e4 c5 f4 d5 e5")
+ ("B21i" "Sicilian: Grand Prix, Toilet Variation" "e4 c5 f4 d5 Nc3")
+ ("B21j" "Sicilian: Grand Prix, Tal Defence, 3.exd5" "e4 c5 f4 d5 exd5")
+ ("B21j" "Sicilian: Grand Prix, Tal Defence, 3.exd5 Qxd5" "e4 c5 f4 d5 exd5 
Qxd5")
+ ("B21k" "Sicilian: Grand Prix, Tal Gambit" "e4 c5 f4 d5 exd5 Nf6")
+ ("B21l" "Sicilian: Grand Prix, Tal Gambit, 4.Bb5+" "e4 c5 f4 d5 exd5 Nf6 
Bb5+")
+ ("B21m" "Sicilian: Smith-Morra Gambit" "e4 c5 d4")
+ ("B21m" "Sicilian: Smith-Morra, 2...d5" "e4 c5 d4 d5")
+ ("B21m" "Sicilian: Smith-Morra, 2...cxd4" "e4 c5 d4 cxd4")
+ ("B21m" "Sicilian: Halasz Gambit" "e4 c5 d4 cxd4 f4")
+ ("B21n" "Sicilian: Smith-Morra, Morphy Gambit" "e4 c5 d4 cxd4 Nf3")
+ ("B21n" "Sicilian: Smith-Morra, Andreaschek Gambit" "e4 c5 d4 cxd4 Nf3 e5 c3")
+ ("B21o" "Sicilian: Smith-Morra, 3.c3" "e4 c5 d4 cxd4 c3")
+ ("B21p" "Sicilian: Smith-Morra, 3.c3 Nf6" "e4 c5 d4 cxd4 c3 Nf6")
+ ("B21q" "Sicilian: Smith-Morra, 3.c3 d5" "e4 c5 d4 cxd4 c3 d5")
+ ("B21r" "Sicilian: Smith-Morra, 3.c3 d3" "e4 c5 d4 cxd4 c3 d3")
+ ("B21s" "Sicilian: Smith-Morra Accepted" "e4 c5 d4 cxd4 c3 dxc3")
+ ("B21s" "Sicilian: Smith-Morra Accepted" "e4 c5 d4 cxd4 c3 dxc3 Nxc3")
+ ("B21t" "Sicilian: Smith-Morra, 4.Nxc3 d6" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 d6")
+ ("B21u" "Sicilian: Smith-Morra, 4.Nxc3 e6" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 e6")
+ ("B21v" "Sicilian: Smith-Morra, 4.Nxc3 e6 5.Nf3" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 
e6 Nf3")
+ ("B21w" "Sicilian: Smith-Morra, 4.Nxc3 Nc6" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 Nc6")
+ ("B21w" "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 
Nc6 Nf3")
+ ("B21x" "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 e6" "e4 c5 d4 cxd4 c3 dxc3 
Nxc3 Nc6 Nf3 e6")
+ ("B21x" "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 e6 6.Bc4" "e4 c5 d4 cxd4 c3 
dxc3 Nxc3 Nc6 Nf3 e6 Bc4")
+ ("B21x" "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 e6 6.Bc4 a6" "e4 c5 d4 cxd4 
c3 dxc3 Nxc3 Nc6 Nf3 e6 Bc4 a6")
+ ("B21y" "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 d6" "e4 c5 d4 cxd4 c3 dxc3 
Nxc3 Nc6 Nf3 d6")
+ ("B21y" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4" "e4 c5 d4 cxd4 c3 dxc3 Nxc3 
Nc6 Nf3 d6 Bc4")
+ ("B21y" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 a6" "e4 c5 d4 cxd4 c3 dxc3 
Nxc3 Nc6 Nf3 d6 Bc4 a6")
+ ("B21y" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 e6" "e4 c5 d4 cxd4 c3 dxc3 
Nxc3 Nc6 Nf3 d6 Bc4 e6")
+ ("B21y" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 e6 7.O-O" "e4 c5 d4 cxd4 c3 
dxc3 Nxc3 Nc6 Nf3 d6 Bc4 e6 O-O")
+ ("B21y" "Sicilian: Smith-Morra Gambit, Chicago Defence" "e4 c5 d4 cxd4 c3 
dxc3 Nxc3 Nc6 Nf3 d6 Bc4 e6 O-O a6 Qe2 b5 Bb3 Ra7")
+ ("B21z" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 e6 7.O-O Nf6" "e4 c5 d4 cxd4 
c3 dxc3 Nxc3 Nc6 Nf3 d6 Bc4 e6 O-O Nf6")
+ ("B21z" "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 e6 7.O-O Nf6 8.Qe2 Be7" "e4 c5 
d4 cxd4 c3 dxc3 Nxc3 Nc6 Nf3 d6 Bc4 e6 O-O Nf6 Qe2 Be7")
+ ("B22a" "Sicilian: Alapin" "e4 c5 c3")
+ ("B22a" "Sicilian: Alapin, 2...e5" "e4 c5 c3 e5")
+ ("B22a" "Sicilian: Alapin, 2...g6" "e4 c5 c3 g6")
+ ("B22a" "Sicilian: Alapin, 2...g6 3.d4" "e4 c5 c3 g6 d4")
+ ("B22a" "Sicilian: Alapin, 2...g6 3.d4 cxd4" "e4 c5 c3 g6 d4 cxd4")
+ ("B22b" "Sicilian: Alapin, 2...Nc6" "e4 c5 c3 Nc6")
+ ("B22b" "Sicilian: Alapin, 2...Nc6 3.Nf3" "e4 c5 c3 Nc6 Nf3")
+ ("B22b" "Sicilian: Alapin, 2...Nc6 3.d4" "e4 c5 c3 Nc6 d4")
+ ("B22c" "Sicilian: Alapin, 2...e6" "e4 c5 c3 e6")
+ ("B22c" "Sicilian: Alapin, 2...e6 3.Nf3" "e4 c5 c3 e6 Nf3")
+ ("B22c" "Sicilian: Alapin, 2...e6 3.Nf3 d5" "e4 c5 c3 e6 Nf3 d5")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4" "e4 c5 c3 e6 d4")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4 d5" "e4 c5 c3 e6 d4 d5")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4 d5 4.exd5" "e4 c5 c3 e6 d4 d5 exd5")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4 d5 4.exd5 exd5" "e4 c5 c3 e6 d4 d5 
exd5 exd5")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4 d5 4.exd5 exd5 5.Nf3" "e4 c5 c3 e6 d4 
d5 exd5 exd5 Nf3")
+ ("B22d" "Sicilian: Alapin, 2...e6 3.d4 d5 4.exd5 exd5 5.Nf3 Nc6" "e4 c5 c3 e6 
d4 d5 exd5 exd5 Nf3 Nc6")
+ ("B22e" "Sicilian: Alapin, 2...d6" "e4 c5 c3 d6")
+ ("B22f" "Sicilian: Alapin, 2...d5" "e4 c5 c3 d5")
+ ("B22f" "Sicilian: Alapin, 2...d5 3.exd5" "e4 c5 c3 d5 exd5")
+ ("B22f" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5" "e4 c5 c3 d5 exd5 Qxd5")
+ ("B22f" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4" "e4 c5 c3 d5 exd5 Qxd5 
d4")
+ ("B22f" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 cxd4" "e4 c5 c3 d5 exd5 
Qxd5 d4 cxd4")
+ ("B22f" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 cxd4 5.cxd4" "e4 c5 c3 d5 
exd5 Qxd5 d4 cxd4 cxd4")
+ ("B22g" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 e6" "e4 c5 c3 d5 exd5 Qxd5 
d4 e6")
+ ("B22g" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 e6 5.Nf3" "e4 c5 c3 d5 
exd5 Qxd5 d4 e6 Nf3")
+ ("B22h" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6" "e4 c5 c3 d5 exd5 
Qxd5 d4 Nc6")
+ ("B22h" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6 5.Nf3" "e4 c5 c3 d5 
exd5 Qxd5 d4 Nc6 Nf3")
+ ("B22h" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6 5.Nf3 cxd4" "e4 c5 c3 
d5 exd5 Qxd5 d4 Nc6 Nf3 cxd4")
+ ("B22h" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6 5.Nf3 cxd4 6.cxd4" "e4 
c5 c3 d5 exd5 Qxd5 d4 Nc6 Nf3 cxd4 cxd4")
+ ("B22i" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6 5.Nf3 Bg4" "e4 c5 c3 
d5 exd5 Qxd5 d4 Nc6 Nf3 Bg4")
+ ("B22j" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6" "e4 c5 c3 d5 exd5 
Qxd5 d4 Nf6")
+ ("B22j" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3" "e4 c5 c3 d5 
exd5 Qxd5 d4 Nf6 Nf3")
+ ("B22k" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 Bg4" "e4 c5 c3 
d5 exd5 Qxd5 d4 Nf6 Nf3 Bg4")
+ ("B22l" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 Bg4 6.Be2 e6" 
"e4 c5 c3 d5 exd5 Qxd5 d4 Nf6 Nf3 Bg4 Be2 e6")
+ ("B22m" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 e6 6.Be3" "e4 c5 
c3 d5 exd5 Qxd5 d4 Nf6 Nf3 e6 Be3")
+ ("B22n" "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 e6 6.Be2" "e4 c5 
c3 d5 exd5 Qxd5 d4 Nf6 Nf3 e6 Be2")
+ ("B22o" "Sicilian: Alapin, 2...Nf6" "e4 c5 c3 Nf6")
+ ("B22o" "Sicilian: Alapin, 2...Nf6 3.e5" "e4 c5 c3 Nf6 e5")
+ ("B22o" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5" "e4 c5 c3 Nf6 e5 Nd5")
+ ("B22o" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.g3" "e4 c5 c3 Nf6 e5 Nd5 g3")
+ ("B22p" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.Nf3" "e4 c5 c3 Nf6 e5 Nd5 Nf3")
+ ("B22p" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.Nf3 Nc6" "e4 c5 c3 Nf6 e5 Nd5 
Nf3 Nc6")
+ ("B22p" "Sicilian: Alapin, Heidenfeld Variation" "e4 c5 c3 Nf6 e5 Nd5 Nf3 Nc6 
Na3")
+ ("B22p" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4" "e4 c5 c3 Nf6 e5 Nd5 d4")
+ ("B22q" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4" "e4 c5 c3 Nf6 e5 Nd5 
d4 cxd4")
+ ("B22q" "Sicilian: Alapin, 2...Nf6, 5.Bc4" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 Bc4")
+ ("B22q" "Sicilian: Alapin, 2...Nf6, 5.Qxd4" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
Qxd4")
+ ("B22r" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3" "e4 c5 c3 Nf6 e5 
Nd5 d4 cxd4 Nf3")
+ ("B22r" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3 e6" "e4 c5 c3 Nf6 
e5 Nd5 d4 cxd4 Nf3 e6")
+ ("B22r" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3 Nc6" "e4 c5 c3 
Nf6 e5 Nd5 d4 cxd4 Nf3 Nc6")
+ ("B22s" "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3 Nc6 6.Bc4" "e4 c5 
c3 Nf6 e5 Nd5 d4 cxd4 Nf3 Nc6 Bc4")
+ ("B22t" "Sicilian: Alapin, 2...Nf6, 5.cxd4" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
cxd4")
+ ("B22t" "Sicilian: Alapin, 2...Nf6, 5.cxd4 d6" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
cxd4 d6")
+ ("B22t" "Sicilian: Alapin, 2...Nf6, 5.cxd4 Nc6" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
cxd4 Nc6")
+ ("B22t" "Sicilian: Alapin, 2...Nf6, 5.cxd4 Nc6 6.Nf3" "e4 c5 c3 Nf6 e5 Nd5 d4 
cxd4 cxd4 Nc6 Nf3")
+ ("B22t" "Sicilian: Alapin, 2...Nf6, 5.cxd4 d6" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
cxd4 d6 Nf3")
+ ("B22u" "Sicilian: Alapin, 2...Nf6, 5.cxd4 d6 6.Nf3 Nc6" "e4 c5 c3 Nf6 e5 Nd5 
d4 cxd4 cxd4 d6 Nf3 Nc6")
+ ("B22v" "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6" "e4 c5 c3 Nf6 e5 Nd5 d4 cxd4 
cxd4 e6")
+ ("B22v" "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3" "e4 c5 c3 Nf6 e5 Nd5 d4 
cxd4 cxd4 e6 Nf3")
+ ("B22v" "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3 Nc6" "e4 c5 c3 Nf6 e5 Nd5 
d4 cxd4 cxd4 e6 Nf3 Nc6")
+ ("B22w" "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3 d6" "e4 c5 c3 Nf6 e5 Nd5 
d4 cxd4 cxd4 e6 Nf3 d6")
+ ("B22x" "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3 b6" "e4 c5 c3 Nf6 e5 Nd5 
d4 cxd4 cxd4 e6 Nf3 b6")
+ ("B23a" "Sicilian: Closed" "e4 c5 Nc3")
+ ("B23b" "Sicilian: Closed" "e4 c5 Nc3 g6")
+ ("B23c" "Sicilian: Closed" "e4 c5 Nc3 d6")
+ ("B23c" "Sicilian: Closed" "e4 c5 Nc3 d6 Nge2")
+ ("B23d" "Sicilian: Closed" "e4 c5 Nc3 d6 g3")
+ ("B23e" "Sicilian: Closed" "e4 c5 Nc3 d6 f4")
+ ("B23f" "Sicilian: Closed" "e4 c5 Nc3 e6")
+ ("B23g" "Sicilian: Closed" "e4 c5 Nc3 e6 f4")
+ ("B23h" "Sicilian: Closed" "e4 c5 Nc3 e6 Nge2")
+ ("B23i" "Sicilian: Closed" "e4 c5 Nc3 e6 g3")
+ ("B23j" "Sicilian: Closed, Korchnoi Variation" "e4 c5 Nc3 e6 g3 d5")
+ ("B23k" "Sicilian: Closed, 2...Nc6" "e4 c5 Nc3 Nc6")
+ ("B23l" "Sicilian: Closed, 2...Nc6 3.Bb5" "e4 c5 Nc3 Nc6 Bb5")
+ ("B23m" "Sicilian: Closed, 2...Nc6 3.Bb5 Nd4" "e4 c5 Nc3 Nc6 Bb5 Nd4")
+ ("B23n" "Sicilian: Chameleon Variation" "e4 c5 Nc3 Nc6 Nge2")
+ ("B23n" "Sicilian: Chameleon, 3...e5" "e4 c5 Nc3 Nc6 Nge2 e5")
+ ("B23n" "Sicilian: Chameleon, 3...g6" "e4 c5 Nc3 Nc6 Nge2 g6")
+ ("B23o" "Sicilian: Closed, Grand Prix" "e4 c5 Nc3 Nc6 f4")
+ ("B23o" "Sicilian: Closed, Grand Prix, 3...d6" "e4 c5 Nc3 Nc6 f4 d6")
+ ("B23p" "Sicilian: Closed, Grand Prix, 3...d6 4.Nf3 g6" "e4 c5 Nc3 Nc6 f4 d6 
Nf3 g6")
+ ("B23q" "Sicilian: Closed, Grand Prix, 3...e6" "e4 c5 Nc3 Nc6 f4 e6")
+ ("B23q" "Sicilian: Closed, Grand Prix, 3...e6 4.Nf3" "e4 c5 Nc3 Nc6 f4 e6 
Nf3")
+ ("B23r" "Sicilian: Closed, Grand Prix, 3...e6 4.Nf3 d5" "e4 c5 Nc3 Nc6 f4 e6 
Nf3 d5")
+ ("B23s" "Sicilian: Closed, Grand Prix, 3...g6" "e4 c5 Nc3 Nc6 f4 g6")
+ ("B23t" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bc4" "e4 c5 Nc3 Nc6 
f4 g6 Nf3 Bg7 Bc4")
+ ("B23u" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bc4 e6" "e4 c5 Nc3 
Nc6 f4 g6 Nf3 Bg7 Bc4 e6")
+ ("B23v" "Sicilian: Closed, Grand Prix, Schofman Variation" "e4 c5 Nc3 Nc6 f4 
g6 Nf3 Bg7 Bc4 e6 f5")
+ ("B23w" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5" "e4 c5 Nc3 Nc6 
f4 g6 Nf3 Bg7 Bb5")
+ ("B23w" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5 Nd4" "e4 c5 Nc3 
Nc6 f4 g6 Nf3 Bg7 Bb5 Nd4")
+ ("B23x" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5 Nd4 6.Bd3" "e4 
c5 Nc3 Nc6 f4 g6 Nf3 Bg7 Bb5 Nd4 Bd3")
+ ("B23y" "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5 Nd4 6.O-O" "e4 
c5 Nc3 Nc6 f4 g6 Nf3 Bg7 Bb5 Nd4 O-O")
+ ("B24" "Sicilian: Closed, 3.g3" "e4 c5 Nc3 Nc6 g3")
+ ("B24" "Sicilian: Closed, 3.g3 e6" "e4 c5 Nc3 Nc6 g3 e6")
+ ("B24" "Sicilian: Closed, 3.g3 g6" "e4 c5 Nc3 Nc6 g3 g6")
+ ("B24" "Sicilian: Closed, 3.g3 g6" "e4 c5 Nc3 Nc6 g3 g6 d3")
+ ("B24" "Sicilian: Closed, 3.g3 g6" "e4 c5 Nc3 Nc6 g3 g6 Bg2")
+ ("B24" "Sicilian: Closed, 3.g3 g6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7")
+ ("B24" "Sicilian: Closed, 3.g3 g6, 5.Nge2" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 Nge2")
+ ("B24" "Sicilian: Closed, 3.g3 g6, 5.f4" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 f4")
+ ("B24" "Sicilian: Closed, 3.g3 g6, 5.d3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3")
+ ("B24" "Sicilian: Closed, 3.g3 g6, 5.d3 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
e6")
+ ("B24" "Sicilian: Closed, Smyslov Variation" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
e6 Be3 Nd4 Nce2")
+ ("B24" "Sicilian: Closed, 3.g3 g6, 5.d3 e6 6.f4" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 e6 f4")
+ ("B25a" "Sicilian: Closed, 3.g3, 5.d3 d6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6")
+ ("B25b" "Sicilian: Closed, 3.g3, 5.d3 d6 6.Nge2" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Nge2")
+ ("B25c" "Sicilian: Closed, Botvinnik" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Nge2 
e5")
+ ("B25d" "Sicilian: Closed, 3.g3, 5.d3 d6 6.Nge2 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 d3 d6 Nge2 e6")
+ ("B25e" "Sicilian: Closed, 6.f4" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4")
+ ("B25f" "Sicilian: Closed, 6.f4 Rb8" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 
Rb8")
+ ("B25g" "Sicilian: Closed, 6.f4 Nf6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 
Nf6")
+ ("B25h" "Sicilian: Closed, 6.f4 Nf6 7.Nf3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
f4 Nf6 Nf3")
+ ("B25i" "Sicilian: Closed, 6.f4 e5" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e5")
+ ("B25j" "Sicilian: Closed, 6.f4 e5 7.Nf3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
f4 e5 Nf3")
+ ("B25j" "Sicilian: Closed, 6.f4 e5 7.Nf3 Nge7" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 f4 e5 Nf3 Nge7")
+ ("B25k" "Sicilian: Closed, 6.f4 e5 7.Nf3 Nge7 8.O-O" "e4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 d3 d6 f4 e5 Nf3 Nge7 O-O")
+ ("B25l" "Sicilian: Closed, 6.f4 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6")
+ ("B25m" "Sicilian: Closed, 6.f4 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6 
Nf3")
+ ("B25n" "Sicilian: Closed, 6.f4 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6 
Nf3 Nge7")
+ ("B25o" "Sicilian: Closed, 6.f4 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6 
Nf3 Nge7 O-O")
+ ("B25p" "Sicilian: Closed, 6.f4 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 f4 e6 
Nf3 Nge7 O-O O-O")
+ ("B25q" "Sicilian: Closed, 6.f4 e6: 9.Be3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
f4 e6 Nf3 Nge7 O-O O-O Be3")
+ ("B25r" "Sicilian: Closed, 6.f4 e6: 9.Be3 Rb8" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Rb8")
+ ("B25s" "Sicilian: Closed, 6.f4 e6: 9.Be3 b6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 f4 e6 Nf3 Nge7 O-O O-O Be3 b6")
+ ("B25t" "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Nd4")
+ ("B25u" "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.Rb1" "e4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Nd4 Rb1")
+ ("B25v" "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.Qd2" "e4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Nd4 Qd2")
+ ("B25w" "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.e5" "e4 c5 Nc3 Nc6 g3 g6 Bg2 
Bg7 d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Nd4 e5")
+ ("B25x" "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.e5 Nef5" "e4 c5 Nc3 Nc6 g3 
g6 Bg2 Bg7 d3 d6 f4 e6 Nf3 Nge7 O-O O-O Be3 Nd4 e5 Nef5")
+ ("B26a" "Sicilian: Closed, 6.Be3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3")
+ ("B26b" "Sicilian: Closed, 6.Be3 Nf6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3 
Nf6")
+ ("B26c" "Sicilian: Closed, 6.Be3 Nf6 7.h3" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Be3 Nf6 h3")
+ ("B26d" "Sicilian: Closed, 6.Be3 e5" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3 
e5")
+ ("B26e" "Sicilian: Closed, 6.Be3 e5 7.Qd2" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Be3 e5 Qd2")
+ ("B26f" "Sicilian: Closed, 6.Be3 e5 7.Qd2 Nge7" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 e5 Qd2 Nge7")
+ ("B26g" "Sicilian: Closed, 6.Be3 Rb8" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3 
Rb8")
+ ("B26h" "Sicilian: Closed, 6.Be3 Rb8 7.Qd2" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 
d6 Be3 Rb8 Qd2")
+ ("B26i" "Sicilian: Closed, 6.Be3 Rb8 7.Qd2 b5" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 Rb8 Qd2 b5")
+ ("B26j" "Sicilian: Closed, 6.Be3 Rb8 7.Qd2 b5 8.Nge2" "e4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 d3 d6 Be3 Rb8 Qd2 b5 Nge2")
+ ("B26k" "Sicilian: Closed, 6.Be3 e6" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 Be3 
e6")
+ ("B26l" "Sicilian: Closed, 6.Be3 e6 7.Qd2" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 d3 d6 
Be3 e6 Qd2")
+ ("B26m" "Sicilian: Closed, 6.Be3 e6 7.Qd2 Qa5" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 e6 Qd2 Qa5")
+ ("B26n" "Sicilian: Closed, 6.Be3 e6 7.Qd2 Nd4" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 e6 Qd2 Nd4")
+ ("B26o" "Sicilian: Closed, 6.Be3 e6 7.Qd2 Nge7" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 e6 Qd2 Nge7")
+ ("B26p" "Sicilian: Closed, 6.Be3 e6 7.Qd2 Rb8" "e4 c5 Nc3 Nc6 g3 g6 Bg2 Bg7 
d3 d6 Be3 e6 Qd2 Rb8")
+ ("B26q" "Sicilian: Closed, 6.Be3 e6 7.Qd2 Rb8 8.Nge2" "e4 c5 Nc3 Nc6 g3 g6 
Bg2 Bg7 d3 d6 Be3 e6 Qd2 Rb8 Nge2")
+ ("B27a" "Sicilian: 2.Nf3" "e4 c5 Nf3")
+ ("B27b" "Sicilian: Mongoose Variation" "e4 c5 Nf3 Qa5")
+ ("B27c" "Sicilian: Quinteros Variation" "e4 c5 Nf3 Qc7")
+ ("B27d" "Sicilian: Katalimov Variation" "e4 c5 Nf3 b6")
+ ("B27e" "Sicilian: Hungarian Variation" "e4 c5 Nf3 g6")
+ ("B27f" "Sicilian: Hungarian, 3.c4" "e4 c5 Nf3 g6 c4")
+ ("B27g" "Sicilian: Hungarian, 3.c3" "e4 c5 Nf3 g6 c3")
+ ("B27h" "Sicilian: Hungarian, 3.c3 Bg7 4.d4 cxd4 5.cxd4" "e4 c5 Nf3 g6 c3 Bg7 
d4 cxd4 cxd4")
+ ("B27i" "Sicilian: Hungarian, 3.c3 Bg7 4.d4 cxd4 5.cxd4 d5" "e4 c5 Nf3 g6 c3 
Bg7 d4 cxd4 cxd4 d5")
+ ("B27j" "Sicilian: Hungarian, 3.d4" "e4 c5 Nf3 g6 d4")
+ ("B27k" "Sicilian: Hungarian, 3.d4 cxd4" "e4 c5 Nf3 g6 d4 cxd4")
+ ("B27l" "Sicilian: Hungarian, 3.d4 cxd4 4.Nxd4" "e4 c5 Nf3 g6 d4 cxd4 Nxd4")
+ ("B27m" "Sicilian: Accelerated Pterodactyl" "e4 c5 Nf3 g6 d4 Bg7")
+ ("B27n" "Sicilian: Accelerated Pterodactyl, 4.dxc5" "e4 c5 Nf3 g6 d4 Bg7 
dxc5")
+ ("B27o" "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+" "e4 c5 Nf3 g6 d4 Bg7 
dxc5 Qa5+")
+ ("B27p" "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.Nc3" "e4 c5 Nf3 g6 
d4 Bg7 dxc5 Qa5+ Nc3")
+ ("B27q" "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.c3" "e4 c5 Nf3 g6 
d4 Bg7 dxc5 Qa5+ c3")
+ ("B27r" "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.c3" "e4 c5 Nf3 g6 
d4 Bg7 dxc5 Qa5+ c3 Qxc5")
+ ("B27s" "Sicilian: Accelerated Pterodactyl, 4.c4" "e4 c5 Nf3 g6 d4 Bg7 c4")
+ ("B27t" "Sicilian: Accelerated Pterodactyl, 4.c4 Qa5+" "e4 c5 Nf3 g6 d4 Bg7 
c4 Qa5+")
+ ("B27t" "Sicilian: Accelerated Pterodactyl, 4.Nc3" "e4 c5 Nf3 g6 d4 Bg7 Nc3")
+ ("B28a" "Sicilian: O'Kelly Variation" "e4 c5 Nf3 a6")
+ ("B28b" "Sicilian: O'Kelly, 3.Nc3" "e4 c5 Nf3 a6 Nc3")
+ ("B28c" "Sicilian: O'Kelly, 3.d4" "e4 c5 Nf3 a6 d4")
+ ("B28d" "Sicilian: O'Kelly, 3.d4 cxd4 4.Nxd4" "e4 c5 Nf3 a6 d4 cxd4 Nxd4")
+ ("B28e" "Sicilian: O'Kelly, 3.d4 cxd4 4.Nxd4 Nf6" "e4 c5 Nf3 a6 d4 cxd4 Nxd4 
Nf6")
+ ("B28f" "Sicilian: O'Kelly, 3.c4" "e4 c5 Nf3 a6 c4")
+ ("B28g" "Sicilian: O'Kelly, 3.c4 e6" "e4 c5 Nf3 a6 c4 e6")
+ ("B28h" "Sicilian: O'Kelly, 3.c3" "e4 c5 Nf3 a6 c3")
+ ("B28i" "Sicilian: O'Kelly, 3.c3 e6" "e4 c5 Nf3 a6 c3 e6")
+ ("B28j" "Sicilian: O'Kelly, 3.c3 d5" "e4 c5 Nf3 a6 c3 d5")
+ ("B29a" "Sicilian: Nimzowitsch" "e4 c5 Nf3 Nf6")
+ ("B29b" "Sicilian: Nimzowitsch, 3.d3" "e4 c5 Nf3 Nf6 d3")
+ ("B29c" "Sicilian: Nimzowitsch, 3.Nc3" "e4 c5 Nf3 Nf6 Nc3")
+ ("B29d" "Sicilian: Nimzowitsch, 3.Nc3 d5" "e4 c5 Nf3 Nf6 Nc3 d5")
+ ("B29e" "Sicilian: Nimzowitsch, 3.Nc3 d5 4.exd5" "e4 c5 Nf3 Nf6 Nc3 d5 exd5")
+ ("B29f" "Sicilian: Nimzowitsch, 3.e5" "e4 c5 Nf3 Nf6 e5")
+ ("B29f" "Sicilian: Nimzowitsch, 3.e5 Nd5" "e4 c5 Nf3 Nf6 e5 Nd5")
+ ("B29g" "Sicilian: Nimzowitsch, 4.c4" "e4 c5 Nf3 Nf6 e5 Nd5 c4")
+ ("B29h" "Sicilian: Nimzowitsch, 4.d4" "e4 c5 Nf3 Nf6 e5 Nd5 d4")
+ ("B29i" "Sicilian: Nimzowitsch, 4.Nc3" "e4 c5 Nf3 Nf6 e5 Nd5 Nc3")
+ ("B29j" "Sicilian: Nimzowitsch, 4.Nc3 Nxc3" "e4 c5 Nf3 Nf6 e5 Nd5 Nc3 Nxc3")
+ ("B29k" "Sicilian: Nimzowitsch, 4.Nc3 e6" "e4 c5 Nf3 Nf6 e5 Nd5 Nc3 e6")
+ ("B29l" "Sicilian: Nimzowitsch, 4.Nc3 e6 5.Nxd5" "e4 c5 Nf3 Nf6 e5 Nd5 Nc3 e6 
Nxd5")
+ ("B29m" "Sicilian: Nimzowitsch, Rubinstein Countergambit" "e4 c5 Nf3 Nf6 e5 
Nd5 Nc3 e6 Nxd5 exd5 d4 Nc6")
+ ("B29n" "Sicilian: Nimzowitsch, Rubinstein Countergambit, 7.dxc5" "e4 c5 Nf3 
Nf6 e5 Nd5 Nc3 e6 Nxd5 exd5 d4 Nc6 dxc5")
+ ("B30a" "Sicilian: 2...Nc6" "e4 c5 Nf3 Nc6")
+ ("B30b" "Sicilian: 2...Nc6 3.b3" "e4 c5 Nf3 Nc6 b3")
+ ("B30c" "Sicilian: 2...Nc6 3.d3" "e4 c5 Nf3 Nc6 d3")
+ ("B30c" "Sicilian: 2...Nc6 3.d3 Nf6" "e4 c5 Nf3 Nc6 d3 Nf6")
+ ("B30d" "Sicilian: 2...Nc6 3.g3" "e4 c5 Nf3 Nc6 g3")
+ ("B30e" "Sicilian: 2...Nc6 3.g3 e6 4.d3" "e4 c5 Nf3 Nc6 g3 e6 d3")
+ ("B30f" "Sicilian: 2...Nc6 3.g3 e6 4.d3 d5" "e4 c5 Nf3 Nc6 g3 e6 d3 d5")
+ ("B30g" "Sicilian: 2...Nc6 3.Bc4" "e4 c5 Nf3 Nc6 Bc4")
+ ("B30h" "Sicilian: 2...Nc6 3.Nc3" "e4 c5 Nf3 Nc6 Nc3")
+ ("B30h" "Sicilian: 2...Nc6 3.Nc3 Nf6" "e4 c5 Nf3 Nc6 Nc3 Nf6")
+ ("B30i" "Sicilian: 2...Nc6 3.Nc3 g6" "e4 c5 Nf3 Nc6 Nc3 g6")
+ ("B30j" "Sicilian: 2...Nc6 3.Nc3 e5" "e4 c5 Nf3 Nc6 Nc3 e5")
+ ("B30k" "Sicilian: Rossolimo" "e4 c5 Nf3 Nc6 Bb5")
+ ("B30l" "Sicilian: Rossolimo, 3...Qb6" "e4 c5 Nf3 Nc6 Bb5 Qb6")
+ ("B30m" "Sicilian: Rossolimo, 3...Nf6" "e4 c5 Nf3 Nc6 Bb5 Nf6")
+ ("B30n" "Sicilian: Rossolimo, 3...e6" "e4 c5 Nf3 Nc6 Bb5 e6")
+ ("B30o" "Sicilian: Rossolimo, 3...e6 4.b3" "e4 c5 Nf3 Nc6 Bb5 e6 b3")
+ ("B30p" "Sicilian: Rossolimo, 3...e6 4.Nc3" "e4 c5 Nf3 Nc6 Bb5 e6 Nc3")
+ ("B30q" "Sicilian: Rossolimo, 3...e6 4.Bxc6" "e4 c5 Nf3 Nc6 Bb5 e6 Bxc6")
+ ("B30r" "Sicilian: Rossolimo, 3...e6 4.O-O" "e4 c5 Nf3 Nc6 Bb5 e6 O-O")
+ ("B30s" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7" "e4 c5 Nf3 Nc6 Bb5 e6 O-O 
Nge7")
+ ("B30s" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.b3" "e4 c5 Nf3 Nc6 Bb5 e6 
O-O Nge7 b3")
+ ("B30t" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.Re1" "e4 c5 Nf3 Nc6 Bb5 e6 
O-O Nge7 Re1")
+ ("B30u" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.Nc3" "e4 c5 Nf3 Nc6 Bb5 e6 
O-O Nge7 Nc3")
+ ("B30v" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.c3" "e4 c5 Nf3 Nc6 Bb5 e6 
O-O Nge7 c3")
+ ("B30w" "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.c3 a6" "e4 c5 Nf3 Nc6 Bb5 
e6 O-O Nge7 c3 a6")
+ ("B31a" "Sicilian: Rossolimo, 3...g6" "e4 c5 Nf3 Nc6 Bb5 g6")
+ ("B31b" "Sicilian: Rossolimo, 3...g6 4.Nc3" "e4 c5 Nf3 Nc6 Bb5 g6 Nc3")
+ ("B31c" "Sicilian: Rossolimo, 3...g6 4.Bxc6" "e4 c5 Nf3 Nc6 Bb5 g6 Bxc6")
+ ("B31d" "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6" "e4 c5 Nf3 Nc6 Bb5 g6 Bxc6 
dxc6")
+ ("B31e" "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6 5.d3" "e4 c5 Nf3 Nc6 Bb5 g6 
Bxc6 dxc6 d3")
+ ("B31f" "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6 5.d3 Bg7 6.h3" "e4 c5 Nf3 
Nc6 Bb5 g6 Bxc6 dxc6 d3 Bg7 h3")
+ ("B31g" "Sicilian: Rossolimo, 3...g6 4.O-O" "e4 c5 Nf3 Nc6 Bb5 g6 O-O")
+ ("B31h" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.c3" "e4 c5 Nf3 Nc6 Bb5 g6 
O-O Bg7 c3")
+ ("B31i" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.c3 e5" "e4 c5 Nf3 Nc6 Bb5 g6 
O-O Bg7 c3 e5")
+ ("B31j" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1" "e4 c5 Nf3 Nc6 Bb5 g6 
O-O Bg7 Re1")
+ ("B31k" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6" "e4 c5 Nf3 Nc6 Bb5 
g6 O-O Bg7 Re1 Nf6")
+ ("B31l" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3" "e4 c5 Nf3 Nc6 
Bb5 g6 O-O Bg7 Re1 Nf6 c3")
+ ("B31m" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3 O-O 7.h3" "e4 
c5 Nf3 Nc6 Bb5 g6 O-O Bg7 Re1 Nf6 c3 O-O h3")
+ ("B31n" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3 O-O 7.d4" "e4 
c5 Nf3 Nc6 Bb5 g6 O-O Bg7 Re1 Nf6 c3 O-O d4")
+ ("B31o" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 e5" "e4 c5 Nf3 Nc6 Bb5 
g6 O-O Bg7 Re1 e5")
+ ("B31p" "Sicilian: Rossolimo, Gurgenidze Variation" "e4 c5 Nf3 Nc6 Bb5 g6 O-O 
Bg7 Re1 e5 b4")
+ ("B31q" "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 e5" "e4 c5 Nf3 Nc6 Bb5 
g6 O-O Bg7 Re1 e5 c3")
+ ("B32a" "Sicilian: 2...Nc6 3.d4" "e4 c5 Nf3 Nc6 d4")
+ ("B32b" "Sicilian: 2...Nc6 3.d4 cxd4" "e4 c5 Nf3 Nc6 d4 cxd4")
+ ("B32c" "Sicilian: Open, 2...Nc6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4")
+ ("B32d" "Sicilian: Open, 2...Nc6, 4...d6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 d6")
+ ("B32e" "Sicilian: Open, 2...Nc6, 4...Qb6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Qb6")
+ ("B32f" "Sicilian: Flohr Variation" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Qc7")
+ ("B32g" "Sicilian: Flohr, 5.Nb5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Qc7 Nb5")
+ ("B32h" "Sicilian: 2..Nc6, Nimzowitsch Variation" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
d5")
+ ("B32i" "Sicilian: Lowenthal" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 e5")
+ ("B32j" "Sicilian: Lowenthal, 5.Nb5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 e5 Nb5")
+ ("B32k" "Sicilian: Lowenthal, 5...a6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 e5 Nb5 a6")
+ ("B32l" "Sicilian: Lowenthal, 5...a6, Queenswap" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
e5 Nb5 a6 Nd6+ Bxd6 Qxd6 Qf6 Qxf6")
+ ("B32m" "Sicilian: Lowenthal, 5...a6, 8.Qd1" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 e5 
Nb5 a6 Nd6+ Bxd6 Qxd6 Qf6 Qd1")
+ ("B32n" "Sicilian: Lowenthal, Kalashnikov" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 e5 Nb5 
d6")
+ ("B32o" "Sicilian: Lowenthal, Kalashnikov, 6.a4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
e5 Nb5 d6 a4")
+ ("B32p" "Sicilian: Lowenthal, Kalashnikov, 6.N1c3" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 e5 Nb5 d6 N1c3")
+ ("B32q" "Sicilian: Lowenthal, Kalashnikov, 6.N1c3 a6 7.Na3 b5" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 e5 Nb5 d6 N1c3 a6 Na3 b5")
+ ("B32r" "Sicilian: Lowenthal, Kalashnikov, 6.N1c3 a6 7.Na3 b5 8.Nd5 Nge7" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 e5 Nb5 d6 N1c3 a6 Na3 b5 Nd5 Nge7")
+ ("B32s" "Sicilian: Lowenthal, Kalashnikov, 6.c4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
e5 Nb5 d6 c4")
+ ("B32t" "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 e5 Nb5 d6 c4 Be7")
+ ("B32u" "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7 7.Be2" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 e5 Nb5 d6 c4 Be7 Be2")
+ ("B32v" "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7 7.N1c3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 e5 Nb5 d6 c4 Be7 N1c3")
+ ("B32w" "Sicilian: Lowenthal, Kalashnikov, Main Line" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 e5 Nb5 d6 c4 Be7 N1c3 a6 Na3 Be6")
+ ("B32x" "Sicilian: Lowenthal, Kalashnikov, Main Line, 9.Nc2" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 e5 Nb5 d6 c4 Be7 N1c3 a6 Na3 Be6 Nc2")
+ ("B32y" "Sicilian: Lowenthal, Kalashnikov, Main Line, 9.Be2" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 e5 Nb5 d6 c4 Be7 N1c3 a6 Na3 Be6 Be2")
+ ("B33a" "Sicilian: Open, 2...Nc6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6")
+ ("B33b" "Sicilian: Open, 2...Nc6, 5...Qb6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 Qb6")
+ ("B33b" "Sicilian: Open, 2...Nc6, 5...Qb6 6.Nb3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 Qb6 Nb3")
+ ("B33b" "Sicilian: Open, 2...Nc6, 5...Qb6 6.Nb3 e6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 Qb6 Nb3 e6")
+ ("B33c" "Sicilian: Open, 2...Nc6, 5...Qb6 6.Nb3 e6 7.Bd3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 Nf6 Nc3 Qb6 Nb3 e6 Bd3")
+ ("B33d" "Sicilian: Pelikan/Sveshnikov" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 
e5")
+ ("B33d" "Sicilian: Pelikan/Sveshnikov, 6.Nxc6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Nxc6")
+ ("B33d" "Sicilian: Pelikan/Sveshnikov, 6.Nf5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Nf5")
+ ("B33d" "Sicilian: Pelikan/Sveshnikov, 6.Nf3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Nf3")
+ ("B33d" "Sicilian: Pelikan/Sveshnikov, 6.Nb3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Nb3")
+ ("B33e" "Sicilian: Pelikan/Sveshnikov, 6.Nbd5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5")
+ ("B33e" "Sicilian: Pelikan, Haberditz Variation" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 h6")
+ ("B33f" "Sicilian: Pelikan/Sveshnikov, Pelikan Variation" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6")
+ ("B33f" "Sicilian: Pelikan, 7.Na3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 
Ndb5 d6 Na3")
+ ("B33g" "Sicilian: Pelikan, 7.a4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 
d6 a4")
+ ("B33g" "Sicilian: Pelikan, 7.a4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 
d6 a4 a6 Na3")
+ ("B33h" "Sicilian: Pelikan, 7.Nd5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 
Ndb5 d6 Nd5")
+ ("B33i" "Sicilian: Pelikan, 7.Bg5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 
Ndb5 d6 Bg5")
+ ("B33i" "Sicilian: Pelikan, 7.Bg5 a6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 
Ndb5 d6 Bg5 a6")
+ ("B33j" "Sicilian: Pelikan, 7.Bg5 a6 8.Bxf6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Ndb5 d6 Bg5 a6 Bxf6")
+ ("B33k" "Sicilian: Pelikan, 7.Bg5 a6 8.Na3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Ndb5 d6 Bg5 a6 Na3")
+ ("B33k" "Sicilian: Pelikan, Bird Variation" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 
Nc3 e5 Ndb5 d6 Bg5 a6 Na3 Be6")
+ ("B33l" "Sicilian: Pelikan, Chelyabinsk Variation" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5")
+ ("B33l" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5")
+ ("B33m" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7")
+ ("B33n" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7 Bxf6 Bxf6 c3")
+ ("B33o" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7 Bxf6 Bxf6 c3 O-O")
+ ("B33p" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 Bg5" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7 Bxf6 Bxf6 c3 Bg5")
+ ("B33q" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O 12.Nc2 Bg5" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7 Bxf6 Bxf6 c3 
O-O Nc2 Bg5")
+ ("B33r" "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O 12.Nc2 Bg5 
13.a4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Nd5 Be7 
Bxf6 Bxf6 c3 O-O Nc2 Bg5 a4")
+ ("B33s" "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6")
+ ("B33s" "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6 gxf6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6")
+ ("B33s" "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6 gxf6 10.Nd5" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5")
+ ("B33s" "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6 gxf6 10.Nd5 Bg7" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 Bg7")
+ ("B33t" "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6 gxf6 10.Nd5 Bg7 11.Bd3" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 Bg7 Bd3")
+ ("B33u" "Sicilian: Pelikan, Sveshnikov Variation" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5")
+ ("B33v" "Sicilian: Pelikan, Sveshnikov, 11.c3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 c3")
+ ("B33v" "Sicilian: Pelikan, Sveshnikov, 11.c3 Bg7" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 c3 Bg7")
+ ("B33v" "Sicilian: Pelikan, Sveshnikov, 11.c3 Bg7 12.exf5 Bxf5" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 c3 Bg7 exf5 
Bxf5")
+ ("B33w" "Sicilian: Pelikan, Sveshnikov, 11.c3 Bg7 12.exf5 Bxf5 13.Nc2 O-O" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 
c3 Bg7 exf5 Bxf5 Nc2 O-O")
+ ("B33x" "Sicilian: Pelikan, Sveshnikov, 11.Bd3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 Bd3")
+ ("B33x" "Sicilian: Pelikan, Sveshnikov, 11.Bd3 Be6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 Bd3 Be6")
+ ("B33y" "Sicilian: Pelikan, Sveshnikov, 11.Bd3 Be6 12.O-O" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 Nf6 Nc3 e5 Ndb5 d6 Bg5 a6 Na3 b5 Bxf6 gxf6 Nd5 f5 Bd3 Be6 O-O")
+ ("B34a" "Sicilian: Accelerated Fianchetto" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6")
+ ("B34b" "Sicilian: Accelerated Fianchetto, 5.Bc4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 Bc4")
+ ("B34c" "Sicilian: Accelerated Fianchetto, Exchange Variation" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nxc6")
+ ("B34d" "Sicilian: Accelerated Fianchetto, 5.Be2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 Be2")
+ ("B34e" "Sicilian: Accelerated Fianchetto, 5.Be3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 Be3")
+ ("B34f" "Sicilian: Accelerated Fianchetto, Modern Variation" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nc3")
+ ("B34g" "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Nf6")
+ ("B34h" "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6 6.Nxc6" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 Nc3 Nf6 Nxc6")
+ ("B34i" "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6 6.Nxc6 bxc6" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Nf6 Nxc6 bxc6")
+ ("B34j" "Sicilian: Accelerated Fianchetto, Modern, 5...Bg7" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Bg7")
+ ("B34k" "Sicilian: Accelerated Fianchetto, Modern, 6.Nde2" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Bg7 Nde2")
+ ("B34l" "Sicilian: Accelerated Fianchetto, Modern, 6.Nb3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Bg7 Nb3")
+ ("B34m" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Bg7 Be3")
+ ("B34n" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 d6" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 d6")
+ ("B34o" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 d6 7.Qd2" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 d6 Qd2")
+ ("B34p" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6")
+ ("B34q" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.f3" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 f3")
+ ("B34r" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Nxc6")
+ ("B34r" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6 bxc6" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Nxc6 bxc6")
+ ("B34r" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6 bxc6 
8.e5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Nxc6 bxc6 e5")
+ ("B34s" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6 bxc6 8.e5 
Ng8" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Nxc6 bxc6 e5 Ng8")
+ ("B34t" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Be2")
+ ("B34u" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Be2 O-O")
+ ("B34v" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O 8.O-O" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Be2 O-O O-O")
+ ("B34v" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O 8.O-O 
d5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Be2 O-O O-O d5")
+ ("B34w" "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O 8.O-O 
d5 9.exd5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Be2 O-O O-O d5 exd5")
+ ("B35a" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4")
+ ("B35b" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 Qa5")
+ ("B35c" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 Qa5 O-O O-O")
+ ("B35d" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O 9.Bb3" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 Qa5 O-O O-O Bb3")
+ ("B35e" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O 9.Bb3 
d6 10.h3 Bd7 11.f4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 Qa5 O-O 
O-O Bb3 d6 h3 Bd7 f4")
+ ("B35f" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O")
+ ("B35g" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.f3" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O f3")
+ ("B35h" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.O-O" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O O-O")
+ ("B35i" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3")
+ ("B35j" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 Ng4" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 Ng4")
+ ("B35k" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 Qa5" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 Qa5")
+ ("B35l" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 a5")
+ ("B35m" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5 9.a4" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 a5 a4")
+ ("B35n" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5 9.f3" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 a5 f3")
+ ("B35o" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6")
+ ("B35o" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.h3" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6 h3")
+ ("B35p" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.h3 
Bd7" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6 h3 Bd7")
+ ("B35q" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.f3" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6 f3")
+ ("B35r" "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.f3 
Bd7" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 Nc3 Bg7 Be3 Nf6 Bc4 O-O Bb3 d6 f3 Bd7")
+ ("B36a" "Sicilian: Maroczy Bind" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4")
+ ("B36b" "Sicilian: Maroczy Bind, 5...d6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
d6")
+ ("B36b" "Sicilian: Maroczy Bind, 5...d6 6.Nc3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 
c4 d6 Nc3")
+ ("B36b" "Sicilian: Maroczy Bind, 5...d6 6.Nc3 Bg7" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 d6 Nc3 Bg7")
+ ("B36c" "Sicilian: Maroczy Bind, 5...Nf6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Nf6")
+ ("B36d" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Nf6 Nc3")
+ ("B36e" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 Nxd4" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Nf6 Nc3 Nxd4")
+ ("B36f" "Sicilian: Maroczy Bind, Gurgenidze Variation" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Nf6 Nc3 Nxd4 Qxd4 d6")
+ ("B36g" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Nf6 Nc3 d6")
+ ("B36h" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2")
+ ("B36i" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4")
+ ("B36i" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7")
+ ("B36j" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 
9.O-O" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 O-O")
+ ("B36k" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 
9.Bg5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Bg5")
+ ("B36l" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Bg5 
O-O" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Bg5 O-O")
+ ("B36m" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Bg5 
O-O 10.Qd2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Bg5 
O-O Qd2")
+ ("B36n" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 
9.Be3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Be3")
+ ("B36n" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 
O-O" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Be3 O-O")
+ ("B36o" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 
O-O 10.Qd2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 Be3 
O-O Qd2")
+ ("B36p" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 
O-O 10.Qd2 Be6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 Qxd4 Bg7 
Be3 O-O Qd2 Be6")
+ ("B36q" "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 
O-O 10.Qd2 Be6 11.O-O" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Nf6 Nc3 d6 Be2 Nxd4 
Qxd4 Bg7 Be3 O-O Qd2 Be6 O-O")
+ ("B37a" "Sicilian: Maroczy Bind, 5...Bg7" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7")
+ ("B37b" "Sicilian: Maroczy Bind, 6.Nb3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 
Nb3")
+ ("B37c" "Sicilian: Maroczy Bind, 6.Nc2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 
Nc2")
+ ("B37d" "Sicilian: Maroczy Bind, 6.Nc2 d6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Nc2 d6")
+ ("B37e" "Sicilian: Maroczy Bind, 6.Nc2 d6 7.Be2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Bg7 Nc2 d6 Be2")
+ ("B37f" "Sicilian: Maroczy Bind, Simagin Variation" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Nc2 d6 Be2 Nh6")
+ ("B37g" "Sicilian: Maroczy Bind, 6.Nc2 Nf6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Nc2 Nf6")
+ ("B37g" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Bg7 Nc2 Nf6 Nc3")
+ ("B37h" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 O-O" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 O-O")
+ ("B37i" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6")
+ ("B37i" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2")
+ ("B37j" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 Nd7" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 Nd7")
+ ("B37k" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O")
+ ("B37l" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O")
+ ("B37m" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Be6" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O Be6")
+ ("B37n" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O Nd7")
+ ("B37o" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 
10.Bd2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O Nd7 
Bd2")
+ ("B37o" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 
10.Bd2 a5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O Nd7 
Bd2 a5")
+ ("B37p" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 
10.Bd2 Nc5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O O-O 
Nd7 Bd2 Nc5")
+ ("B37q" "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 
10.Bd2 Nc5 11.b4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Nc2 Nf6 Nc3 d6 Be2 O-O 
O-O Nd7 Bd2 Nc5 b4")
+ ("B38a" "Sicilian: Maroczy Bind, 6.Be3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 
Be3")
+ ("B38b" "Sicilian: Maroczy Bind, 6.Be3 Nh6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Be3 Nh6")
+ ("B38c" "Sicilian: Maroczy Bind, 6.Be3 d6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Be3 d6")
+ ("B38c" "Sicilian: Maroczy Bind, 6.Be3 d6 7.Nc3 Nh6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 d6 Nc3 Nh6")
+ ("B38d" "Sicilian: Maroczy Bind, 6.Be3 Nf6" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Be3 Nf6")
+ ("B38d" "Sicilian: Maroczy Bind, 6.Be3 Nf6 7.Nc3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Bg7 Be3 Nf6 Nc3")
+ ("B38e" "Sicilian: Maroczy Bind, 6.Be3 Nf6 7.Nc3 d6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 d6")
+ ("B38f" "Sicilian: Maroczy Bind, 6.Be3 Nf6 7.Nc3 d6 8.Be2" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 d6 Be2")
+ ("B38g" "Sicilian: Maroczy Bind, 7.Nc3 O-O" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 
Bg7 Be3 Nf6 Nc3 O-O")
+ ("B38g" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2")
+ ("B38h" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 b6")
+ ("B38i" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 b6 O-O")
+ ("B38i" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O Bb7" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 b6 O-O Bb7")
+ ("B38j" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O Bb7 10.f3" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 b6 O-O Bb7 f3")
+ ("B38k" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O Bb7 10.f3 Qb8" "e4 
c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 b6 O-O Bb7 f3 Qb8")
+ ("B38l" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6")
+ ("B38m" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.f3" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 f3")
+ ("B38n" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O")
+ ("B38o" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Nd7" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Nd7")
+ ("B38p" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O a6" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O a6")
+ ("B38q" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Nxd4" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Nxd4")
+ ("B38r" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7")
+ ("B38s" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Nc2" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 Nc2")
+ ("B38t" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.f3" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 f3")
+ ("B38u" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Rc1" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 Rc1")
+ ("B38v" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 Qd2")
+ ("B38w" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 Qd2 Nxd4")
+ ("B38w" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4 
11.Bxd4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 
Qd2 Nxd4 Bxd4")
+ ("B38x" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 
12.f3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 Qd2 
Nxd4 Bxd4 Bc6 f3")
+ ("B38y" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 
12.f3 a5" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 O-O Bd7 
Qd2 Nxd4 Bxd4 Bc6 f3 a5")
+ ("B38z" "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 
12.f3 a5 13.b3" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 O-O Be2 d6 
O-O Bd7 Qd2 Nxd4 Bxd4 Bc6 f3 a5 b3")
+ ("B39a" "Sicilian: Maroczy Bind, Breyer Variation" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4")
+ ("B39b" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 
g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4")
+ ("B39c" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4" "e4 c5 Nf3 Nc6 d4 cxd4 
Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4")
+ ("B39d" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1" "e4 c5 Nf3 Nc6 d4 
cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1")
+ ("B39e" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5" "e4 c5 Nf3 Nc6 
d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 e5")
+ ("B39f" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5 10.Nb5" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 e5 Nb5")
+ ("B39g" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5 10.Bd3" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 e5 Bd3")
+ ("B39h" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6" "e4 c5 Nf3 
Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 Ne6")
+ ("B39i" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Qd2" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 Ne6 Qd2")
+ ("B39j" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1" "e4 c5 
Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 Ne6 Rc1")
+ ("B39k" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1 Qa5" 
"e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 Ne6 Rc1 
Qa5")
+ ("B39l" "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1 Qa5 
11.Qd2" "e4 c5 Nf3 Nc6 d4 cxd4 Nxd4 g6 c4 Bg7 Be3 Nf6 Nc3 Ng4 Qxg4 Nxd4 Qd1 Ne6 
Rc1 Qa5 Qd2")
+ ("B40a" "Sicilian: 2...e6" "e4 c5 Nf3 e6")
+ ("B40b" "Sicilian: 2...e6 3.c4" "e4 c5 Nf3 e6 c4")
+ ("B40c" "Sicilian: 2...e6 3.b3" "e4 c5 Nf3 e6 b3")
+ ("B40d" "Sicilian: 2...e6 3.b3 Nc6" "e4 c5 Nf3 e6 b3 Nc6")
+ ("B40e" "Sicilian: 2...e6 3.g3" "e4 c5 Nf3 e6 g3")
+ ("B40f" "Sicilian: 2...e6 3.d3" "e4 c5 Nf3 e6 d3")
+ ("B40g" "Sicilian: 2...e6 3.Nc3" "e4 c5 Nf3 e6 Nc3")
+ ("B40h" "Sicilian: 2...e6 3.Nc3 Nc6" "e4 c5 Nf3 e6 Nc3 Nc6")
+ ("B40i" "Sicilian: 2...e6 3.d4" "e4 c5 Nf3 e6 d4")
+ ("B40j" "Sicilian: Marshall Variation" "e4 c5 Nf3 e6 d4 d5")
+ ("B40k" "Sicilian: Open, 2...e6" "e4 c5 Nf3 e6 d4 cxd4")
+ ("B40l" "Sicilian: Open, 2...e6, 4.Nxd4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4")
+ ("B40l" "Sicilian: Open, 2...e6, 4.Nxd4 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 d6")
+ ("B40m" "Sicilian: Open, 2...e6, 4.Nxd4 Bc5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Bc5")
+ ("B40n" "Sicilian: Kveinys Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Qb6")
+ ("B40o" "Sicilian: Open, 2...e6, 4.Nxd4 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6")
+ ("B40p" "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nf6 Bd3")
+ ("B40p" "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Bd3 Nc6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nf6 Bd3 Nc6")
+ ("B40q" "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Bd3 Nc6 6.Nxc6" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nf6 Bd3 Nc6 Nxc6")
+ ("B40r" "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Nc3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nf6 Nc3")
+ ("B40s" "Sicilian: Pin Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6 Nc3 Bb4")
+ ("B40t" "Sicilian: Pin, Jaffe Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6 Nc3 
Bb4 Bd3 e5")
+ ("B40u" "Sicilian: Pin, Koch Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nf6 Nc3 
Bb4 e5")
+ ("B41a" "Sicilian: Kan (Paulsen)" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6")
+ ("B41b" "Sicilian: Kan, 5.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 g3")
+ ("B41c" "Sicilian: Kan, 5.Be3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Be3")
+ ("B41d" "Sicilian: Kan, 5.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Be2")
+ ("B41e" "Sicilian: Kan, 5.Be2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Be2 Nf6")
+ ("B41f" "Sicilian: Kan, 5.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4")
+ ("B41g" "Sicilian: Kan, 5.c4 Qc7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 Qc7")
+ ("B41h" "Sicilian: Kan, 5.c4 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 Nf6")
+ ("B41i" "Sicilian: Kan, 5.c4 Nf6 6.Nc3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 Nf6 
Nc3")
+ ("B41j" "Sicilian: Kan, 5.c4 Nf6 6.Nc3 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 
Nf6 Nc3 d6")
+ ("B41k" "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Bb4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 
Nf6 Nc3 Bb4")
+ ("B41k" "Sicilian: Kan, 5.c4 Nf6, Bronstein Variation" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 a6 c4 Nf6 Nc3 Bb4 Bd3 Nc6 Bc2")
+ ("B41l" "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Qc7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 c4 
Nf6 Nc3 Qc7")
+ ("B41m" "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Qc7 7.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 c4 Nf6 Nc3 Qc7 Be2")
+ ("B42a" "Sicilian: Kan, 5.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3")
+ ("B42b" "Sicilian: Kan, Swiss Cheese Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Bd3 g6")
+ ("B42c" "Sicilian: Kan, 5.Bd3 Qb6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 Qb6")
+ ("B42d" "Sicilian: Kan, 5.Bd3 Qc7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 Qc7")
+ ("B42e" "Sicilian: Kan, 5.Bd3 Nc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 Nc6")
+ ("B42f" "Sicilian: Kan, Polugaevsky Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Bd3 Bc5")
+ ("B42g" "Sicilian: Kan, Polugaevsky, 6.Nb3 Ba7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Bd3 Bc5 Nb3 Ba7")
+ ("B42h" "Sicilian: Kan, 5.Bd3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 Nf6")
+ ("B42h" "Sicilian: Kan, 5.Bd3 Nf6 6.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 Nf6 
c4")
+ ("B42h" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 
Nf6 O-O")
+ ("B42i" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 
Nf6 O-O d6")
+ ("B42j" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O d6 7.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Bd3 Nf6 O-O d6 c4")
+ ("B42k" "Sicilian: Kan, Gipslis Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Bd3 
Nf6 O-O d6 c4 g6")
+ ("B42l" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Bd3 Nf6 O-O Qc7")
+ ("B42m" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Bd3 Nf6 O-O Qc7 c4")
+ ("B42n" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.Qe2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Bd3 Nf6 O-O Qc7 Qe2")
+ ("B42n" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.Qe2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Bd3 Nf6 O-O Qc7 Qe2 d6")
+ ("B42o" "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.Qe2 d6 8.c4" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 a6 Bd3 Nf6 O-O Qc7 Qe2 d6 c4")
+ ("B43a" "Sicilian: Kan, 5.Nc3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3")
+ ("B43b" "Sicilian: Kan, 5.Nc3 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 d6")
+ ("B43c" "Sicilian: Kan, 5.Nc3 b5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 b5")
+ ("B43d" "Sicilian: Kan, 5.Nc3 b5 6.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 b5 
Bd3")
+ ("B43e" "Sicilian: Kan, 5.Nc3 b5 6.Bd3 Qb6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 
b5 Bd3 Qb6")
+ ("B43f" "Sicilian: Kan, 5.Nc3 b5 6.Bd3 Qb6 7.Nb3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Nc3 b5 Bd3 Qb6 Nb3")
+ ("B43g" "Sicilian: Kan, 5.Nc3 Qc7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 Qc7")
+ ("B43h" "Sicilian: Kan, 5.Nc3 Qc7 6.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 Qc7 
g3")
+ ("B43i" "Sicilian: Kan, 5.Nc3 Qc7 6.g3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 
Qc7 g3 Nf6")
+ ("B43j" "Sicilian: Kan, 5.Nc3 Qc7 6.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 
Qc7 Be2")
+ ("B43k" "Sicilian: Kan, 5.Nc3 Qc7 6.Be2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Nc3 Qc7 Be2 Nf6")
+ ("B43l" "Sicilian: Kan, 5.Nc3 Qc7 6.Be2 Nf6 7.O-O" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Nc3 Qc7 Be2 Nf6 O-O")
+ ("B43m" "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 Nc3 
Qc7 Bd3")
+ ("B43n" "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 a6 
Nc3 Qc7 Bd3 Nf6")
+ ("B43o" "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3 Nf6 7.O-O" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
a6 Nc3 Qc7 Bd3 Nf6 O-O")
+ ("B44a" "Sicilian: Taimanov" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6")
+ ("B44b" "Sicilian: Taimanov, 5.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 g3")
+ ("B44c" "Sicilian: Taimanov, 5.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Be2")
+ ("B44d" "Sicilian: Taimanov, 5.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 c4")
+ ("B44d" "Sicilian: Taimanov, 5.c4 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 c4 Nf6")
+ ("B44e" "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
c4 Nf6 Nc3")
+ ("B44e" "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3 Bb4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 c4 Nf6 Nc3 Bb4")
+ ("B44e" "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3 Bb4 7.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 c4 Nf6 Nc3 Bb4 Nxc6")
+ ("B44f" "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3 Bb4 7.Nxc6 bxc6" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 c4 Nf6 Nc3 Bb4 Nxc6 bxc6")
+ ("B44g" "Sicilian: Taimanov, 5.Be3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Be3")
+ ("B44h" "Sicilian: Taimanov, 5.Be3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Be3 
Nf6")
+ ("B44i" "Sicilian: Taimanov, 5.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nxc6")
+ ("B44j" "Sicilian: Taimanov, 5.Nxc6 bxc6 6.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nxc6 bxc6 Bd3")
+ ("B44k" "Sicilian, Taimanov, Szen Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nb5")
+ ("B44k" "Sicilian, Taimanov, Szen, 5...d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nb5 
d6")
+ ("B44l" "Sicilian, Taimanov, Szen, 6.Bf4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nb5 
d6 Bf4")
+ ("B44m" "Sicilian, Taimanov, Szen, 6.Bf4 e5 7.Be3 a6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 Bf4 e5 Be3 a6")
+ ("B44n" "Sicilian, Taimanov, Szen, 6.Bf4 e5 7.Be3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 Bf4 e5 Be3 Nf6")
+ ("B44o" "Sicilian, Taimanov, Szen, 6.c4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nb5 
d6 c4")
+ ("B44o" "Sicilian, Taimanov, Szen, 6.c4 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nb5 d6 c4 a6")
+ ("B44o" "Sicilian, Taimanov, Szen, 6.c4 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nb5 d6 c4 Nf6")
+ ("B44p" "Sicilian, Taimanov, Szen, 7.N5c3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nb5 
d6 c4 Nf6 N5c3")
+ ("B44q" "Sicilian, Taimanov, Szen, 7.N1c3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nb5 
d6 c4 Nf6 N1c3")
+ ("B44q" "Sicilian, Taimanov, Szen, 7.N1c3 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nb5 d6 c4 Nf6 N1c3 a6")
+ ("B44r" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3")
+ ("B44r" "Sicilian: Taimanov, Szen, Kasparov Gambit" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 d5")
+ ("B44s" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 b6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 b6")
+ ("B44t" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7")
+ ("B44u" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7 9.Be2" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2")
+ ("B44u" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7 9.Be2 b6" "e4 c5 Nf3 
e6 d4 cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 b6")
+ ("B44v" "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7 9.Be2 O-O" "e4 c5 Nf3 
e6 d4 cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O")
+ ("B44w" "Sicilian: Taimanov, Szen, Hedgehog Variation" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6")
+ ("B44x" "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6 Be3")
+ ("B44x" "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Bd7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6 Be3 Bd7")
+ ("B44x" "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Ne5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6 Be3 Ne5")
+ ("B44y" "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Bb7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6 Be3 Bb7")
+ ("B44z" "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Bb7 12.Qb3" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nb5 d6 c4 Nf6 N1c3 a6 Na3 Be7 Be2 O-O O-O b6 Be3 Bb7 Qb3")
+ ("B45a" "Sicilian: Taimanov, 5.Nc3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3")
+ ("B45b" "Sicilian: Taimanov, 5.Nc3 Bb4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
Bb4")
+ ("B45c" "Sicilian: Taimanov, 5.Nc3 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 d6")
+ ("B45c" "Sicilian: Taimanov, 5.Nc3 d6 6.g4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 d6 g4")
+ ("B45d" "Sicilian: Taimanov, Four Knights" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
Nf6")
+ ("B45e" "Sicilian: Taimanov, Four Knights, 6.Bg5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 Bg5")
+ ("B45f" "Sicilian: Taimanov, Four Knights, 6.a3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 a3")
+ ("B45g" "Sicilian: Taimanov, Four Knights, 6.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 g3")
+ ("B45h" "Sicilian: Taimanov, Four Knights, 6.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 Be2")
+ ("B45i" "Sicilian: Taimanov, Four Knights, 6.Be3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 Be3")
+ ("B45i" "Sicilian: Taimanov, Four Knights, 6.Be3 Bb4" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Nf6 Be3 Bb4")
+ ("B45j" "Sicilian: Taimanov, Four Knights, 6.Be3 Bb4 7.Bd3" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Nf6 Be3 Bb4 Bd3")
+ ("B45k" "Sicilian: Taimanov, Four Knights, 6.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 Nxc6")
+ ("B45l" "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Nf6 Nxc6 bxc6 e5")
+ ("B45l" "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5" "e4 c5 Nf3 
e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Nxc6 bxc6 e5 Nd5")
+ ("B45m" "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5 8.Ne4" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Nxc6 bxc6 e5 Nd5 Ne4")
+ ("B45n" "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5 8.Ne4 Qc7" 
"e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Nxc6 bxc6 e5 Nd5 Ne4 Qc7")
+ ("B45o" "Sicilian: Taimanov, Four Knights, 6.Ndb5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Nf6 Ndb5")
+ ("B45o" "Sicilian: Taimanov, Four Knights, 6.Ndb5 d6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Nf6 Ndb5 d6")
+ ("B45o" "Sicilian: Taimanov, Four Knights, 6.Ndb5 d6 7.Bf4" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 d6 Bf4")
+ ("B45p" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4")
+ ("B45q" "Sicilian: Taimanov, Four Knights, American Attack" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 Nd6+")
+ ("B45r" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3")
+ ("B45s" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3 Bxc3+ 8.Nxc3 d5" 
"e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3 Bxc3+ Nxc3 d5")
+ ("B45t" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 9.ed5 ed5" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3 Bxc3+ Nxc3 d5 exd5 exd5")
+ ("B45u" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 9.ed5 ed5 10.Bd3 
O-O" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3 Bxc3+ Nxc3 d5 exd5 exd5 
Bd3 O-O")
+ ("B45v" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 10.Bd3 O-O 11.O-O 
d4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3 Bxc3+ Nxc3 d5 exd5 exd5 
Bd3 O-O O-O d4")
+ ("B45w" "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 10.Bd3 O-O 11.O-O 
d4 12.Ne2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Nf6 Ndb5 Bb4 a3 Bxc3+ Nxc3 d5 
exd5 exd5 Bd3 O-O O-O d4 Ne2")
+ ("B46a" "Sicilian: Taimanov, 5...a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 a6")
+ ("B46b" "Sicilian: Taimanov, 5...a6 6.f4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
a6 f4")
+ ("B46c" "Sicilian: Taimanov, 5...a6 6.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 Nxc6")
+ ("B46d" "Sicilian: Taimanov, 5...a6 6.Nxc6 bxc6 7.Bd3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 a6 Nxc6 bxc6 Bd3")
+ ("B46e" "Sicilian: Taimanov, 5...a6 6.Nxc6 bxc6 7.Bd3 d5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 a6 Nxc6 bxc6 Bd3 d5")
+ ("B46f" "Sicilian: Taimanov, 5...a6 6.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
a6 g3")
+ ("B46g" "Sicilian: Taimanov, 5...a6 6.g3 Nge7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 g3 Nge7")
+ ("B46h" "Sicilian: Taimanov, 5...a6 6.g3 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 g3 d6")
+ ("B46i" "Sicilian: Taimanov, 5...a6 6.Be3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
a6 Be3")
+ ("B46j" "Sicilian: Taimanov, 5...a6 6.Be3 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 Be3 d6")
+ ("B46k" "Sicilian: Taimanov, 5...a6 6.Be3 Nge7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 a6 Be3 Nge7")
+ ("B46l" "Sicilian: Taimanov, 5...a6 6.Be3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 Be3 Nf6")
+ ("B46m" "Sicilian: Taimanov, 5...a6 6.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
a6 Be2")
+ ("B46n" "Sicilian: Taimanov, 5...a6 6.Be2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 Be2 Nf6")
+ ("B46o" "Sicilian: Taimanov, 5...a6 6.Be2 Nge7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 a6 Be2 Nge7")
+ ("B46p" "Sicilian: Taimanov, 5...a6 6.Be2 Nge7 7.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 a6 Be2 Nge7 O-O")
+ ("B46q" "Sicilian: Taimanov, 5...a6 6.Be2 Nge7 7.Be3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 a6 Be2 Nge7 Be3")
+ ("B46r" "Sicilian: Taimanov, 5...a6 6.Be2 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 a6 Be2 d6")
+ ("B47a" "Sicilian: Taimanov, Bastrikov Variation" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7")
+ ("B47b" "Sicilian: Taimanov, 6.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Nxc6")
+ ("B47c" "Sicilian: Taimanov, 6.Ndb5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Ndb5")
+ ("B47d" "Sicilian: Taimanov, 6.f4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 f4")
+ ("B47e" "Sicilian: Taimanov, 6.f4 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
f4 a6")
+ ("B47f" "Sicilian: Taimanov, 6.f4 a6 7.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 f4 a6 Nxc6")
+ ("B47g" "Sicilian: Taimanov, 6.g3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 g3")
+ ("B47h" "Sicilian: Taimanov, 6.g3 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
g3 a6")
+ ("B47h" "Sicilian: Taimanov, 6.g3 a6 7.Bg2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 g3 a6 Bg2")
+ ("B47i" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 g3 a6 Bg2 d6")
+ ("B47i" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6 8.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 d6 O-O")
+ ("B47j" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6 8.O-O Bd7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 d6 O-O Bd7")
+ ("B47k" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6 8.O-O Bd7 9.Re1" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 d6 O-O Bd7 Re1")
+ ("B47l" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 g3 a6 Bg2 Nf6")
+ ("B47m" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 Nf6 O-O")
+ ("B47n" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Bc5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 Nf6 O-O Bc5")
+ ("B47o" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Be7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 Nf6 O-O Be7")
+ ("B47p" "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Be7 9.Re1" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nc3 Qc7 g3 a6 Bg2 Nf6 O-O Be7 Re1")
+ ("B47q" "Sicilian: Taimanov, 6.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Be2")
+ ("B47q" "Sicilian: Taimanov, 6.Be2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
Qc7 Be2 Nf6")
+ ("B47r" "Sicilian: Taimanov, 6.Be2 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Be2 a6")
+ ("B47s" "Sicilian: Taimanov, 6.Be2 a6 7.f4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be2 a6 f4")
+ ("B47t" "Sicilian: Taimanov, 6.Be2 a6 7.O-O" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be2 a6 O-O")
+ ("B47u" "Sicilian: Taimanov, 6.Be2 a6 7.O-O b5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be2 a6 O-O b5")
+ ("B47v" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be2 a6 O-O Nf6")
+ ("B47v" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.a3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 a3")
+ ("B47w" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1")
+ ("B47x" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Be7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1 Be7")
+ ("B47y" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1 Nxd4")
+ ("B47y" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4, 10.Qd3" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1 Nxd4 Qxd4 Bc5 Qd3")
+ ("B47y" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4, 10.Qd3 b5" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1 Nxd4 Qxd4 Bc5 Qd3 b5")
+ ("B47z" "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4, 10.Qd3 b5 11.f4" 
"e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be2 a6 O-O Nf6 Kh1 Nxd4 Qxd4 Bc5 Qd3 b5 
f4")
+ ("B48a" "Sicilian: Taimanov, 6.Be3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Be3")
+ ("B48b" "Sicilian: Taimanov, 6.Be3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 
Qc7 Be3 Nf6")
+ ("B48c" "Sicilian: Taimanov, 6.Be3 a6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 
Be3 a6")
+ ("B48d" "Sicilian: Taimanov, 6.Be3 a6 7.a3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 a3")
+ ("B48e" "Sicilian: Taimanov, 6.Be3 a6 7.f4" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 f4")
+ ("B48f" "Sicilian: Taimanov, 6.Be3 a6 7.f4 b5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 f4 b5")
+ ("B48g" "Sicilian: Taimanov, 6.Be3 a6 7.Qd2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 Qd2")
+ ("B48h" "Sicilian: Taimanov, 6.Be3 a6 7.Qd2 Nf6 8.f3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Qd2 Nf6 f3")
+ ("B48i" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 Bd3")
+ ("B48j" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be3 a6 Bd3 b5")
+ ("B48k" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5 8.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 b5 Nxc6")
+ ("B48l" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5 8.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 b5 O-O")
+ ("B48m" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6")
+ ("B48n" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O")
+ ("B48o" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Nxd4" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Nxd4")
+ ("B48p" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O h5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O h5")
+ ("B48q" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O b5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O b5")
+ ("B48r" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Bd6" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Bd6")
+ ("B48s" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Ne5")
+ ("B48t" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Ne5 h3")
+ ("B48u" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3 Bc5" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Ne5 h3 Bc5")
+ ("B48v" "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3 Bc5 10.Kh1" 
"e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Bd3 Nf6 O-O Ne5 h3 Bc5 Kh1")
+ ("B49a" "Sicilian: Taimanov, 6.Be3 a6 7.Be2" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 
Nc3 Qc7 Be3 a6 Be2")
+ ("B49a" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nge7" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be3 a6 Be2 Nge7")
+ ("B49b" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 b5" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be3 a6 Be2 b5")
+ ("B49b" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 b5 8.Nxc6" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 b5 Nxc6")
+ ("B49c" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 
Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6")
+ ("B49d" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 a3")
+ ("B49d" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3 b5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 a3 b5")
+ ("B49e" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3 Be7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 a3 Be7")
+ ("B49e" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3 Be7 9.O-O" "e4 c5 Nf3 e6 
d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 a3 Be7 O-O")
+ ("B49f" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O" "e4 c5 Nf3 e6 d4 cxd4 
Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O")
+ ("B49f" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O b5" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O b5")
+ ("B49g" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Be7" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Be7")
+ ("B49h" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4" "e4 c5 Nf3 e6 d4 
cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4")
+ ("B49i" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Nxc6" "e4 c5 Nf3 
e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Nxc6")
+ ("B49j" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4" "e4 c5 Nf3 
e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4")
+ ("B49k" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 O-O" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4 O-O")
+ ("B49l" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7" "e4 c5 
Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4 Be7")
+ ("B49m" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7 10.Nxc6" 
"e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4 Be7 Nxc6")
+ ("B49m" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7 10.Nxc6 
bxc6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4 Be7 
Nxc6 bxc6")
+ ("B49n" "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7 10.Nxc6 
bxc6 11.Nb6" "e4 c5 Nf3 e6 d4 cxd4 Nxd4 Nc6 Nc3 Qc7 Be3 a6 Be2 Nf6 O-O Bb4 Na4 
Be7 Nxc6 bxc6 Nb6")
+ ("B50a" "Sicilian: 2.Nf3 d6" "e4 c5 Nf3 d6")
+ ("B50b" "Sicilian: Wing Gambit deferred" "e4 c5 Nf3 d6 b4")
+ ("B50c" "Sicilian: 2.Nf3 d6 3.b3" "e4 c5 Nf3 d6 b3")
+ ("B50d" "Sicilian: 2.Nf3 d6 3.b3 e6" "e4 c5 Nf3 d6 b3 e6")
+ ("B50e" "Sicilian: 2.Nf3 d6 3.d3" "e4 c5 Nf3 d6 d3")
+ ("B50f" "Sicilian: 2.Nf3 d6 3.g3" "e4 c5 Nf3 d6 g3")
+ ("B50g" "Sicilian: 2.Nf3 d6 3.Bc4" "e4 c5 Nf3 d6 Bc4")
+ ("B50h" "Sicilian: 2.Nf3 d6 3.Bc4 Nf6 4.d3" "e4 c5 Nf3 d6 Bc4 Nf6 d3")
+ ("B50i" "Sicilian: 2.Nf3 d6 3.Nc3" "e4 c5 Nf3 d6 Nc3")
+ ("B50j" "Sicilian: 2.Nf3 d6 3.Nc3 e6" "e4 c5 Nf3 d6 Nc3 e6")
+ ("B50k" "Sicilian: 2.Nf3 d6 3.Nc3 Nf6" "e4 c5 Nf3 d6 Nc3 Nf6")
+ ("B50l" "Sicilian: 2.Nf3 d6 3.c3" "e4 c5 Nf3 d6 c3")
+ ("B50m" "Sicilian: 2.Nf3 d6 3.c3 Nf6" "e4 c5 Nf3 d6 c3 Nf6")
+ ("B50n" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.h3" "e4 c5 Nf3 d6 c3 Nf6 h3")
+ ("B50o" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.h3 Nc6" "e4 c5 Nf3 d6 c3 Nf6 h3 Nc6")
+ ("B50p" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bc4" "e4 c5 Nf3 d6 c3 Nf6 Bc4")
+ ("B50q" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bd3" "e4 c5 Nf3 d6 c3 Nf6 Bd3")
+ ("B50r" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bd3 Nc6" "e4 c5 Nf3 d6 c3 Nf6 Bd3 Nc6")
+ ("B50s" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2" "e4 c5 Nf3 d6 c3 Nf6 Be2")
+ ("B50t" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 Nc6" "e4 c5 Nf3 d6 c3 Nf6 Be2 Nc6")
+ ("B50u" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 Nbd7" "e4 c5 Nf3 d6 c3 Nf6 Be2 
Nbd7")
+ ("B50v" "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 g6" "e4 c5 Nf3 d6 c3 Nf6 Be2 g6")
+ ("B50w" "Sicilian: 2.Nf3 d6 3.c3, Torre Variation" "e4 c5 Nf3 d6 c3 Nf6 Be2 
g6 O-O Bg7 Bb5+")
+ ("B51a" "Sicilian: 3.Bb5+" "e4 c5 Nf3 d6 Bb5+")
+ ("B51a" "Sicilian: 3.Bb5+ Nd7" "e4 c5 Nf3 d6 Bb5+ Nd7")
+ ("B51b" "Sicilian: 3.Bb5+ Nd7 4.c3" "e4 c5 Nf3 d6 Bb5+ Nd7 c3")
+ ("B51c" "Sicilian: 3.Bb5+ Nd7 4.O-O" "e4 c5 Nf3 d6 Bb5+ Nd7 O-O")
+ ("B51d" "Sicilian: 3.Bb5+ Nd7 4.O-O Nf6" "e4 c5 Nf3 d6 Bb5+ Nd7 O-O Nf6")
+ ("B51e" "Sicilian: 3.Bb5+ Nd7 4.O-O Nf6 5.Re1 a6 6.Bf1" "e4 c5 Nf3 d6 Bb5+ 
Nd7 O-O Nf6 Re1 a6 Bf1")
+ ("B51f" "Sicilian: 3.Bb5+ Nd7 4.d4" "e4 c5 Nf3 d6 Bb5+ Nd7 d4")
+ ("B51f" "Sicilian: 3.Bb5+ Nd7 4.d4 cxd4" "e4 c5 Nf3 d6 Bb5+ Nd7 d4 cxd4")
+ ("B51g" "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6" "e4 c5 Nf3 d6 Bb5+ Nd7 d4 Nf6")
+ ("B51h" "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3" "e4 c5 Nf3 d6 Bb5+ Nd7 d4 Nf6 
Nc3")
+ ("B51i" "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3 cxd4" "e4 c5 Nf3 d6 Bb5+ Nd7 d4 
Nf6 Nc3 cxd4")
+ ("B51i" "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3 cxd4 6.Qxd4" "e4 c5 Nf3 d6 Bb5+ 
Nd7 d4 Nf6 Nc3 cxd4 Qxd4")
+ ("B51j" "Sicilian: 3.Bb5+ Nc6" "e4 c5 Nf3 d6 Bb5+ Nc6")
+ ("B51k" "Sicilian: 3.Bb5+ Nc6 4.Bxc6+" "e4 c5 Nf3 d6 Bb5+ Nc6 Bxc6+")
+ ("B51l" "Sicilian: 3.Bb5+ Nc6 4.O-O" "e4 c5 Nf3 d6 Bb5+ Nc6 O-O")
+ ("B51m" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7" "e4 c5 Nf3 d6 Bb5+ Nc6 O-O Bd7")
+ ("B51n" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1" "e4 c5 Nf3 d6 Bb5+ Nc6 O-O Bd7 
Re1")
+ ("B51o" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 a6" "e4 c5 Nf3 d6 Bb5+ Nc6 O-O 
Bd7 Re1 a6")
+ ("B51p" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6" "e4 c5 Nf3 d6 Bb5+ Nc6 O-O 
Bd7 Re1 Nf6")
+ ("B51q" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3" "e4 c5 Nf3 d6 Bb5+ 
Nc6 O-O Bd7 Re1 Nf6 c3")
+ ("B51r" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Ba4" "e4 c5 Nf3 
d6 Bb5+ Nc6 O-O Bd7 Re1 Nf6 c3 a6 Ba4")
+ ("B51s" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Bf1" "e4 c5 Nf3 
d6 Bb5+ Nc6 O-O Bd7 Re1 Nf6 c3 a6 Bf1")
+ ("B51t" "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Bf1 Bg4 8.h3" "e4 
c5 Nf3 d6 Bb5+ Nc6 O-O Bd7 Re1 Nf6 c3 a6 Bf1 Bg4 h3")
+ ("B52a" "Sicilian: 3.Bb5+ Bd7" "e4 c5 Nf3 d6 Bb5+ Bd7")
+ ("B52b" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7" "e4 c5 Nf3 d6 Bb5+ Bd7 Bxd7+ 
Nxd7")
+ ("B52c" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Nxd7 O-O")
+ ("B52d" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O Ngf6" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Nxd7 O-O Ngf6")
+ ("B52e" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O Ngf6 6.Qe2" "e4 c5 Nf3 d6 
Bb5+ Bd7 Bxd7+ Nxd7 O-O Ngf6 Qe2")
+ ("B52f" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7" "e4 c5 Nf3 d6 Bb5+ Bd7 Bxd7+ 
Qxd7")
+ ("B52g" "Sicilian: 3.Bb5+, Sokolsky Variation" "e4 c5 Nf3 d6 Bb5+ Bd7 Bxd7+ 
Qxd7 c4")
+ ("B52h" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6" "e4 c5 Nf3 d6 Bb5+ Bd7 Bxd7+ 
Qxd7 c4 Nc6")
+ ("B52i" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.O-O" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Qxd7 c4 Nc6 O-O")
+ ("B52j" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.O-O Nf6" "e4 c5 Nf3 d6 Bb5+ 
Bd7 Bxd7+ Qxd7 c4 Nc6 O-O Nf6")
+ ("B52k" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Qxd7 c4 Nc6 Nc3")
+ ("B52l" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3 Nf6" "e4 c5 Nf3 d6 Bb5+ 
Bd7 Bxd7+ Qxd7 c4 Nc6 Nc3 Nf6")
+ ("B52m" "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3 Nf6 7.O-O" "e4 c5 Nf3 d6 
Bb5+ Bd7 Bxd7+ Qxd7 c4 Nc6 Nc3 Nf6 O-O")
+ ("B52n" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Qxd7 O-O")
+ ("B52o" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6" "e4 c5 Nf3 d6 Bb5+ Bd7 
Bxd7+ Qxd7 O-O Nc6")
+ ("B52p" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.Re1" "e4 c5 Nf3 d6 
Bb5+ Bd7 Bxd7+ Qxd7 O-O Nc6 Re1")
+ ("B52q" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.Re1 Nf6" "e4 c5 Nf3 d6 
Bb5+ Bd7 Bxd7+ Qxd7 O-O Nc6 Re1 Nf6")
+ ("B52r" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.c3" "e4 c5 Nf3 d6 Bb5+ 
Bd7 Bxd7+ Qxd7 O-O Nc6 c3")
+ ("B52s" "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.c3 Nf6" "e4 c5 Nf3 d6 
Bb5+ Bd7 Bxd7+ Qxd7 O-O Nc6 c3 Nf6")
+ ("B52t" "Sicilian: 3.Bb5+, Bronstein Gambit" "e4 c5 Nf3 d6 Bb5+ Bd7 Bxd7+ 
Qxd7 O-O Nc6 c3 Nf6 d4")
+ ("B53a" "Sicilian: 2...d6 3.d4" "e4 c5 Nf3 d6 d4")
+ ("B53b" "Sicilian: 2...d6 3.d4 Nf6" "e4 c5 Nf3 d6 d4 Nf6")
+ ("B53c" "Sicilian: 2...d6 3.d4 cxd4" "e4 c5 Nf3 d6 d4 cxd4")
+ ("B53d" "Sicilian, Chekhover Variation" "e4 c5 Nf3 d6 d4 cxd4 Qxd4")
+ ("B53e" "Sicilian, Chekhover, 4...Bd7" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Bd7")
+ ("B53f" "Sicilian, Chekhover, 4...a6" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 a6")
+ ("B53g" "Sicilian, Chekhover, 4...a6 5.Be3" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 a6 
Be3")
+ ("B53h" "Sicilian, Chekhover, 4...a6 5.c4" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 a6 c4")
+ ("B53i" "Sicilian, Chekhover, 4...a6 5.c4 Nc6 6.Qd2" "e4 c5 Nf3 d6 d4 cxd4 
Qxd4 a6 c4 Nc6 Qd2")
+ ("B53j" "Sicilian, Chekhover, 4...a6 5.c4 Nc6 6.Qd2 g6" "e4 c5 Nf3 d6 d4 cxd4 
Qxd4 a6 c4 Nc6 Qd2 g6")
+ ("B53k" "Sicilian, Chekhover, 4...Nf6" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nf6")
+ ("B53k" "Sicilian, Chekhover, 4...Nf6 5.Nc3" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nf6 
Nc3")
+ ("B53l" "Sicilian, Chekhover, 4...Nc6" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nc6")
+ ("B53m" "Sicilian: Chekhover, Zaitsev Variation" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Qd7")
+ ("B53n" "Sicilian, Chekhover, 4...Nc6 5.Bb5 Bd7" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7")
+ ("B53o" "Sicilian, Chekhover, 4...Nc6 5.Bb5 Bd7 6.Bxc6 Bxc6" "e4 c5 Nf3 d6 d4 
cxd4 Qxd4 Nc6 Bb5 Bd7 Bxc6 Bxc6")
+ ("B53p" "Sicilian, Chekhover, 7.c4" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nc6 Bb5 Bd7 
Bxc6 Bxc6 c4")
+ ("B53q" "Sicilian, Chekhover, 7.c4 Nf6 8.Nc3 g6" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7 Bxc6 Bxc6 c4 Nf6 Nc3 g6")
+ ("B53r" "Sicilian, Chekhover, 7.Nc3" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nc6 Bb5 Bd7 
Bxc6 Bxc6 Nc3")
+ ("B53s" "Sicilian, Chekhover, 7.Nc3 Nf6 8.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 Nc6 
Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5")
+ ("B53t" "Sicilian, Chekhover, 7.Nc3 Nf6 8.Bg5 e6" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6")
+ ("B53u" "Sicilian, Chekhover, Main Line, 10.Qd3" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6 O-O-O Be7 Qd3")
+ ("B53v" "Sicilian, Chekhover, Main Line, 10.Rhe1" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6 O-O-O Be7 Rhe1")
+ ("B53w" "Sicilian, Chekhover, Main Line, 10.Rhe1 O-O" "e4 c5 Nf3 d6 d4 cxd4 
Qxd4 Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6 O-O-O Be7 Rhe1 O-O")
+ ("B53x" "Sicilian, Chekhover, Main Line, 11.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Qxd4 
Nc6 Bb5 Bd7 Bxc6 Bxc6 Nc3 Nf6 Bg5 e6 O-O-O Be7 Rhe1 O-O Qd2")
+ ("B54a" "Sicilian: Open, 2...d6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4")
+ ("B54b" "Sicilian: Open, 2...d6, 4...e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 e5")
+ ("B54c" "Sicilian: Open, 2...d6, 4...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 a6")
+ ("B54d" "Sicilian: Open, 2...d6, 4...Nf6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6")
+ ("B54e" "Sicilian: Open, 2...d6, 4...Nf6 5.Bd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Bd3")
+ ("B54f" "Sicilian: Prins (Moscow) Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
f3")
+ ("B54g" "Sicilian: Prins (Moscow), 5...e6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 
e6")
+ ("B54h" "Sicilian: Prins (Moscow), 5...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 
a6")
+ ("B54i" "Sicilian: Prins (Moscow), 5...Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 
Nc6")
+ ("B54j" "Sicilian: Prins (Moscow), 5...Nc6 6.c4 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 f3 Nc6 c4 Nxd4")
+ ("B54k" "Sicilian: Prins (Moscow), 5...Nc6 6.c4 Qb6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 f3 Nc6 c4 Qb6")
+ ("B54l" "Sicilian: Prins (Moscow), 5...e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 
e5")
+ ("B54m" "Sicilian: Prins (Moscow), 5...e5 6.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 f3 e5 Nb3")
+ ("B54n" "Sicilian: Prins (Moscow), 5...e5 6.Nb3 Be6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 f3 e5 Nb3 Be6")
+ ("B54o" "Sicilian: Prins (Moscow), 5...e5 6.Nb3 d5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 f3 e5 Nb3 d5")
+ ("B55" "Sicilian: Prins, Venice Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 f3 e5 
Bb5+")
+ ("B55" "Sicilian: Prins, Venice Attack, 6...Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 f3 e5 Bb5+ Bd7")
+ ("B55" "Sicilian: Prins, Venice Attack, 6...Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 f3 e5 Bb5+ Nbd7")
+ ("B55" "Sicilian: Prins, Venice Attack, 6...Nbd7 7.Nf5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 f3 e5 Bb5+ Nbd7 Nf5")
+ ("B55" "Sicilian: Prins, Venice Attack, 6...Nbd7 7.Nf5 d5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 f3 e5 Bb5+ Nbd7 Nf5 d5")
+ ("B56a" "Sicilian: Open, 2...d6, 5.Nc3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3")
+ ("B56b" "Sicilian: Open, 2...d6, 5.Nc3 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e5")
+ ("B56c" "Sicilian: Venice Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e5 Bb5+")
+ ("B56d" "Sicilian: Open, 2...d6, 5.Nc3 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nbd7")
+ ("B56e" "Sicilian: Open, 2...d6, 5.Nc3 Nbd7 6.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nbd7 Bc4")
+ ("B56f" "Sicilian: Open, 2...d6, 5.Nc3 Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Bd7")
+ ("B56g" "Sicilian: Open, 2...d6, 5.Nc3 Bd7 6.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Bd7 Bg5")
+ ("B56h" "Sicilian: Open, 2...d6 5.Nc3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6")
+ ("B56i" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.h3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 h3")
+ ("B56j" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.g3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 g3")
+ ("B56k" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 f4")
+ ("B56l" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 f3")
+ ("B56m" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3 e5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 f3 e5")
+ ("B56m" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3 e5 7.Nb3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 f3 e5 Nb3")
+ ("B56n" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3 e5 7.Nb3 Be7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 f3 e5 Nb3 Be7")
+ ("B56o" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be3")
+ ("B56p" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 e5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Be3 e5")
+ ("B56q" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 Ng4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Be3 Ng4")
+ ("B56r" "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 Ng4 7.Bb5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be3 Ng4 Bb5")
+ ("B57a" "Sicilian: Sozin" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bc4")
+ ("B57a" "Sicilian: Sozin, Magnus Smith Trap" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bc4 g6 Nxc6 bxc6 e5")
+ ("B57b" "Sicilian: Sozin, 6...Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bc4 
Bd7")
+ ("B57c" "Sicilian: Sozin, 6...Bd7 7.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Bd7 O-O")
+ ("B57d" "Sicilian: Sozin, Benko Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6")
+ ("B57e" "Sicilian: Sozin, Benko, 7.Nde2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6 Nde2")
+ ("B57f" "Sicilian: Sozin, Benko, 7.Ndb5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6 Ndb5")
+ ("B57g" "Sicilian: Sozin, Benko, 7.Nxc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6 Nxc6")
+ ("B57h" "Sicilian: Sozin, Benko, 7.Nxc6 bxc6 8.O-O g6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bc4 Qb6 Nxc6 bxc6 O-O g6")
+ ("B57i" "Sicilian: Sozin, Benko, 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6 Nb3")
+ ("B57j" "Sicilian: Sozin, Benko, 7.Nb3 e6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bc4 Qb6 Nb3 e6")
+ ("B57k" "Sicilian: Sozin, Benko, 7.Nb3 e6 8.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bc4 Qb6 Nb3 e6 Be3")
+ ("B57l" "Sicilian: Sozin, Benko, 7.Nb3 e6 8.Bf4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bc4 Qb6 Nb3 e6 Bf4")
+ ("B57m" "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bc4 Qb6 Nb3 e6 O-O")
+ ("B57n" "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bc4 Qb6 Nb3 e6 O-O Be7")
+ ("B57o" "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O Be7 9.Be3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bc4 Qb6 Nb3 e6 O-O Be7 Be3")
+ ("B58a" "Sicilian: Boleslavsky Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2")
+ ("B58b" "Sicilian: Boleslavsky, 6...Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 Bd7")
+ ("B58c" "Sicilian: Boleslavsky, 6...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 a6")
+ ("B58d" "Sicilian: Boleslavsky, 6...Nxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 Nxd4")
+ ("B58e" "Sicilian: Boleslavsky, 6...e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 e5")
+ ("B58f" "Sicilian: Boleslavsky, 7.Ndb5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 e5 Ndb5")
+ ("B58g" "Sicilian: Boleslavsky, Louma Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nxc6")
+ ("B58g" "Sicilian: Boleslavsky, Louma Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nxc6 bxc6")
+ ("B58h" "Sicilian: Boleslavsky, 7.Nf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 
Be2 e5 Nf3")
+ ("B58i" "Sicilian: Boleslavsky, 7.Nf3 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 e5 Nf3 h6")
+ ("B58j" "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O")
+ ("B58k" "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7")
+ ("B58l" "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7 9.h3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 h3")
+ ("B58m" "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7 9.Re1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1")
+ ("B58n" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3")
+ ("B58o" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 a6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3 a6")
+ ("B58p" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3 Be6")
+ ("B58p" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3 Be6 Bf1")
+ ("B58q" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3 Be6 Bf1 Nb8")
+ ("B58r" "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8 12.b3" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nf3 h6 O-O Be7 Re1 O-O h3 Be6 Bf1 
Nb8 b3")
+ ("B59a" "Sicilian: Boleslavsky, 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 
Be2 e5 Nb3")
+ ("B59b" "Sicilian: Boleslavsky, 7.Nb3 Be6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 e5 Nb3 Be6")
+ ("B59c" "Sicilian: Boleslavsky, 7.Nb3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Be2 e5 Nb3 Be7")
+ ("B59d" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 Bg5")
+ ("B59e" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 Be3")
+ ("B59f" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O")
+ ("B59g" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O")
+ ("B59h" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Bg5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O Bg5")
+ ("B59i" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Kh1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O Kh1")
+ ("B59j" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O f4")
+ ("B59k" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O Be3")
+ ("B59l" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O Be3 Be6")
+ ("B59m" "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 a5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Be2 e5 Nb3 Be7 O-O O-O Be3 a5")
+ ("B60a" "Sicilian: Richter-Rauzer" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 
Bg5")
+ ("B60b" "Sicilian: Richter-Rauzer, Bondarevsky Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 g6")
+ ("B60c" "Sicilian: Richter-Rauzer, 6...Qa5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 Qa5")
+ ("B60d" "Sicilian: Richter-Rauzer, 6...Qb6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 Qb6")
+ ("B60e" "Sicilian: Richter-Rauzer, 6...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bg5 a6")
+ ("B60f" "Sicilian: Richter-Rauzer, Larsen Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7")
+ ("B60g" "Sicilian: Richter-Rauzer, Larsen, 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 Bd7 Nb3")
+ ("B60h" "Sicilian: Richter-Rauzer, Larsen, 7.Bxf6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 Bd7 Bxf6")
+ ("B60i" "Sicilian: Richter-Rauzer, Larsen, 7.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 Bd7 Be2")
+ ("B60j" "Sicilian: Richter-Rauzer, Larsen, 7.Be2 a6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Be2 a6")
+ ("B60k" "Sicilian: Richter-Rauzer, Larsen, 7.Be2 Qa5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Be2 Qa5")
+ ("B61a" "Sicilian: Richter-Rauzer, Larsen, 7.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 Bd7 Qd2")
+ ("B61b" "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 a6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 a6")
+ ("B61c" "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Nxd4")
+ ("B61d" "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Rc8" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Rc8")
+ ("B61e" "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Rc8 8.O-O-O" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Rc8 O-O-O")
+ ("B61f" "Sicilian: Richter-Rauzer, Larsen, Main Line" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Rc8 O-O-O Nxd4 Qxd4 Qa5")
+ ("B61g" "Sicilian: Richter-Rauzer, Larsen, Main Line, 10.Bd2" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Rc8 O-O-O Nxd4 Qxd4 Qa5 Bd2")
+ ("B61h" "Sicilian: Richter-Rauzer, Larsen, Main Line, 10.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 Bd7 Qd2 Rc8 O-O-O Nxd4 Qxd4 Qa5 f4")
+ ("B62a" "Sicilian: Richter-Rauzer, 6...e6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bg5 e6")
+ ("B62b" "Sicilian: Richter-Rauzer, 6...e6 7.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Be2")
+ ("B62c" "Sicilian: Richter-Rauzer, Podebrady Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Nb3")
+ ("B62d" "Sicilian: Richter-Rauzer, Richter Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Nxc6")
+ ("B62e" "Sicilian: Richter-Rauzer, Keres Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd3")
+ ("B62f" "Sicilian: Richter-Rauzer, Margate (Alekhine) Variation" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Bb5")
+ ("B62g" "Sicilian: Richter-Rauzer, Margate, 7...Bd7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Bb5 Bd7")
+ ("B63a" "Sicilian: Richter-Rauzer, Rauzer Attack (7.Qd2)" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2")
+ ("B63b" "Sicilian: Richter-Rauzer, 7.Qd2 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 e6 Qd2 Nxd4")
+ ("B63c" "Sicilian: Richter-Rauzer, 7.Qd2 Qb6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 e6 Qd2 Qb6")
+ ("B63d" "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Qb6 Nb3")
+ ("B63e" "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Qb6 Nb3 a6")
+ ("B63f" "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6 9.O-O-O" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Qb6 Nb3 a6 O-O-O")
+ ("B63g" "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6 9.O-O-O Be7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Qb6 Nb3 a6 O-O-O Be7")
+ ("B63h" "Sicilian: Richter-Rauzer, 7.Qd2 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 e6 Qd2 h6")
+ ("B63i" "Sicilian: Richter-Rauzer, 7.Qd2 h6 8.Bxf6 gxf6 9.O-O-O a6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 h6 Bxf6 gxf6 O-O-O a6")
+ ("B63j" "Sicilian: Richter-Rauzer, 7.Qd2 h6 8.Bxf6 gxf6 9.O-O-O a6 10.f4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 h6 Bxf6 gxf6 O-O-O a6 f4")
+ ("B63k" "Sicilian: Richter-Rauzer, 7.Qd2 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 Nc6 Bg5 e6 Qd2 Be7")
+ ("B63l" "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O")
+ ("B63m" "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O Nxd4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O Nxd4")
+ ("B63m" "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O Nxd4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O Nxd4 Qxd4")
+ ("B63n" "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O Nxd4 9.Qxd4 O-O" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O Nxd4 Qxd4 O-O")
+ ("B63o" "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O O-O" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O")
+ ("B63p" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f3")
+ ("B63q" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3")
+ ("B63r" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3 a5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 a5")
+ ("B63s" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3 a6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 a6")
+ ("B63t" "Sicilian: Richter-Rauzer, Podebrad Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 Qb6")
+ ("B63u" "Sicilian: Richter-Rauzer, Podebrad, 10.f3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 Qb6 f3")
+ ("B63v" "Sicilian: Richter-Rauzer, Podebrad, 10.f3 Rd8" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 Qb6 f3 Rd8")
+ ("B63w" "Sicilian: Richter-Rauzer, Podebrad, 10.f3 Rd8 11.Kb1" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O Nb3 Qb6 f3 Rd8 Kb1")
+ ("B64a" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4")
+ ("B64b" "Sicilian: Richter-Rauzer, Geller Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 e5")
+ ("B64c" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 h6")
+ ("B64d" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6 10.Bh4 Bd7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 h6 Bh4 Bd7")
+ ("B64e" "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6 10.Bh4 e5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 h6 Bh4 e5")
+ ("B65a" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4")
+ ("B65a" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4")
+ ("B65b" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 h6" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4 h6")
+ ("B65c" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4 Qa5")
+ ("B65d" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Kb1" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4 Qa5 
Kb1")
+ ("B65e" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4 Qa5 
Bc4")
+ ("B65f" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4 Bd7" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 Qxd4 
Qa5 Bc4 Bd7")
+ ("B65g" "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4 Bd7 
12.e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 Be7 O-O-O O-O f4 Nxd4 
Qxd4 Qa5 Bc4 Bd7 e5")
+ ("B66a" "Sicilian: Richter-Rauzer, 7...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
Nc6 Bg5 e6 Qd2 a6")
+ ("B66b" "Sicilian: Richter-Rauzer, 7...a6 8.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 Be2")
+ ("B66c" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O")
+ ("B66d" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Be7")
+ ("B66e" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Nxd4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Nxd4")
+ ("B66e" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Nxd4 9.Qxd4" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Nxd4 Qxd4")
+ ("B66e" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Nxd4 9.Qxd4 Be7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Nxd4 Qxd4 Be7")
+ ("B66f" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6")
+ ("B66g" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Bf4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Bf4")
+ ("B66h" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Bf4, 11.f3" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Bf4 Bd7 Nxc6 Bxc6 f3")
+ ("B66i" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3")
+ ("B66j" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Qc7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Qc7")
+ ("B66k" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Bd7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Bd7")
+ ("B66l" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Bd7 10.f3" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Bd7 f3")
+ ("B66m" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7")
+ ("B66m" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f3" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7 f3")
+ ("B66m" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f3 Nxd4" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7 f3 Nxd4")
+ ("B66n" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f3 Nxd4 
11.Bxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7 
f3 Nxd4 Bxd4")
+ ("B66o" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7 f4")
+ ("B66p" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f4 Nxd4" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O h6 Be3 Be7 f4 Nxd4")
+ ("B67a" "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Bd7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7")
+ ("B67b" "Sicilian: Richter-Rauzer, 7...a6, 9.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 Be2")
+ ("B67c" "Sicilian: Richter-Rauzer, 7...a6, 9.f3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f3")
+ ("B67d" "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Rc8" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f3 Rc8")
+ ("B67e" "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f3 Be7")
+ ("B67f" "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Be7 10.h4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f3 Be7 h4")
+ ("B67g" "Sicilian: Richter-Rauzer, 7...a6, 9.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4")
+ ("B67h" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 h6")
+ ("B67i" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6 10.Bh4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 h6 Bh4")
+ ("B67j" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6 10.Bh4 g5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 h6 Bh4 g5")
+ ("B67k" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5")
+ ("B67l" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Nxc6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Nxc6")
+ ("B67m" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6")
+ ("B67m" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6 gxf6")
+ ("B67n" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.f5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6 gxf6 f5")
+ ("B67o" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Nxc6" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6 gxf6 
Nxc6")
+ ("B67p" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Nxc6 Bxc6 
12.Qe1" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 
Bxf6 gxf6 Nxc6 Bxc6 Qe1")
+ ("B67q" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6 gxf6 Kb1")
+ ("B67r" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1 Qb6" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 Bxf6 gxf6 
Kb1 Qb6")
+ ("B67s" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1 Qb6 
12.Nxc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 b5 
Bxf6 gxf6 Kb1 Qb6 Nxc6")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Be2" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Be2")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Be2 Qc7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Be2 Qc7")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Nf3")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Nf3 b5")
+ ("B68" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.e5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Nf3 b5 e5")
+ ("B69" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.Bxf6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Nf3 b5 Bxf6")
+ ("B69" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.Bxf6 gxf6" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 Nf3 b5 
Bxf6 gxf6")
+ ("B69" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.Bxf6 gxf6 
12.Kb1" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 
Nf3 b5 Bxf6 gxf6 Kb1")
+ ("B69" "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.Bxf6 gxf6 
12.f5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 Nc6 Bg5 e6 Qd2 a6 O-O-O Bd7 f4 Be7 
Nf3 b5 Bxf6 gxf6 f5")
+ ("B70a" "Sicilian: Dragon" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6")
+ ("B70a" "Sicilian: Dragon, 6.f3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 f3")
+ ("B70b" "Sicilian: Dragon, 6.g3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 g3")
+ ("B70c" "Sicilian: Dragon, 6.g3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 g3 
Nc6")
+ ("B70c" "Sicilian: Dragon, 6.g3 Nc6 7.Bg2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 g3 Nc6 Bg2")
+ ("B70d" "Sicilian: Dragon, 6.g3 Nc6 7.Nde2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 g3 Nc6 Nde2")
+ ("B70e" "Sicilian: Dragon, 6.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Bg5")
+ ("B70e" "Sicilian: Dragon, 6.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Bg5 
Bg7")
+ ("B70f" "Sicilian: Dragon, 6.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Bc4")
+ ("B70f" "Sicilian: Dragon, 6.Bc4 Bg7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 
Bc4 Bg7")
+ ("B70g" "Sicilian: Dragon, 6.Bc4 Bg7 7.h3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Bc4 Bg7 h3")
+ ("B70h" "Sicilian: Dragon, 6.Bc4 Bg7 7.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Bc4 Bg7 O-O")
+ ("B70i" "Sicilian: Dragon, 6.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2")
+ ("B70i" "Sicilian: Dragon, 6.Be2 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 
Be2 Nc6")
+ ("B70j" "Sicilian: Dragon, 6.Be2 a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 
Be2 a6")
+ ("B70j" "Sicilian: Dragon, 6.Be2 a6 7.a4 Bg7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be2 a6 a4 Bg7")
+ ("B70k" "Sicilian: Dragon, 6.Be2 Bg7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 
Be2 Bg7")
+ ("B70l" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be2 Bg7 O-O")
+ ("B70l" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be2 Bg7 O-O Nc6")
+ ("B70m" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O Nc6 8.Nb3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O Nc6 Nb3")
+ ("B70n" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O Nc6 8.Nb3 O-O" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O Nc6 Nb3 O-O")
+ ("B70o" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be2 Bg7 O-O O-O")
+ ("B70p" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Re1")
+ ("B70p" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1 Nc6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Re1 Nc6")
+ ("B70q" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1 Nc6 9.Nb3" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Re1 Nc6 Nb3")
+ ("B70r" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1 Nc6 9.Nb3 Be6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Re1 Nc6 Nb3 Be6")
+ ("B70s" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5")
+ ("B70s" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5 Nc6")
+ ("B70t" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5 Nc6 Nb3")
+ ("B70u" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 a6" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5 Nc6 Nb3 a6")
+ ("B70v" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 Be6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5 Nc6 Nb3 Be6")
+ ("B70w" "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 Be6 10.Kh1" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be2 Bg7 O-O O-O Bg5 Nc6 Nb3 Be6 Kh1")
+ ("B71" "Sicilian: Dragon, Levenfish Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 f4")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Bg7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 f4 Bg7")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Bg7 7.e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 f4 Bg7 e5")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 f4 Nbd7")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 f4 Nc6")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Nc6 7.Bb5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 f4 Nc6 Bb5")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Nc6 7.Nf3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 f4 Nc6 Nf3")
+ ("B71" "Sicilian: Dragon, Levenfish, 6...Nc6 7.Nxc6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 f4 Nc6 Nxc6")
+ ("B72" "Sicilian: Dragon, 6.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3")
+ ("B72" "Sicilian: Dragon, 6.Be3 Bg7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 
Be3 Bg7")
+ ("B72" "Sicilian: Dragon, 6.Be3 Bg7 7.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Be3 Bg7 Qd2")
+ ("B72" "Sicilian: Dragon, 6.Be3 Bg7 7.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Be3 Bg7 Bc4")
+ ("B72" "Sicilian: Dragon, 6.Be3 Bg7 7.Bc4 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Bc4 Nc6")
+ ("B72" "Sicilian: Dragon, 6.Be3 Bg7 7.Bc4 O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Bc4 O-O")
+ ("B72" "Sicilian: Dragon, Classical Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2")
+ ("B72" "Sicilian: Dragon, Classical Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 O-O")
+ ("B72" "Sicilian: Dragon, Classical Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 O-O O-O")
+ ("B72" "Sicilian: Dragon, Classical, Amsterdam Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 Qd2")
+ ("B72" "Sicilian: Dragon, Classical, Grigoriev Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 Qd2 O-O O-O-O")
+ ("B72" "Sicilian: Dragon, Classical, Nottingham Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 Nb3")
+ ("B73" "Sicilian: Dragon, Classical, 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 Nc6 O-O")
+ ("B73" "Sicilian: Dragon, Classical, 8.O-O O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O")
+ ("B73" "Sicilian: Dragon, Classical, 9.Kh1" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Kh1")
+ ("B73" "Sicilian: Dragon, Classical, Richter Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Qd2")
+ ("B73" "Sicilian: Dragon, Classical, 9.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Be3 Bg7 Be2 Nc6 O-O O-O f4")
+ ("B73" "Sicilian: Dragon, Classical, Zollner Gambit" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O f4 Qb6 e5")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3 b6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 b6")
+ ("B74" "Sicilian: Dragon, Classical, Alekhine Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 a5")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3 a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 a6")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3 Be6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3 Be6 10.f4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4")
+ ("B74" "Sicilian: Dragon, Classical, 9.Nb3 Be6 10.f4 Rc8" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Rc8")
+ ("B74" "Sicilian: Dragon, Classical, Tartakower Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Qc8")
+ ("B74" "Sicilian: Dragon, Classical, Maroczy Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Na5")
+ ("B74" "Sicilian: Dragon, Classical, Stockholm Attack" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Na5 f5 Bc4 Nxa5 Bxe2 Qxe2 
Qxa5 g4")
+ ("B74" "Sicilian: Dragon, Classical, Spielmann Variation" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Na5 f5 Bc4 Bd3")
+ ("B74" "Sicilian: Dragon, Classical, Bernard Defence" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 Be2 Nc6 O-O O-O Nb3 Be6 f4 Na5 f5 Bc4 Bd3 Bxd3 cxd3 d5")
+ ("B75" "Sicilian: Dragon, Yugoslav Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Be3 Bg7 f3")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 a6")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 Nc6")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6 8.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 Nc6 Bc4")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6 8.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 Nc6 Qd2")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6 8.Qd2 Bd7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 Nc6 Qd2 Bd7")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6 8.Qd2 Bd7 9.O-O-O" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 Nc6 Qd2 Bd7 O-O-O")
+ ("B75" "Sicilian: Dragon, Yugoslav, 7...Nc6 8.Qd2 Bd7 9.O-O-O Rc8" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 Nc6 Qd2 Bd7 O-O-O Rc8")
+ ("B76a" "Sicilian: Dragon, Yugoslav, 7.f3 O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 O-O")
+ ("B76b" "Sicilian: Dragon, Yugoslav, 7.f3 O-O 8.Qd2" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2")
+ ("B76c" "Sicilian: Dragon, Yugoslav, 8.Qd2 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6")
+ ("B76d" "Sicilian: Dragon, Yugoslav, 9.g4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
g6 Be3 Bg7 f3 O-O Qd2 Nc6 g4")
+ ("B76e" "Sicilian: Dragon, Yugoslav, 9.g4 Be6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 g4 Be6")
+ ("B76f" "Sicilian: Dragon, Yugoslav, 9.g4 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 g4 Nxd4")
+ ("B76g" "Sicilian: Dragon, Yugoslav, 9.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O")
+ ("B76h" "Sicilian: Dragon, Yugoslav, 9.O-O-O Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Bd7")
+ ("B76i" "Sicilian: Dragon, Yugoslav, 9.O-O-O Bd7 10.g4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Bd7 g4")
+ ("B76j" "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Nxd4")
+ ("B76k" "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4 10.Bxd4 Be6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Nxd4 Bxd4 Be6")
+ ("B76l" "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Nxd4 Bxd4 Be6 Kb1")
+ ("B76m" "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1 Qc7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Nxd4 Bxd4 Be6 Kb1 Qc7")
+ ("B76n" "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1 Qc7 12.g4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O Nxd4 Bxd4 Be6 Kb1 
Qc7 g4")
+ ("B76o" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5")
+ ("B76p" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5 10.Qe1" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 Qe1")
+ ("B76q" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5 10.exd5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5")
+ ("B76q" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5 10.exd5 Nxd5 11.Nxc6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5 Nxd5 Nxc6")
+ ("B76r" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Nxd5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5 Nxd5 Nxc6 bxc6 Nxd5")
+ ("B76s" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5 Nxd5 Nxc6 bxc6 Bd4")
+ ("B76t" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4 e5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5 Nxd5 Nxc6 bxc6 Bd4 
e5")
+ ("B76u" "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4 e5 13.Bc5 Be6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 O-O-O d5 exd5 Nxd5 Nxc6 
bxc6 Bd4 e5 Bc5 Be6")
+ ("B77a" "Sicilian: Dragon, Yugoslav, 9.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4")
+ ("B77b" "Sicilian: Dragon, Yugoslav, Byrne Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 a5")
+ ("B77c" "Sicilian: Dragon, Yugoslav, 9.Bc4 Ne5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Ne5")
+ ("B77d" "Sicilian: Dragon, Yugoslav, 9.Bc4 Nd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Nd7")
+ ("B77e" "Sicilian: Dragon, Yugoslav, 9.Bc4 Nxd4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Nxd4")
+ ("B77f" "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7")
+ ("B77g" "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.Bb3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 Bb3")
+ ("B77h" "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.g4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 g4")
+ ("B77i" "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.h4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 h4")
+ ("B77j" "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.h4 Rc8" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 h4 Rc8")
+ ("B78a" "Sicilian: Dragon, Yugoslav, 10.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O")
+ ("B78b" "Sicilian: Dragon, Yugoslav, 10.O-O-O Ne5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Ne5")
+ ("B78c" "Sicilian: Dragon, Yugoslav, 10.O-O-O Rc8" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8")
+ ("B78c" "Sicilian: Dragon, Yugoslav, 10.O-O-O Rc8 11.Bb3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3")
+ ("B78d" "Sicilian: Dragon, Yugoslav, Modern Main Line" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5")
+ ("B78e" "Sicilian: Dragon, Yugoslav, Main Line, 12.Kb1" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 Kb1")
+ ("B78e" "Sicilian: Dragon, Yugoslav, Main Line, 12.Kb1" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 Kb1 Nc4 Bxc4 
Rxc4")
+ ("B78f" "Sicilian: Dragon, Yugoslav, Main Line, 12.Kb1: 14.g4 b5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 Kb1 
Nc4 Bxc4 Rxc4 g4 b5")
+ ("B78g" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4")
+ ("B78g" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 Nc4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 Nc4")
+ ("B78h" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 Nc4: 14.g4" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 
Nc4 Bxc4 Rxc4 g4")
+ ("B78i" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 Nc4: 14.h5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 
Nc4 Bxc4 Rxc4 h5")
+ ("B78j" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 h5")
+ ("B78k" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Kb1" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 
h5 Kb1")
+ ("B78l" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bh6" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 
h5 Bh6")
+ ("B78m" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bh6 Bxh6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 
h4 h5 Bh6 Bxh6")
+ ("B78n" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 h4 
h5 Bg5")
+ ("B78o" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 Bb3 Ne5 
h4 h5 Bg5 Rc5")
+ ("B78p" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5 14.g4" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 
Bb3 Ne5 h4 h5 Bg5 Rc5 g4")
+ ("B78q" "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5 14.Kb1" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Rc8 
Bb3 Ne5 h4 h5 Bg5 Rc5 Kb1")
+ ("B78r" "Sicilian: Dragon, Yugoslav, Old Main Line" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5")
+ ("B78s" "Sicilian: Dragon, Yugoslav, Old Main Line, 11.Bb3 Rac8" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 Rac8")
+ ("B78t" "Sicilian: Dragon, Yugoslav, Old Main Line, 11.Bb3 Rfc8" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 Rfc8")
+ ("B79a" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 Rfc8 h4")
+ ("B79a" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 h5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 Rfc8 h4 
h5")
+ ("B79b" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 Rfc8 h4 
Ne5")
+ ("B79c" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.Kb1" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 
Rfc8 h4 Ne5 Kb1")
+ ("B79d" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.Kb1 Nc4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 
Rfc8 h4 Ne5 Kb1 Nc4")
+ ("B79e" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.g4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 
Rfc8 h4 Ne5 g4")
+ ("B79f" "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.h5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 g6 Be3 Bg7 f3 O-O Qd2 Nc6 Bc4 Bd7 O-O-O Qa5 Bb3 
Rfc8 h4 Ne5 h5")
+ ("B80a" "Sicilian: Scheveningen" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6")
+ ("B80b" "Sicilian: Scheveningen, 6.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be3")
+ ("B80c" "Sicilian: Scheveningen, 6.Be3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Be3 Nc6")
+ ("B80d" "Sicilian: Scheveningen, 6.Be3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Be3 Nc6 f3")
+ ("B80e" "Sicilian: Scheveningen, 6.Be3 a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 Be3 a6")
+ ("B80f" "Sicilian: Scheveningen, 7.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be3 a6 Qd2")
+ ("B80g" "Sicilian: Scheveningen, English Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be3 a6 f3")
+ ("B80h" "Sicilian: Scheveningen, English Attack, 7...Nc6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 Nc6")
+ ("B80h" "Sicilian: Scheveningen, English, 7...Nc6 8.Qd2" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 Nc6 Qd2")
+ ("B80i" "Sicilian: Scheveningen, English, 7...Nc6 8.Qd2" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 Nc6 Qd2 Be7")
+ ("B80j" "Sicilian: Scheveningen, English Attack, 7...b5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 b5")
+ ("B80k" "Sicilian: Scheveningen, English, 7...b5 8.Qd2" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be3 a6 f3 b5 Qd2")
+ ("B80l" "Sicilian: Scheveningen, English, 7...b5, 8.Qd2 Bb7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 b5 Qd2 Bb7")
+ ("B80l" "Sicilian: Scheveningen, English, 7...b5 8.Qd2 Bb7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 b5 Qd2 Bb7 g4")
+ ("B80m" "Sicilian: Scheveningen, English, 7...b5 8.Qd2 Nbd7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be3 a6 f3 b5 Qd2 Nbd7")
+ ("B80n" "Sicilian: Scheveningen, Vitolins Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Bb5+")
+ ("B80n" "Sicilian: Scheveningen, Vitolins, 6...Bd7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Bb5+ Bd7")
+ ("B80o" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3")
+ ("B80p" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 a6")
+ ("B80q" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6")
+ ("B80r" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 a6")
+ ("B80r" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 a6 O-O")
+ ("B80r" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 a6 O-O Bd7")
+ ("B80s" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 Qc7")
+ ("B80t" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 Qc7 O-O a6")
+ ("B80u" "Sicilian: Scheveningen, Fianchetto Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g3 Nc6 Bg2 Qc7 O-O a6 Re1 Be7")
+ ("B81a" "Sicilian: Scheveningen, Keres Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 g4")
+ ("B81b" "Sicilian: Scheveningen, Keres, 6...e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 g4 e5")
+ ("B81c" "Sicilian: Scheveningen, Keres, 6...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 g4 a6")
+ ("B81d" "Sicilian: Scheveningen, Keres, Perenyi Attack" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 a6 Be3")
+ ("B81e" "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...e5" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 a6 Be3 e5")
+ ("B81f" "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...h6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 a6 Be3 h6")
+ ("B81g" "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...h6 8.f4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 a6 Be3 h6 f4")
+ ("B81h" "Sicilian: Scheveningen, Keres, 6...h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 g4 h6")
+ ("B81i" "Sicilian: Scheveningen, Keres, 6...h6 7.h3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 h3")
+ ("B81i" "Sicilian: Scheveningen, Keres, 6...h6 7.h3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 h3 Nc6 Bg2")
+ ("B81i" "Sicilian: Scheveningen, Keres, 6...h6 7.h3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 h3 a6 Bg2")
+ ("B81j" "Sicilian: Scheveningen, Keres, 6...h6 7.h4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 h4")
+ ("B81k" "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Be7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 h4 Be7")
+ ("B81l" "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 h4 Nc6")
+ ("B81m" "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6 8.Rg1" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 h4 Nc6 Rg1")
+ ("B81n" "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6 8.Rg1 h5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 h6 h4 Nc6 Rg1 h5")
+ ("B81o" "Sicilian: Scheveningen, Keres, 6...h6 7.g5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 g5")
+ ("B81p" "Sicilian: Scheveningen, Keres, 6...h6 7.Rg1" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 g4 h6 Rg1")
+ ("B81q" "Sicilian: Scheveningen, Keres, 6...Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 g4 Nc6")
+ ("B81r" "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 g4 Nc6 g5 Nd7")
+ ("B81s" "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7 8.Be3" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 Nc6 g5 Nd7 Be3")
+ ("B81t" "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7 8.Be3 Be7" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 g4 Nc6 g5 Nd7 Be3 Be7")
+ ("B82" "Sicilian: Scheveningen, 6.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
f4")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Qb6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 f4 Qb6")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 f4 Be7")
+ ("B82" "Sicilian: Scheveningen, 6.f4 a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 f4 a6")
+ ("B82" "Sicilian: Scheveningen, 6.f4 a6 7.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 f4 a6 Be3")
+ ("B82" "Sicilian: Scheveningen, 6.f4 a6 7.Be3 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 f4 a6 Be3 b5")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 f4 Nc6")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Nc6 7.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 f4 Nc6 Be3")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Nc6 7.Be3 Qc7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 f4 Nc6 Be3 Qc7")
+ ("B82" "Sicilian: Scheveningen, 6.f4 Nc6 7.Be3 Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 f4 Nc6 Be3 Be7")
+ ("B82" "Sicilian: Scheveningen, Tal Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 f4 Nc6 Be3 Be7 Qf3")
+ ("B82" "Sicilian: Scheveningen, Tal, 8...e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 f4 Nc6 Be3 Be7 Qf3 e5")
+ ("B82" "Sicilian: Scheveningen, Tal, 8...Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 f4 Nc6 Be3 Be7 Qf3 Qc7")
+ ("B83" "Sicilian: Scheveningen, 6.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be2")
+ ("B83" "Sicilian: Scheveningen, 6.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be2 Be7")
+ ("B83" "Sicilian: Scheveningen, Modern" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be2 Nc6")
+ ("B83" "Sicilian: Scheveningen, Modern" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be2 Nc6 O-O Be7")
+ ("B83" "Sicilian: Scheveningen, Modern" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Be2 Nc6 O-O Be7 Be3 O-O")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 e5")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 e5 10.Nb3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 e5 Nb3")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 e5 10.Nb3 exf4 11.Bxf4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 e5 Nb3 exf4 Bxf4")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7 10.Nb3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7 Nb3")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7 10.Nb3 a6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7 Nb3 a6")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7 10.Nb3 a6 11.a4" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7 Nb3 a6 a4")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7 10.Kh1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7 Kh1")
+ ("B83" "Sicilian: Scheveningen, Modern, 9.f4 Bd7 10.Qe1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 Nc6 O-O Be7 Be3 O-O f4 Bd7 Qe1")
+ ("B84" "Sicilian: Scheveningen, Classical" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 Be2 a6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.a4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 a6 a4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 a6 f4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 a6 Be3")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Be2 a6 O-O")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Nbd7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Nbd7")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Nbd7 8.a4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Nbd7 a4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Nbd7 8.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Nbd7 f4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Nc6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.Kh1" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 Kh1")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.Kh1 Nc6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 Kh1 Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.a4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 a4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.a4 Nc6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 a4 Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.Bf3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 Bf3")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.Be3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 Be3")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.Be3 Nc6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 Be3 Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 f4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Qc7 8.f4 Nc6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Qc7 f4 Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4 Qc7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 Qc7")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4 Qc7 9.Be3" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 Qc7 Be3")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4 Qc7 9.Be3 Nc6" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 Qc7 Be3 Nc6")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4 Qc7 9.Kh1" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 Qc7 Kh1")
+ ("B84" "Sicilian: Scheveningen, Classical, 7.O-O Be7 8.f4 O-O" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Qc7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Qc7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Qe1" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Qe1")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Qe1 Qc7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Qe1 Qc7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Qe1 Qc7 
11.Qg3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Qe1 
Qc7 Qg3")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Kh1" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Kh1")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Kh1 Bd7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Kh1 Bd7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.Kh1 Qc7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 Kh1 Qc7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.a4" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 a4")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.a4 Bd7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 a4 Bd7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.a4 Qc7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 a4 Qc7")
+ ("B85" "Sicilian: Scheveningen, Classical, Main Line, 9...Nc6 10.a4 Qc7" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Be2 a6 O-O Be7 f4 O-O Be3 Nc6 a4 Qc7 Kh1")
+ ("B86" "Sicilian: Sozin-Scheveningen" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Bc4")
+ ("B86" "Sicilian: Sozin-Scheveningen, 6...Qb6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Qb6")
+ ("B86" "Sicilian: Sozin-Najdorf" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 
a6")
+ ("B86" "Sicilian: Sozin-Najdorf, 7.Bb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Bc4 a6 Bb3")
+ ("B86" "Sicilian: Sozin-Najdorf, 7.Bb3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 a6 Bb3 Be7")
+ ("B87" "Sicilian: Sozin-Najdorf, 7.Bb3 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 Bc4 a6 Bb3 b5")
+ ("B87" "Sicilian: Sozin-Najdorf, 7.Bb3 b5 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 e6 Bc4 a6 Bb3 b5 O-O")
+ ("B87" "Sicilian: Sozin-Najdorf, 7.Bb3 b5 8.O-O Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Bc4 a6 Bb3 b5 O-O Be7")
+ ("B87" "Sicilian: Sozin-Najdorf, 7.Bb3 b5 8.O-O Be7 9.Qf3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Bc4 a6 Bb3 b5 O-O Be7 Qf3")
+ ("B87" "Sicilian: Sozin-Najdorf, 7.Bb3 b5 8.O-O Be7 9.f4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 e6 Bc4 a6 Bb3 b5 O-O Be7 f4")
+ ("B88" "Sicilian: Sozin-Scheveningen" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Bc4 Nc6")
+ ("B88" "Sicilian: Sozin-Scheveningen, 7.O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Nc6 O-O")
+ ("B88" "Sicilian: Sozin-Scheveningen, 7.Bb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Nc6 Bb3")
+ ("B88" "Sicilian: Sozin-Scheveningen, 7.Bb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Nc6 Bb3 Be7 Be3")
+ ("B88" "Sicilian: Sozin, Fischer Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Nc6 Bb3 Be7 Be3 O-O f4")
+ ("B89" "Sicilian: Sozin, 7.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 Nc6 
Be3")
+ ("B89" "Sicilian: Sozin, 7.Be3 a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 
Nc6 Be3 a6")
+ ("B89" "Sicilian: Velimirovic vs. 7...a6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
e6 Bc4 Nc6 Be3 a6 Qe2")
+ ("B89" "Sicilian: Sozin, 7.Be3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 
Nc6 Be3 Be7")
+ ("B89" "Sicilian: Velimirovic" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 Bc4 Nc6 
Be3 Be7 Qe2")
+ ("B89" "Sicilian: Velimirovic, 9.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 e6 
Bc4 Nc6 Be3 Be7 Qe2 O-O O-O-O")
+ ("B89" "Sicilian: Velimirovic, 9.O-O-O Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 e6 Bc4 Nc6 Be3 Be7 Qe2 O-O O-O-O Qc7")
+ ("B89" "Sicilian: Velimirovic, 9.O-O-O Qc7 10.Bb3 a6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 e6 Bc4 Nc6 Be3 Be7 Qe2 O-O O-O-O Qc7 Bb3 a6")
+ ("B90a" "Sicilian: Najdorf" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6")
+ ("B90b" "Sicilian: Najdorf, 6.a4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 a4")
+ ("B90c" "Sicilian: Najdorf, 6.a4 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 a4 
e5")
+ ("B90d" "Sicilian: Najdorf, 6.f3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f3")
+ ("B90e" "Sicilian: Najdorf, Adams Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 h3")
+ ("B90f" "Sicilian: Najdorf, Fischer-Sozin Attack" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bc4")
+ ("B90g" "Sicilian: Najdorf, 6.Be3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3")
+ ("B90h" "Sicilian: Najdorf, 6.Be3 Ng4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Be3 Ng4")
+ ("B90h" "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Be3 Ng4 Bg5")
+ ("B90i" "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5 h6 8.Bh4 g5 9.Bg3 Bg7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 Ng4 Bg5 h6 Bh4 g5 Bg3 Bg7")
+ ("B90j" "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5 h6 8.Bh4 g5 9.Bg3 Bg7 10.Be2" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 Ng4 Bg5 h6 Bh4 g5 Bg3 Bg7 Be2")
+ ("B90j" "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5 h6 8.Bh4 g5 9.Bg3 Bg7 10.Be2 h5" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 Ng4 Bg5 h6 Bh4 g5 Bg3 Bg7 Be2 h5")
+ ("B90k" "Sicilian: Najdorf, 6.Be3 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Be3 e5")
+ ("B90l" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Be3 e5 Nb3")
+ ("B90m" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.Qd2" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 Qd2")
+ ("B90n" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3")
+ ("B90o" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Be7")
+ ("B90o" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Be7 Qd2")
+ ("B90p" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 Nbd7" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Be7 Qd2 Nbd7")
+ ("B90q" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 O-O" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Be7 Qd2 O-O")
+ ("B90r" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Nbd7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Nbd7")
+ ("B90s" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Nbd7 Qd2")
+ ("B90t" "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 b5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be3 e5 Nb3 Be6 f3 Nbd7 Qd2 b5")
+ ("B91a" "Sicilian: Najdorf, 6.g3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 g3")
+ ("B91b" "Sicilian: Najdorf, 6.g3 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 g3 
b5")
+ ("B91c" "Sicilian: Najdorf, 6.g3 g6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 g3 
g6")
+ ("B91d" "Sicilian: Najdorf, 6.g3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
g3 Nc6")
+ ("B91e" "Sicilian: Najdorf, 6.g3 Bg4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
g3 Bg4")
+ ("B91f" "Sicilian: Najdorf, 6.g3 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 g3 
e5")
+ ("B91g" "Sicilian: Najdorf, 6.g3 e5 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 g3 e5 Nb3")
+ ("B91h" "Sicilian: Najdorf, 6.g3 e5 7.Nb3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 g3 e5 Nb3 Be7")
+ ("B91i" "Sicilian: Najdorf, 6.g3 e5 7.Nde2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 g3 e5 Nde2")
+ ("B91j" "Sicilian: Najdorf, 6.g3 e5 7.Nde2 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 g3 e5 Nde2 b5")
+ ("B91k" "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 g3 e5 Nde2 Nbd7")
+ ("B91l" "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 g3 e5 Nde2 Be7")
+ ("B91m" "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7 8.Bg2 Nbd7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 g3 e5 Nde2 Be7 Bg2 Nbd7")
+ ("B91n" "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7 8.Bg2 O-O" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 g3 e5 Nde2 Be7 Bg2 O-O")
+ ("B92a" "Sicilian: Najdorf, 6.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2")
+ ("B92b" "Sicilian: Najdorf, 6.Be2 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Be2 Nbd7")
+ ("B92c" "Sicilian: Najdorf, 6.Be2 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Be2 e5")
+ ("B92d" "Sicilian: Najdorf, 6.Be2 e5 7.Nf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Be2 e5 Nf3")
+ ("B92e" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Be2 e5 Nb3")
+ ("B92f" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Be2 e5 Nb3 Be7")
+ ("B92g" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.Be3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 Be3")
+ ("B92g" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.Be3 Be6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 Be3 Be6")
+ ("B92h" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O")
+ ("B92h" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O Be6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O Be6")
+ ("B92i" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O Be6 9.f4" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O Be6 f4")
+ ("B92j" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O")
+ ("B92k" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Be3")
+ ("B92k" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Be3 Be6")
+ ("B92l" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.a4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Be3 Be6 a4")
+ ("B92m" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.Nd5" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Be3 Be6 Nd5")
+ ("B92n" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.Qd2" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Be3 Be6 Qd2")
+ ("B92o" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Kh1")
+ ("B92p" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Be6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Kh1 Be6")
+ ("B92q" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Nc6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Kh1 Nc6")
+ ("B92r" "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Qc7" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Be2 e5 Nb3 Be7 O-O O-O Kh1 Qc7")
+ ("B93a" "Sicilian: Najdorf, 6.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4")
+ ("B93b" "Sicilian: Najdorf, 6.f4 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
f4 Nc6")
+ ("B93c" "Sicilian: Najdorf, 6.f4 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
f4 Nbd7")
+ ("B93d" "Sicilian: Najdorf, 6.f4 Nbd7 7.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 f4 Nbd7 Be2")
+ ("B93e" "Sicilian: Najdorf, 6.f4 Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
f4 Qc7")
+ ("B93f" "Sicilian: Najdorf, 6.f4 Qc7 7.Bd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 f4 Qc7 Bd3")
+ ("B93g" "Sicilian: Najdorf, 6.f4 Qc7 7.Bd3 g6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 f4 Qc7 Bd3 g6")
+ ("B93h" "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 f4 Qc7 Nf3")
+ ("B93i" "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 f4 Qc7 Nf3 Nbd7")
+ ("B93j" "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3 Nbd7 8.Bd3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 f4 Qc7 Nf3 Nbd7 Bd3")
+ ("B93k" "Sicilian: Najdorf, 6.f4 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 
e5")
+ ("B93k" "Sicilian: Najdorf, 6.f4 e5 7.Nf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 f4 e5 Nf3")
+ ("B93l" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 f4 e5 Nf3 Qc7")
+ ("B93m" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Qc7 8.a4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Qc7 a4")
+ ("B93n" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 f4 e5 Nf3 Nbd7")
+ ("B93o" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.Bd3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 Bd3")
+ ("B93p" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4")
+ ("B93q" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Qc7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Qc7")
+ ("B93r" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7")
+ ("B93r" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bc4" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7 Bc4")
+ ("B93s" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7 Bd3")
+ ("B93t" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3 O-O 10.O-O Nc5" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7 Bd3 O-O O-O Nc5")
+ ("B93u" "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3 O-O 10.O-O 
exf4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 f4 e5 Nf3 Nbd7 a4 Be7 Bd3 O-O O-O 
exf4")
+ ("B94a" "Sicilian: Najdorf, 6.Bg5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5")
+ ("B94b" "Sicilian: Najdorf, 6.Bg5 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 b5")
+ ("B94c" "Sicilian: Najdorf, 6.Bg5 e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e5")
+ ("B94d" "Sicilian: Najdorf, 6.Bg5 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 Nbd7")
+ ("B94e" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 Nbd7 f4")
+ ("B94f" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 Nbd7 Bc4")
+ ("B94g" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 e6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 Nbd7 Bc4 e6")
+ ("B94h" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 e6 8.O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 Nbd7 Bc4 e6 O-O")
+ ("B94i" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 Qa5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 Nbd7 Bc4 Qa5")
+ ("B94j" "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 Qa5 8.Qd2 e6 9.O-O-O" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 Nbd7 Bc4 Qa5 Qd2 e6 O-O-O")
+ ("B95a" "Sicilian: Najdorf, 6...e6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 
e6")
+ ("B95b" "Sicilian: Najdorf, 6...e6 7.Bd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Bd3")
+ ("B95c" "Sicilian: Najdorf, 6...e6 7.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Be2")
+ ("B95d" "Sicilian: Najdorf, 6...e6 7.Qe2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Qe2")
+ ("B95e" "Sicilian: Najdorf, 6...e6 7.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Qd2")
+ ("B95f" "Sicilian: Najdorf, 6...e6 7.Qd2 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 Qd2 Be7")
+ ("B95g" "Sicilian: Najdorf, 6...e6 7.Qd2 Be7 8.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 Qd2 Be7 O-O-O")
+ ("B95h" "Sicilian: Najdorf, 6...e6 7.Qd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Qd3")
+ ("B95i" "Sicilian: Najdorf, 6...e6 7.Qd3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 Qd3 Nc6")
+ ("B95j" "Sicilian: Najdorf, 6...e6 7.Qf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 Qf3")
+ ("B95k" "Sicilian: Najdorf, 6...e6 7.Qf3 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 Qf3 Nbd7")
+ ("B95l" "Sicilian: Najdorf, 6...e6 7.Qf3 Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 Qf3 Be7")
+ ("B95m" "Sicilian: Najdorf, 6...e6 7.Qf3 Be7 8.O-O-O Nbd7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 Qf3 Be7 O-O-O Nbd7")
+ ("B95n" "Sicilian: Najdorf, 6...e6 7.Qf3 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 Qf3 h6")
+ ("B96a" "Sicilian: Najdorf, 7.f4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 
e6 f4")
+ ("B96b" "Sicilian: Najdorf, 7.f4 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 h6")
+ ("B96b" "Sicilian: Najdorf, Delayed Poisoned Pawn" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 h6 Bh4 Qb6")
+ ("B96c" "Sicilian: Najdorf, 7.f4 Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Nc6")
+ ("B96c" "Sicilian: Najdorf, 7.f4 Nc6 8.e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 f4 Nc6 e5")
+ ("B96d" "Sicilian: Najdorf, 7.f4 Nc6 8.Nxc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Nc6 Nxc6")
+ ("B96e" "Sicilian: Najdorf, 7.f4 Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Bd7")
+ ("B96f" "Sicilian: Najdorf, 7.f4 Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Qc7")
+ ("B96f" "Sicilian: Najdorf, 7.f4 Qc7 8.Bxf6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Qc7 Bxf6")
+ ("B96g" "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Qc7 Qf3")
+ ("B96h" "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Qc7 Qf3 b5")
+ ("B96h" "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3 b5 9.f5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qc7 Qf3 b5 f5")
+ ("B96h" "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3 b5 9.O-O-O" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qc7 Qf3 b5 O-O-O")
+ ("B96h" "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3 b5 9.Bxf6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qc7 Qf3 b5 Bxf6")
+ ("B96i" "Sicilian: Najdorf, 7.f4 Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Nbd7")
+ ("B96i" "Sicilian: Najdorf, 7.f4 Nbd7 8.Bc4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Nbd7 Bc4")
+ ("B96i" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qe2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Nbd7 Qe2")
+ ("B96i" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qe2 Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 Qe2 Qc7")
+ ("B96j" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Nbd7 Qf3")
+ ("B96j" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 Qf3 Qc7")
+ ("B96k" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 Qf3 Qc7 O-O-O b5")
+ ("B96l" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5 10.Bd3" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 Qf3 Qc7 O-O-O b5 Bd3")
+ ("B96m" "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5 10.e5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Nbd7 Qf3 Qc7 O-O-O b5 e5")
+ ("B96n" "Sicilian: Najdorf, Polugaevsky Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 b5")
+ ("B96n" "Sicilian: Najdorf, Polugaevsky, 8.e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 b5 e5")
+ ("B96n" "Sicilian: Najdorf, Polugaevsky, 9.fxe5 Qc7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7")
+ ("B96o" "Sicilian: Najdorf, Polugaevsky, 10.Nf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Nf3")
+ ("B96p" "Sicilian: Najdorf, Polugaevsky, 10.Bxb5+" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Bxb5+")
+ ("B96q" "Sicilian: Najdorf, Polugaevsky, 10.exf6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 exf6")
+ ("B96r" "Sicilian: Najdorf, Polugaevsky, 10.exf6 Qe5+ 11.Be2" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 exf6 Qe5+ Be2")
+ ("B96s" "Sicilian: Najdorf, Polugaevsky, 10.exf6 Qe5+ 11.Be2 Qxg5 12.Qd3" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 exf6 Qe5+ Be2 
Qxg5 Qd3")
+ ("B96t" "Sicilian: Najdorf, Polugaevsky, 10.Qe2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Qe2")
+ ("B96u" "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Nc6" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Qe2 Nfd7 O-O-O Nc6")
+ ("B96v" "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Bb7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Qe2 Nfd7 O-O-O Bb7")
+ ("B96w" "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Bb7 12.Qg4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Qe2 Nfd7 O-O-O 
Bb7 Qg4")
+ ("B96w" "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Bb7 12.Qg4 
Qxe5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 b5 e5 dxe5 fxe5 Qc7 Qe2 
Nfd7 O-O-O Bb7 Qg4 Qxe5")
+ ("B97a" "Sicilian: Najdorf, Poisoned Pawn" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 f4 Qb6")
+ ("B97b" "Sicilian: Najdorf, Poisoned Pawn, 8.Bxf6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Bxf6")
+ ("B97c" "Sicilian: Najdorf, Poisoned Pawn, 8.a3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 a3")
+ ("B97d" "Sicilian: Najdorf, Poisoned Pawn, 8.Qd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd3")
+ ("B97e" "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Nb3")
+ ("B97f" "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Be7" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Nb3 Be7")
+ ("B97g" "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Nbd7 9.Qf3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Nb3 Nbd7 Qf3")
+ ("B97h" "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Nbd7 9.Qf3 Be7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Nb3 Nbd7 Qf3 Be7")
+ ("B97i" "Sicilian: Najdorf, Poisoned Pawn, 8.Qd2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2")
+ ("B97i" "Sicilian: Najdorf, Poisoned Pawn Accepted" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2")
+ ("B97j" "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Nb3")
+ ("B97j" "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3 Nc6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Nb3 Nc6")
+ ("B97k" "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3 Qa3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Nb3 Qa3")
+ ("B97l" "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3 Qa3 10.Bxf6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Nb3 Qa3 Bxf6")
+ ("B97m" "Sicilian: Najdorf, Poisoned Pawn, 9.Rb1" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1")
+ ("B97m" "Sicilian: Najdorf, Poisoned Pawn, 9.Rb1 Qa3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3")
+ ("B97n" "Sicilian: Najdorf, Poisoned Pawn, 10.Be2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Be2")
+ ("B97n" "Sicilian: Najdorf, Poisoned Pawn, 10.Be2 Be7 11.O-O" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Be2 Be7 O-O")
+ ("B97n" "Sicilian: Najdorf, Poisoned Pawn, 10.Be2 Be7 11.O-O Nbd7" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Be2 Be7 O-O Nbd7")
+ ("B97o" "Sicilian: Najdorf, Poisoned Pawn, 10.Bxf6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Bxf6")
+ ("B97o" "Sicilian: Najdorf, Poisoned Pawn, 10.Bxf6 gxf6 11.Be2 Nc6" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Bxf6 gxf6 Be2 
Nc6")
+ ("B97o" "Sicilian: Najdorf, Poisoned Pawn, 10.Bxf6 gxf6 11.Be2 Bg7" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 Bxf6 gxf6 Be2 
Bg7")
+ ("B97p" "Sicilian: Najdorf, Poisoned Pawn, 10.e5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 e5")
+ ("B97p" "Sicilian: Najdorf, Poisoned Pawn, 10.e5 dxe5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 e5 dxe5")
+ ("B97p" "Sicilian: Najdorf, Poisoned Pawn, 10.e5 dxe5 11.fxe5 Nfd7 12.Bc4" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 e5 dxe5 
fxe5 Nfd7 Bc4")
+ ("B97p" "Sicilian: Najdorf, Poisoned Pawn, 10.e5 dxe5 11.fxe5 Nfd7 12.Bc4 
Bb4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 e5 
dxe5 fxe5 Nfd7 Bc4 Bb4")
+ ("B97q" "Sicilian: Najdorf, Poisoned Pawn, 10.f5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5")
+ ("B97q" "Sicilian: Najdorf, Poisoned Pawn, 10.f5 Nc6" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6")
+ ("B97r" "Sicilian: Najdorf, Poisoned Pawn, Main Line" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 fxe6 Nxc6 bxc6")
+ ("B97s" "Sicilian: Najdorf, Poisoned Pawn, Main Line, Timman's 13.Be2" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 fxe6 
Nxc6 bxc6 Be2")
+ ("B97t" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 fxe6 Nxc6 bxc6 
e5")
+ ("B97t" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 Nd5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 fxe6 Nxc6 
bxc6 e5 Nd5")
+ ("B97u" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5" "e4 c5 Nf3 
d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 fxe6 Nxc6 
bxc6 e5 dxe5")
+ ("B97u" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5: 15.Ne4" "e4 
c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 fxe6 
fxe6 Nxc6 bxc6 e5 dxe5 Bxf6 gxf6 Ne4")
+ ("B97v" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5: 15.Ne4 
Qxa2" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 
Nc6 fxe6 fxe6 Nxc6 bxc6 e5 dxe5 Bxf6 gxf6 Ne4 Qxa2")
+ ("B97w" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5: 15.Ne4 Be7" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 
fxe6 fxe6 Nxc6 bxc6 e5 dxe5 Bxf6 gxf6 Ne4 Be7")
+ ("B97x" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5 with 18.c4" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 f5 Nc6 
fxe6 fxe6 Nxc6 bxc6 e5 dxe5 Bxf6 gxf6 Ne4 Be7 Be2 h5 Rb3 Qa4 c4")
+ ("B97y" "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5 with 
18.Nxf6+" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Qb6 Qd2 Qxb2 Rb1 Qa3 
f5 Nc6 fxe6 fxe6 Nxc6 bxc6 e5 dxe5 Bxf6 gxf6 Ne4 Be7 Be2 h5 Rb3 Qa4 Nxf6+")
+ ("B98a" "Sicilian: Najdorf, 7...Be7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Be7")
+ ("B98b" "Sicilian: Najdorf, 7...Be7 8.Qf3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 
a6 Bg5 e6 f4 Be7 Qf3")
+ ("B98c" "Sicilian: Najdorf, Danner Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qa5")
+ ("B98d" "Sicilian: Najdorf, Danner, 9.O-O-O Bd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qa5 O-O-O Bd7")
+ ("B98e" "Sicilian: Najdorf, Danner, 9.O-O-O Bd7 10.e5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qa5 O-O-O Bd7 e5")
+ ("B98f" "Sicilian: Najdorf, 7...Be7 8.Qf3 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6")
+ ("B98g" "Sicilian: Najdorf, Browne Variation" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 Qc7")
+ ("B98h" "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 Qc7 O-O-O Nbd7")
+ ("B98i" "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7 11.Qg3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 Qc7 O-O-O Nbd7 Qg3")
+ ("B98j" "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7 11.Be2" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 Qc7 O-O-O Nbd7 Be2")
+ ("B98k" "Sicilian: Najdorf, Gothenburg (Argentine) Variation" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 g5")
+ ("B98l" "Sicilian: Najdorf, Gothenburg, 11.Nxe6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 g5 fxg5 Nfd7 Nxe6")
+ ("B98m" "Sicilian: Najdorf, Gothenburg, 11.Qh5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 h6 Bh4 g5 fxg5 Nfd7 Qh5")
+ ("B98n" "Sicilian: Najdorf, 8...Qc7" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Be7 Qf3 Qc7")
+ ("B98o" "Sicilian: Najdorf, 8...Qc7 9.O-O-O Nc6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nc6")
+ ("B99a" "Sicilian: Najdorf, Main Line" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 
Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7")
+ ("B99b" "Sicilian: Najdorf, Main Line, 10.Qg3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Qg3")
+ ("B99c" "Sicilian: Najdorf, Main Line, Keres Variation" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Be2")
+ ("B99c" "Sicilian: Najdorf, Main Line, Keres 10...b5 11.Bxf6 Nxf6 12.e5 Bb7" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Be2 b5 
Bxf6 Nxf6 e5 Bb7")
+ ("B99d" "Sicilian: Najdorf, Main Line, Keres, Queen Sacrifice Line" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Be2 b5 Bxf6 
Nxf6 e5 Bb7 exf6")
+ ("B99e" "Sicilian: Najdorf, Main Line, Keres, 13.Qg3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Be2 b5 Bxf6 Nxf6 e5 Bb7 Qg3")
+ ("B99e" "Sicilian: Najdorf, Main Line, Keres, 13.Qg3 dxe5 14.fxe5 Nd7 
15.Bxb5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 
Be2 b5 Bxf6 Nxf6 e5 Bb7 Qg3 dxe5 fxe5 Nd7 Bxb5")
+ ("B99f" "Sicilian: Najdorf, Main Line, 10.Bd3" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3")
+ ("B99f" "Sicilian: Najdorf, Main Line, 10.Bd3 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 h6")
+ ("B99g" "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Qh3" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 h6 Qh3")
+ ("B99h" "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Bh4" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 h6 Bh4")
+ ("B99h" "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Bh4 g5" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 h6 Bh4 g5")
+ ("B99i" "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Bh4 g5 12.fxg5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 h6 Bh4 g5 
fxg5")
+ ("B99j" "Sicilian: Najdorf, Main Line, 10.Bd3 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 b5")
+ ("B99j" "Sicilian: Najdorf, Main Line, 10.Bd3 b5 11.Rhe1 Bb7" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 b5 Rhe1 Bb7")
+ ("B99k" "Sicilian: Najdorf, Main Line, 10.Bd3 b5 11.Rhe1 Bb7 12.Nd5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 b5 Rhe1 Bb7 
Nd5")
+ ("B99l" "Sicilian: Najdorf, Main Line, 10.Bd3 b5 11.Rhe1 Bb7 12.Qg3" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 Bd3 b5 Rhe1 Bb7 
Qg3")
+ ("B99m" "Sicilian: Najdorf, Main Line, 10.g4" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 
Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4")
+ ("B99m" "Sicilian: Najdorf, Main Line, 10.g4 h6" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 h6")
+ ("B99n" "Sicilian: Najdorf, Main Line, 10.g4 b5" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 
Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5")
+ ("B99n" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bd3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bd3")
+ ("B99n" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bd3 Bb7" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bd3 Bb7")
+ ("B99o" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.a3" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 a3")
+ ("B99p" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6")
+ ("B99q" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 gxf6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 gxf6")
+ ("B99r" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 Nxf6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6")
+ ("B99r" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 Nxf6 12.g5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 
g5")
+ ("B99r" "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 Nxf6 12.g5 Nd7 13.a3" 
"e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 
Bxf6 Nxf6 g5 Nd7 a3")
+ ("B99s" "Sicilian: Najdorf, Modern Main Line 13.f5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 g5 Nd7 f5")
+ ("B99t" "Sicilian: Najdorf, Modern Main Line 13.f5 Bxg5+" "e4 c5 Nf3 d6 d4 
cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 g5 Nd7 f5 
Bxg5+")
+ ("B99u" "Sicilian: Najdorf, Modern Main Line 13.f5 Bxg5+ 14.Kb1 Ne5" "e4 c5 
Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 
g5 Nd7 f5 Bxg5+ Kb1 Ne5")
+ ("B99v" "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5" "e4 c5 Nf3 d6 d4 cxd4 
Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 g5 Nd7 f5 Nc5")
+ ("B99w" "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.h4" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 g5 Nd7 
f5 Nc5 h4")
+ ("B99x" "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.f6" "e4 c5 Nf3 d6 
d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 g4 b5 Bxf6 Nxf6 g5 Nd7 
f5 Nc5 f6")
+ ("B99y" "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.f6: Perenyi's 
16.Rg1" "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nf6 Nc3 a6 Bg5 e6 f4 Be7 Qf3 Qc7 O-O-O Nbd7 
g4 b5 Bxf6 Nxf6 g5 Nd7 f5 Nc5 f6 gxf6 gxf6 Bf8 Rg1")
+ ("C00a" "French" "e4 e6")
+ ("C00a" "French: Bird Variation" "e4 e6 Bb5")
+ ("C00b" "French: Reti (Spielmann) Variation" "e4 e6 b3")
+ ("C00c" "French: La Bourdonnais Variation" "e4 e6 f4")
+ ("C00d" "French: Steinitz Attack" "e4 e6 e5")
+ ("C00e" "French: Steiner (Anglo-French) Variation" "e4 e6 c4")
+ ("C00e" "French: Steiner (Anglo-French) Variation" "e4 e6 c4 d5")
+ ("C00e" "French: Orthoschnapp Gambit" "e4 e6 c4 d5 cxd5 exd5 Qb3")
+ ("C00f" "French: 2.Nc3" "e4 e6 Nc3")
+ ("C00f" "French: 2.Nc3 d5" "e4 e6 Nc3 d5")
+ ("C00f" "French: Pelikan Variation" "e4 e6 Nc3 d5 f4")
+ ("C00g" "French: Chigorin Variation" "e4 e6 Qe2")
+ ("C00h" "French: Chigorin, 2...c5" "e4 e6 Qe2 c5")
+ ("C00i" "French: Chigorin, 2...c5 3.Nf3" "e4 e6 Qe2 c5 Nf3")
+ ("C00j" "French: 2.Nf3" "e4 e6 Nf3")
+ ("C00j" "French: 2.Nf3 d5" "e4 e6 Nf3 d5")
+ ("C00j" "French: 2.Nf3 d5 3.e5" "e4 e6 Nf3 d5 e5")
+ ("C00j" "French: 2.Nf3 d5 3.e5 c5" "e4 e6 Nf3 d5 e5 c5")
+ ("C00k" "French: Wing Gambit" "e4 e6 Nf3 d5 e5 c5 b4")
+ ("C00l" "French: Two Knights Variation" "e4 e6 Nf3 d5 Nc3")
+ ("C00m" "French: KIA 2.d3" "e4 e6 d3")
+ ("C00m" "French: KIA 2.d3 d5" "e4 e6 d3 d5")
+ ("C00n" "French: KIA 2.d3 d5 3.Qe2" "e4 e6 d3 d5 Qe2")
+ ("C00o" "French: KIA 2.d3 d5 3.Qe2 Nf6" "e4 e6 d3 d5 Qe2 Nf6")
+ ("C00p" "French: KIA 2.d3 d5 3.Nd2" "e4 e6 d3 d5 Nd2")
+ ("C00q" "French: KIA 2.d3 d5 3.Nd2 c5" "e4 e6 d3 d5 Nd2 c5")
+ ("C00r" "French: KIA 2.d3 d5 3.Nd2 Nf6" "e4 e6 d3 d5 Nd2 Nf6")
+ ("C00s" "French: KIA, Reversed Philidor" "e4 e6 d3 d5 Nd2 Nf6 Ngf3")
+ ("C00t" "French: KIA, Reversed Philidor, 4...b6" "e4 e6 d3 d5 Nd2 Nf6 Ngf3 
b6")
+ ("C00u" "French: KIA, Reversed Philidor, 4...Nc6" "e4 e6 d3 d5 Nd2 Nf6 Ngf3 
Nc6")
+ ("C00v" "French: KIA, Reversed Philidor, 4...Nc6 5.c3" "e4 e6 d3 d5 Nd2 Nf6 
Ngf3 Nc6 c3")
+ ("C00w" "French: 2.d4" "e4 e6 d4")
+ ("C00w" "French: St. George" "e4 e6 d4 a6")
+ ("C00w" "French: Franco-Benoni" "e4 e6 d4 c5")
+ ("C00x" "French: 2.d4 d5" "e4 e6 d4 d5")
+ ("C00x" "French: Alapin-Diemer Gambit (ADG)" "e4 e6 d4 d5 Be3")
+ ("C00y" "French: Schlechter" "e4 e6 d4 d5 Bd3")
+ ("C01a" "French: Exchange" "e4 e6 d4 d5 exd5")
+ ("C01a" "French: Exchange, 3...Qxd5" "e4 e6 d4 d5 exd5 Qxd5")
+ ("C01b" "French: Exchange" "e4 e6 d4 d5 exd5 exd5")
+ ("C01c" "French: Exchange, 4.c4" "e4 e6 d4 d5 exd5 exd5 c4")
+ ("C01c" "French: Exchange, 4.c4 c6" "e4 e6 d4 d5 exd5 exd5 c4 c6")
+ ("C01d" "French: Exchange, 4.c4 Nf6" "e4 e6 d4 d5 exd5 exd5 c4 Nf6")
+ ("C01d" "French: Exchange, 4.c4 Nf6" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 Nf3")
+ ("C01e" "French: Exchange, 4.c4 Nf6 5.Nc3" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 Nc3")
+ ("C01e" "French: Exchange, 4.c4 Nf6 5.Nc3 c6" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 
Nc3 c6")
+ ("C01e" "French: Exchange, 4.c4 Nf6 5.Nc3 Bb4" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 
Nc3 Bb4")
+ ("C01e" "French: Exchange, 4.c4 Nf6 5.Nc3 Bb4" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 
Nc3 Bb4 Nf3")
+ ("C01f" "French: Exchange, 4.c4 Nf6 5.Nc3 Be7" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 
Nc3 Be7")
+ ("C01f" "French: Exchange, 4.c4 Nf6 5.Nc3 Be7" "e4 e6 d4 d5 exd5 exd5 c4 Nf6 
Nc3 Be7 Nf3")
+ ("C01g" "French: Exchange, 4.Bf4" "e4 e6 d4 d5 exd5 exd5 Bf4")
+ ("C01h" "French: Exchange, 4.Bd3" "e4 e6 d4 d5 exd5 exd5 Bd3")
+ ("C01i" "French: Exchange, 4.Bd3 Nc6" "e4 e6 d4 d5 exd5 exd5 Bd3 Nc6")
+ ("C01j" "French: Exchange, 4.Bd3 Bd6" "e4 e6 d4 d5 exd5 exd5 Bd3 Bd6")
+ ("C01k" "French: Exchange, 4.Nf3" "e4 e6 d4 d5 exd5 exd5 Nf3")
+ ("C01l" "French: Exchange, 4.Nf3 Nf6" "e4 e6 d4 d5 exd5 exd5 Nf3 Nf6")
+ ("C01m" "French: Exchange, 4.Nf3 Nf6 5.Bd3" "e4 e6 d4 d5 exd5 exd5 Nf3 Nf6 
Bd3")
+ ("C01n" "French: Exchange, 4.Nf3 Bd6" "e4 e6 d4 d5 exd5 exd5 Nf3 Bd6")
+ ("C01o" "French: Exchange, 4.Nf3 Bd6 5.Bd3" "e4 e6 d4 d5 exd5 exd5 Bd3 Bd6 
Nf3")
+ ("C01p" "French: Exchange, 4.Nf3 Bd6 5.Bd3 Nf6" "e4 e6 d4 d5 exd5 exd5 Bd3 
Bd6 Nf3 Nf6")
+ ("C01q" "French: Exchange, 4.Nf3 Bd6 5.c4" "e4 e6 d4 d5 exd5 exd5 Nf3 Bd6 c4")
+ ("C01r" "French: Exchange, 4.Nc3" "e4 e6 d4 d5 exd5 exd5 Nc3")
+ ("C01s" "French: Exchange, 4.Nc3 Nf6" "e4 e6 d4 d5 exd5 exd5 Nc3 Nf6")
+ ("C01s" "French: Exchange, 4.Nc3 Nf6 5.Nf3" "e4 e6 d4 d5 exd5 exd5 Nc3 Nf6 
Nf3")
+ ("C01t" "French: Exchange, Svenonius Variation" "e4 e6 d4 d5 exd5 exd5 Nc3 
Nf6 Bg5")
+ ("C01t" "French: Exchange, Bogoljubow Variation" "e4 e6 d4 d5 exd5 exd5 Nc3 
Nf6 Bg5 Nc6")
+ ("C01u" "French: Exchange Winawer" "e4 e6 d4 d5 exd5 exd5 Nc3 Bb4")
+ ("C01v" "French: Exchange Winawer, 5.Bd3" "e4 e6 d4 d5 exd5 exd5 Nc3 Bb4 Bd3")
+ ("C01v" "French: Exchange, Canal Attack" "e4 e6 d4 d5 exd5 exd5 Nc3 Bb4 Bd3 
Ne7 Qh5")
+ ("C01w" "French: Exchange Winawer, 5.Bd3 Nc6" "e4 e6 d4 d5 exd5 exd5 Nc3 Bb4 
Bd3 Nc6")
+ ("C02a" "French: Advance" "e4 e6 d4 d5 e5")
+ ("C02a" "French: Advance, 3...Ne7" "e4 e6 d4 d5 e5 Ne7")
+ ("C02b" "French: Advance, 3...b6" "e4 e6 d4 d5 e5 b6")
+ ("C02b" "French: Advance, 3...b6" "e4 e6 d4 d5 e5 b6 c3 Qd7")
+ ("C02c" "French: Advance, 3...c5" "e4 e6 d4 d5 e5 c5")
+ ("C02c" "French: Advance, Wing Gambit" "e4 e6 d4 d5 e5 c5 b4")
+ ("C02d" "French: Advance, Steinitz" "e4 e6 d4 d5 e5 c5 dxc5")
+ ("C02e" "French: Advance, Nimzowitsch Attack" "e4 e6 d4 d5 e5 c5 Qg4")
+ ("C02e" "French: Advance, Nimzowitsch Gambit" "e4 e6 d4 d5 e5 c5 Qg4 cxd4 
Nf3")
+ ("C02f" "French: Advance, 4.Nf3" "e4 e6 d4 d5 e5 c5 Nf3")
+ ("C02f" "French: Advance, Ruisdonk Gambit" "e4 e6 d4 d5 e5 c5 Nf3 cxd4 Bd3")
+ ("C02g" "French: Advance, 4.c3" "e4 e6 d4 d5 e5 c5 c3")
+ ("C02h" "French: Advance, 4.c3 Qb6" "e4 e6 d4 d5 e5 c5 c3 Qb6")
+ ("C02i" "French: Advance, Wade" "e4 e6 d4 d5 e5 c5 c3 Qb6 Nf3 Bd7")
+ ("C02j" "French: Advance, Wade, 6.Be2" "e4 e6 d4 d5 e5 c5 c3 Qb6 Nf3 Bd7 Be2")
+ ("C02k" "French: Advance, 4...Nc6" "e4 e6 d4 d5 e5 c5 c3 Nc6")
+ ("C02l" "French: Advance, Paulsen" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3")
+ ("C02m" "French: Advance, 5.Nf3 Nge7" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Nge7")
+ ("C02n" "French: Advance, Euwe" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Bd7")
+ ("C02o" "French: Advance, Euwe, 6.a3" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Bd7 a3")
+ ("C02p" "French: Advance, Euwe, 6.Be2" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Bd7 Be2")
+ ("C02q" "French: Advance, Euwe, 6.Be2 Nge7" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Bd7 
Be2 Nge7")
+ ("C02r" "French: Advance, 5.Nf3 Qb6" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Qb6")
+ ("C02s" "French: Advance, Milner-Barry Gambit" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 
Qb6 Bd3")
+ ("C02t" "French: Advance, 5.Nf3 Qb6 6.Be2" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Qb6 
Be2")
+ ("C02u" "French: Advance, 5.Nf3 Qb6 6.Be2 cxd4 7.cxd4" "e4 e6 d4 d5 e5 c5 c3 
Nc6 Nf3 Qb6 Be2 cxd4 cxd4")
+ ("C02v" "French: Advance, 5.Nf3 Qb6 6.a3" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 Qb6 
a3")
+ ("C02w" "French: Advance, 5.Nf3 Qb6 6.a3 Bd7" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 
Qb6 a3 Bd7")
+ ("C02x" "French: Advance, 5.Nf3 Qb6 6.a3 Nh6" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 
Qb6 a3 Nh6")
+ ("C02y" "French: Advance, 5.Nf3 Qb6 6.a3 c4" "e4 e6 d4 d5 e5 c5 c3 Nc6 Nf3 
Qb6 a3 c4")
+ ("C02z" "French: Advance, 5.Nf3 Qb6 6.a3 c4 7.Nbd2" "e4 e6 d4 d5 e5 c5 c3 Nc6 
Nf3 Qb6 a3 c4 Nbd2")
+ ("C03a" "French: Tarrasch" "e4 e6 d4 d5 Nd2")
+ ("C03a" "French: Tarrasch, 3...dxe4" "e4 e6 d4 d5 Nd2 dxe4")
+ ("C03b" "French: Tarrasch, Haberditz Variation" "e4 e6 d4 d5 Nd2 f5")
+ ("C03c" "French: Tarrasch, 3...b6" "e4 e6 d4 d5 Nd2 b6")
+ ("C03d" "French: Tarrasch, 3...a6" "e4 e6 d4 d5 Nd2 a6")
+ ("C03e" "French: Tarrasch, 3...a6 4.Ngf3" "e4 e6 d4 d5 Nd2 a6 Ngf3")
+ ("C03f" "French: Tarrasch, 3...Be7" "e4 e6 d4 d5 Nd2 Be7")
+ ("C03g" "French: Tarrasch, 3...Be7 4.Bd3" "e4 e6 d4 d5 Nd2 Be7 Bd3")
+ ("C03h" "French: Tarrasch, 3...Be7 4.Bd3 c5" "e4 e6 d4 d5 Nd2 Be7 Bd3 c5")
+ ("C03i" "French: Tarrasch, 3...Be7 4.Bd3 c5 5.dxc5 Nf6" "e4 e6 d4 d5 Nd2 Be7 
Bd3 c5 dxc5 Nf6")
+ ("C03j" "French: Tarrasch, 3...Be7 4.Ngf3" "e4 e6 d4 d5 Nd2 Be7 Ngf3")
+ ("C03j" "French: Tarrasch, 3...Be7 4.Ngf3 Nf6" "e4 e6 d4 d5 Nd2 Be7 Ngf3 Nf6")
+ ("C03k" "French: Tarrasch, 3...Be7 4.Ngf3 Nf6 5.Bd3" "e4 e6 d4 d5 Nd2 Be7 
Ngf3 Nf6 Bd3")
+ ("C03l" "French: Tarrasch, Guimard Variation" "e4 e6 d4 d5 Nd2 Nc6")
+ ("C03m" "French: Tarrasch, Guimard, 4.c3" "e4 e6 d4 d5 Nd2 Nc6 c3")
+ ("C03n" "French: Tarrasch, Guimard, 4.c3 e5" "e4 e6 d4 d5 Nd2 Nc6 c3 e5")
+ ("C03o" "French: Tarrasch, Guimard, 4.Ngf3" "e4 e6 d4 d5 Nd2 Nc6 Ngf3")
+ ("C04a" "French: Tarrasch, Guimard, 4.Ngf3 Nf6" "e4 e6 d4 d5 Nd2 Nc6 Ngf3 
Nf6")
+ ("C04b" "French: Tarrasch, Guimard, 4.Ngf3 Nf6 5.e5" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5")
+ ("C04c" "French: Tarrasch, Guimard, Main Line" "e4 e6 d4 d5 Nd2 Nc6 Ngf3 Nf6 
e5 Nd7")
+ ("C04d" "French: Tarrasch, Guimard, Main Line, 6.c3" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 c3")
+ ("C04e" "French: Tarrasch, Guimard, Main Line, 6.Bb5" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 Bb5")
+ ("C04f" "French: Tarrasch, Guimard, Main Line, 6.Be2" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 Be2")
+ ("C04g" "French: Tarrasch, Guimard, Main Line, 6.Be2 f6" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 Be2 f6")
+ ("C04h" "French: Tarrasch, Guimard, Main Line, 6.Nb3" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 Nb3")
+ ("C04i" "French: Tarrasch, Guimard, Main Line, 6.Nb3 a5" "e4 e6 d4 d5 Nd2 Nc6 
Ngf3 Nf6 e5 Nd7 Nb3 a5")
+ ("C04j" "French: Tarrasch, Guimard, Main Line, 6.Nb3 Be7" "e4 e6 d4 d5 Nd2 
Nc6 Ngf3 Nf6 e5 Nd7 Nb3 Be7")
+ ("C05a" "French: Tarrasch, Closed" "e4 e6 d4 d5 Nd2 Nf6")
+ ("C05b" "French: Tarrasch, Closed, 4.e5" "e4 e6 d4 d5 Nd2 Nf6 e5")
+ ("C05c" "French: Tarrasch, Closed, 4...Ne4" "e4 e6 d4 d5 Nd2 Nf6 e5 Ne4")
+ ("C05c" "French: Tarrasch, Closed, 4...Ne4 5.Nxe4" "e4 e6 d4 d5 Nd2 Nf6 e5 
Ne4 Nxe4")
+ ("C05d" "French: Tarrasch, Closed, 4...Nfd7" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7")
+ ("C05e" "French: Tarrasch, Closed, 5.f4" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 f4")
+ ("C05f" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 f4 c5 c3 Nc6")
+ ("C05g" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3" "e4 e6 d4 d5 Nd2 
Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3")
+ ("C05h" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 cxd4" "e4 e6 d4 d5 
Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 cxd4")
+ ("C05i" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6" "e4 e6 d4 d5 
Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6")
+ ("C05j" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.h4" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 h4")
+ ("C05j" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.h4" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 h4 cxd4 cxd4")
+ ("C05k" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.Ne2" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 Ne2")
+ ("C05k" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.Ne2" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 Ne2 cxd4 cxd4")
+ ("C05l" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.g3" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 g3")
+ ("C05l" "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.g3" "e4 e6 
d4 d5 Nd2 Nf6 e5 Nfd7 f4 c5 c3 Nc6 Ndf3 Qb6 g3 cxd4 cxd4")
+ ("C05m" "French: Tarrasch, Closed, 5.c3" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 c3")
+ ("C05n" "French: Tarrasch, 5.Bd3" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3")
+ ("C05o" "French: Tarrasch, Botvinnik" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 
b6")
+ ("C05p" "French: Tarrasch, Closed, 6...Nc6" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6")
+ ("C05p" "French: Tarrasch, Closed, 7.Ndf3" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6 Ndf3")
+ ("C05q" "French: Tarrasch, Closed, 7.Ndf3 Qa5" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 
Bd3 c5 c3 Nc6 Ndf3 Qa5")
+ ("C05r" "French: Tarrasch, Closed, 7.Ngf3" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6 Ngf3")
+ ("C05s" "French: Tarrasch, Closed, 7.Ngf3 Be7" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 
Bd3 c5 c3 Nc6 Ngf3 Be7")
+ ("C05t" "French: Tarrasch, Closed, 7.Ngf3 Be7 8.O-O g5" "e4 e6 d4 d5 Nd2 Nf6 
e5 Nfd7 Bd3 c5 c3 Nc6 Ngf3 Be7 O-O g5")
+ ("C05u" "French: Tarrasch, Closed, Nunn-Korchnoi Gambit" "e4 e6 d4 d5 Nd2 Nf6 
e5 Nfd7 Bd3 c5 c3 Nc6 Ngf3 Qb6 O-O")
+ ("C05v" "French: Tarrasch, Closed, 7.Ne2" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 
c3 Nc6 Ne2")
+ ("C05w" "French: Tarrasch, Closed, 7.Ne2 a5" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6 Ne2 a5")
+ ("C06a" "French: Tarrasch, Closed, Main Line" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 
Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4")
+ ("C06b" "French: Tarrasch, Closed, Leningrad" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 
Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Nb6")
+ ("C06c" "French: Tarrasch, Closed, Leningrad, 9.Nf3" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Nb6 Nf3")
+ ("C06d" "French: Tarrasch, Closed, Leningrad, 9.O-O" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Nb6 O-O")
+ ("C06e" "French: Tarrasch, Closed, Leningrad, 9.O-O a5" "e4 e6 d4 d5 Nd2 Nf6 
e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Nb6 O-O a5")
+ ("C06f" "French: Tarrasch, Closed, Leningrad, 9.O-O Bd7" "e4 e6 d4 d5 Nd2 Nf6 
e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Nb6 O-O Bd7")
+ ("C06g" "French: Tarrasch, Closed, 8...Qb6" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6 Ne2 cxd4 cxd4 Qb6")
+ ("C06h" "French: Tarrasch, Closed, 8...Qb6 9.O-O" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Qb6 O-O")
+ ("C06i" "French: Tarrasch, Closed, 8...Qb6 9.Nf3" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Qb6 Nf3")
+ ("C06j" "French: Tarrasch, Closed, 8...Qb6 9.Nf3 f6" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 Qb6 Nf3 f6")
+ ("C06k" "French: Tarrasch, Closed, 8...f6" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 
c5 c3 Nc6 Ne2 cxd4 cxd4 f6")
+ ("C06l" "French: Tarrasch, Closed, 8...f6 9.Nf4" "e4 e6 d4 d5 Nd2 Nf6 e5 Nfd7 
Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 Nf4")
+ ("C06m" "French: Tarrasch, Closed, 8...f6 9.exf6" "e4 e6 d4 d5 Nd2 Nf6 e5 
Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6")
+ ("C06n" "French: Tarrasch, Closed, 8...f6 9.exf6 Nxf6" "e4 e6 d4 d5 Nd2 Nf6 
e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6")
+ ("C06o" "French: Tarrasch, Closed, 8...f6 9.exf6 Nxf6 10.O-O Bd6 11.Nf3" "e4 
e6 d4 d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3")
+ ("C06o" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qb6" "e4 e6 d4 d5 Nd2 
Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 Qb6")
+ ("C06p" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qb6 12.Nc3" "e4 e6 d4 
d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 Qb6 
Nc3")
+ ("C06q" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qc7" "e4 e6 d4 d5 Nd2 
Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 Qc7")
+ ("C06r" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qc7 12.Bg5" "e4 e6 d4 
d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 Qc7 
Bg5")
+ ("C06s" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...O-O" "e4 e6 d4 d5 Nd2 
Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 O-O")
+ ("C06t" "French: Tarrasch, Closed, 8...f6 9.exf6, 11...O-O 12.Bf4" "e4 e6 d4 
d5 Nd2 Nf6 e5 Nfd7 Bd3 c5 c3 Nc6 Ne2 cxd4 cxd4 f6 exf6 Nxf6 O-O Bd6 Nf3 O-O 
Bf4")
+ ("C07a" "French: Tarrasch, Open" "e4 e6 d4 d5 Nd2 c5")
+ ("C07b" "French: Tarrasch, Open, 4.c3" "e4 e6 d4 d5 Nd2 c5 c3")
+ ("C07c" "French: Tarrasch, Open, 4.dxc5" "e4 e6 d4 d5 Nd2 c5 dxc5")
+ ("C07d" "French: Tarrasch, Open, 4.Ngf3" "e4 e6 d4 d5 Nd2 c5 Ngf3")
+ ("C07e" "French: Tarrasch, Open, 4.Ngf3 a6" "e4 e6 d4 d5 Nd2 c5 Ngf3 a6")
+ ("C07f" "French: Tarrasch, Open, 4.Ngf3 Nf6" "e4 e6 d4 d5 Nd2 c5 Ngf3 Nf6")
+ ("C07g" "French: Tarrasch, Open, 4.Ngf3 Nc6" "e4 e6 d4 d5 Nd2 c5 Ngf3 Nc6")
+ ("C07h" "French: Tarrasch, Open, 4.Ngf3 cxd4" "e4 e6 d4 d5 Nd2 c5 Ngf3 cxd4")
+ ("C07i" "French: Tarrasch, Open, 4.exd5" "e4 e6 d4 d5 Nd2 c5 exd5")
+ ("C07i" "French: Tarrasch, Shaposhnikov Gambit" "e4 e6 d4 d5 Nd2 c5 exd5 Nf6")
+ ("C07j" "French: Tarrasch, Open, 4.exd5 Qxd5" "e4 e6 d4 d5 Nd2 c5 exd5 Qxd5")
+ ("C07k" "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3" "e4 e6 d4 d5 Nd2 c5 exd5 
Qxd5 Ngf3")
+ ("C07l" "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4" "e4 e6 d4 d5 Nd2 c5 
exd5 Qxd5 Ngf3 cxd4")
+ ("C07m" "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4 6.Bc4" "e4 e6 d4 d5 
Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4")
+ ("C07n" "French: Tarrasch, Open, Eliskases Variation" "e4 e6 d4 d5 Nd2 c5 
exd5 Qxd5 Ngf3 cxd4 Bc4 Qd8")
+ ("C07o" "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4 6.Bc4 Qd6" "e4 e6 d4 
d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6")
+ ("C07p" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Qxd4" "e4 e6 d4 
d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Qxd4")
+ ("C07p" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Qxd4 Qxd4" "e4 e6 
d4 d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Qxd4 Qxd4")
+ ("C07q" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4" "e4 e6 d4 
d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Nxd4")
+ ("C07r" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6" "e4 e6 
d4 d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Nxd4 a6")
+ ("C07s" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6 11.c3" 
"e4 e6 d4 d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Nxd4 
a6 c3")
+ ("C07t" "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6 11.Re1" 
"e4 e6 d4 d5 Nd2 c5 exd5 Qxd5 Ngf3 cxd4 Bc4 Qd6 O-O Nf6 Nb3 Nc6 Nbxd4 Nxd4 Nxd4 
a6 Re1")
+ ("C08a" "French: Tarrasch, Open, 4.exd5 exd5" "e4 e6 d4 d5 Nd2 c5 exd5 exd5")
+ ("C08b" "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Nc6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Bb5+ Nc6")
+ ("C08c" "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Nc6 6.Qe2+" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Bb5+ Nc6 Qe2+")
+ ("C08d" "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Bb5+ Bd7")
+ ("C08e" "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7 6.Qe2+" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Bb5+ Bd7 Qe2+")
+ ("C08f" "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7 6.Qe2+ Be7" "e4 e6 d4 
d5 Nd2 c5 exd5 exd5 Bb5+ Bd7 Qe2+ Be7")
+ ("C08g" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3" "e4 e6 d4 d5 Nd2 c5 exd5 
exd5 Ngf3")
+ ("C08h" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 a6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 a6")
+ ("C08i" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 a6 6.Be2" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 a6 Be2")
+ ("C08j" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 Nf6")
+ ("C08k" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, 7.Bxd7" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nf6 Bb5+ Bd7 Bxd7+")
+ ("C08l" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, Main Line" "e4 e6 d4 
d5 Nd2 c5 exd5 exd5 Ngf3 Nf6 Bb5+ Bd7 Bxd7+ Nbd7 O-O Be7 dxc5")
+ ("C08m" "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, Main Line, 10.Nb3" 
"e4 e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 Nf6 Bb5+ Bd7 Bxd7+ Nbd7 O-O Be7 dxc5 Nxc5 
Nb3")
+ ("C09a" "French: Tarrasch, Open, 5.Ngf3 Nc6" "e4 e6 d4 d5 Nd2 c5 exd5 exd5 
Ngf3 Nc6")
+ ("C09b" "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5" "e4 e6 d4 d5 Nd2 c5 exd5 
exd5 Ngf3 Nc6 Bb5")
+ ("C09c" "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5 cxd4" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 Nc6 Bb5 cxd4")
+ ("C09d" "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5 Bd6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 Nc6 Bb5 Bd6")
+ ("C09d" "French: Tarrasch, Open, 7.O-O" "e4 e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 
Nc6 Bb5 Bd6 O-O")
+ ("C09e" "French: Tarrasch, Open, 7.dxc5" "e4 e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 
Nc6 Bb5 Bd6 dxc5")
+ ("C09f" "French: Tarrasch, Open, Main Line" "e4 e6 d4 d5 Nd2 c5 exd5 exd5 
Ngf3 Nc6 Bb5 Bd6 dxc5 Bxc5 O-O Ne7")
+ ("C09g" "French: Tarrasch, Open, Main Line, 9.c3" "e4 e6 d4 d5 Nd2 c5 exd5 
exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 c3")
+ ("C09h" "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bd6" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 c3 O-O Nb3 Bd6")
+ ("C09i" "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bb6" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 c3 O-O Nb3 Bb6")
+ ("C09j" "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bb6 11.Re1" "e4 
e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 c3 O-O Nb3 Bb6 
Re1")
+ ("C09k" "French: Tarrasch, Open, Main Line, 9.Nb3" "e4 e6 d4 d5 Nd2 c5 exd5 
exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3")
+ ("C09k" "French: Tarrasch, Open, Main Line, 9.Nb3 Bb6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bb6")
+ ("C09l" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6" "e4 e6 d4 d5 Nd2 c5 
exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6")
+ ("C09m" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Nbd4" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6 Nbd4")
+ ("C09n" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Bg5" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6 Bg5")
+ ("C09o" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1" "e4 e6 d4 d5 
Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6 Re1")
+ ("C09p" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1 O-O 11.Bg5" "e4 
e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6 Re1 O-O 
Bg5")
+ ("C09q" "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1 O-O 11.Bg5 Bg4" 
"e4 e6 d4 d5 Nd2 c5 exd5 exd5 Ngf3 Nc6 Bb5 Bd6 O-O Ne7 dxc5 Bxc5 Nb3 Bd6 Re1 
O-O Bg5 Bg4")
+ ("C10a" "French: 3.Nc3" "e4 e6 d4 d5 Nc3")
+ ("C10b" "French: Marshall Variation" "e4 e6 d4 d5 Nc3 c5")
+ ("C10c" "French: 3.Nc3 Nc6" "e4 e6 d4 d5 Nc3 Nc6")
+ ("C10d" "French: 3.Nc3 Nc6 4.Nf3 Nf6" "e4 e6 d4 d5 Nc3 Nc6 Nf3 Nf6")
+ ("C10e" "French: 3.Nc3 Be7" "e4 e6 d4 d5 Nc3 Be7")
+ ("C10f" "French: Rubinstein" "e4 e6 d4 d5 Nc3 dxe4")
+ ("C10f" "French: Rubinstein" "e4 e6 d4 d5 Nc3 dxe4 Nxe4")
+ ("C10f" "French: Rubinstein, Ellis Gambit" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 e5")
+ ("C10f" "French: Rubinstein, Frere (Becker) Variation" "e4 e6 d4 d5 Nc3 dxe4 
Nxe4 Qd5")
+ ("C10g" "French: Rubinstein, 4...Nf6" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nf6")
+ ("C10h" "French: Rubinstein, 4...Nd7" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7")
+ ("C10i" "French: Rubinstein, 5.Nf3 Be7" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 
Be7")
+ ("C10j" "French: Rubinstein, 5.Nf3 Ngf6" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 
Ngf6")
+ ("C10k" "French: Rubinstein, 5.Nf3 Ngf6 6.Bd3" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 
Nf3 Ngf6 Bd3")
+ ("C10l" "French: Rubinstein, 5.Nf3 Ngf6 6.Nxf6+" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 
Nd7 Nf3 Ngf6 Nxf6+")
+ ("C10m" "French: Rubinstein, Capablanca" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 
Ngf6 Nxf6+ Nxf6 Ne5")
+ ("C10n" "French: Rubinstein, 7.Bd3" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 Ngf6 
Nxf6+ Nxf6 Bd3")
+ ("C10o" "French: Rubinstein, 7.Bd3 c5" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 
Ngf6 Nxf6+ Nxf6 Bd3 c5")
+ ("C10p" "French: Rubinstein, 7.Bd3 c5 8.dxc5" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 
Nf3 Ngf6 Nxf6+ Nxf6 Bd3 c5 dxc5")
+ ("C10q" "French: Rubinstein, 7.Bg5" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Nd7 Nf3 Ngf6 
Nxf6+ Nxf6 Bg5")
+ ("C10r" "French: Rubinstein, 4...Bd7" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Bd7")
+ ("C10s" "French: Rubinstein, 4...Bd7 5.Nf3" "e4 e6 d4 d5 Nc3 dxe4 Nxe4 Bd7 
Nf3")
+ ("C10t" "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3" "e4 e6 d4 d5 Nc3 dxe4 
Nxe4 Bd7 Nf3 Bc6 Bd3")
+ ("C10u" "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7" "e4 e6 d4 d5 Nc3 
dxe4 Nxe4 Bd7 Nf3 Bc6 Bd3 Nd7")
+ ("C10v" "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O" "e4 e6 d4 d5 
Nc3 dxe4 Nxe4 Bd7 Nf3 Bc6 Bd3 Nd7 O-O")
+ ("C10w" "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O Ngf6" "e4 e6 
d4 d5 Nc3 dxe4 Nxe4 Bd7 Nf3 Bc6 Bd3 Nd7 O-O Ngf6")
+ ("C10x" "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O Ngf6 8.Ng3" 
"e4 e6 d4 d5 Nc3 dxe4 Nxe4 Bd7 Nf3 Bc6 Bd3 Nd7 O-O Ngf6 Ng3")
+ ("C11a" "French: 3.Nc3 Nf6" "e4 e6 d4 d5 Nc3 Nf6")
+ ("C11a" "French: Henneberger Variation" "e4 e6 d4 d5 Nc3 Nf6 Be3")
+ ("C11a" "French: 3.Nc3 Nf6 4.exd5" "e4 e6 d4 d5 Nc3 Nf6 exd5")
+ ("C11b" "French: Swiss Variation" "e4 e6 d4 d5 Nc3 Nf6 Bd3")
+ ("C11c" "French: Steinitz" "e4 e6 d4 d5 Nc3 Nf6 e5")
+ ("C11c" "French: Steinitz, Gledhill Attack" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 Qg4")
+ ("C11d" "French: Steinitz, 5.Nf3" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 Nf3")
+ ("C11d" "French: Steinitz, 5.Nf3 c5" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 Nf3 c5")
+ ("C11e" "French: Steinitz, 5.Nf3 c5 6.dxc5" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 Nf3 
c5 dxc5")
+ ("C11f" "French: Steinitz, 5.f4" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4")
+ ("C11f" "French: Steinitz, 5.f4 c5" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 c5")
+ ("C11g" "French: Steinitz, 6.dxc5" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 c5 dxc5")
+ ("C11g" "French: Steinitz, Bradford Attack" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 
c5 dxc5 Bxc5 Qg4")
+ ("C11g" "French: Steinitz, 6.dxc5 Nc6" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 c5 
dxc5 Nc6")
+ ("C11g" "French: Steinitz, Brodsky-Jones Variation" "e4 e6 d4 d5 Nc3 Nf6 e5 
Nfd7 f4 c5 dxc5 Nc6 a3 Bxc5 Qg4 O-O Nf3 f6")
+ ("C11h" "French: Steinitz, 6.Nf3" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 f4 c5 Nf3")
+ ("C11i" "French: Steinitz, Boleslavsky Variation" "e4 e6 d4 d5 Nc3 Nf6 e5 
Nfd7 f4 c5 Nf3 Nc6 Be3")
+ ("C11j" "French: Steinitz, Boleslavsky, 7...a6" "e4 e6 d4 d5 Nc3 Nf6 e5 Nfd7 
f4 c5 Nf3 Nc6 Be3 a6")
+ ("C11k" "French: Steinitz, Boleslavsky, 7...a6 8.Qd2 b5" "e4 e6 d4 d5 Nc3 Nf6 
e5 Nfd7 f4 c5 Nf3 Nc6 Be3 a6 Qd2 b5")
+ ("C11l" "French: Steinitz, Boleslavsky, 7...cxd4" "e4 e6 d4 d5 Nc3 Nf6 e5 
Nfd7 f4 c5 Nf3 Nc6 Be3 cxd4")
+ ("C11m" "French: Steinitz, Boleslavsky, 7...cxd4 8.Nxd4 Qb6" "e4 e6 d4 d5 Nc3 
Nf6 e5 Nfd7 f4 c5 Nf3 Nc6 Be3 cxd4 Nxd4 Qb6")
+ ("C11n" "French: Steinitz, Boleslavsky, 7...cxd4 8.Nxd4 Bc5" "e4 e6 d4 d5 Nc3 
Nf6 e5 Nfd7 f4 c5 Nf3 Nc6 Be3 cxd4 Nxd4 Bc5")
+ ("C11o" "French: 3.Nc3 Nf6 4.Bg5" "e4 e6 d4 d5 Nc3 Nf6 Bg5")
+ ("C11o" "French: Burn Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4")
+ ("C11p" "French: Burn, 5.Nxe4" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4")
+ ("C11p" "French: Burn, 5.Nxe4 Nbd7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 Nbd7")
+ ("C11q" "French: Burn, 5.Nxe4 Nbd7 6.Nf3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 
Nbd7 Nf3")
+ ("C11r" "French: Burn, 5.Nxe4 Nbd7 6.Nf3 Be7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 
Nxe4 Nbd7 Nf3 Be7")
+ ("C11r" "French: Burn, 5.Nxe4 Nbd7 6.Nf3 Be7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 
Nxe4 Nbd7 Nf3 Be7 Nxf6+ Nxf6")
+ ("C11s" "French: Burn, 5.Nxe4 Be7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 Be7")
+ ("C11t" "French: Burn, 6.Bxf6 Bxf6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 Be7 
Bxf6 Bxf6")
+ ("C11u" "French: Burn, 6.Bxf6 gxf6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 Be7 
Bxf6 gxf6")
+ ("C11v" "French: Burn, 6.Bxf6 gxf6 7.Nf3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 Nxe4 
Be7 Bxf6 gxf6 Nf3")
+ ("C11w" "French: Burn, 6.Bxf6 gxf6 7.Nf3 b6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 
Nxe4 Be7 Bxf6 gxf6 Nf3 b6")
+ ("C11w" "French: Burn, 6.Bxf6 gxf6 7.Nf3 b6 8.Bd3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
dxe4 Nxe4 Be7 Bxf6 gxf6 Nf3 b6 Bd3")
+ ("C11w" "French: Burn, 6.Bxf6 gxf6 7.Nf3 b6 8.Bc4" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
dxe4 Nxe4 Be7 Bxf6 gxf6 Nf3 b6 Bc4")
+ ("C11x" "French: Burn, 6.Bxf6 gxf6 7.Nf3 f5" "e4 e6 d4 d5 Nc3 Nf6 Bg5 dxe4 
Nxe4 Be7 Bxf6 gxf6 Nf3 f5")
+ ("C12a" "French: MacCutcheon" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4")
+ ("C12b" "French: MacCutcheon, 5.exd5" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 exd5")
+ ("C12c" "French: MacCutcheon, 5.exd5 Qxd5" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 exd5 
Qxd5")
+ ("C12c" "French: MacCutcheon, Bogoljubow Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 exd5 Qxd5 Bxf6 gxf6 Qd2 Qa5")
+ ("C12d" "French: MacCutcheon, Advance Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5")
+ ("C12d" "French: MacCutcheon, Advance Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5 h6")
+ ("C12e" "French: MacCutcheon, Chigorin Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 exf6")
+ ("C12e" "French: MacCutcheon, Grigoriev Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 exf6 hxg5 fxg7 Rg8 h4 gxh4 Qg4")
+ ("C12f" "French: MacCutcheon, Olland (Dutch) Variation" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Bb4 e5 h6 Bc1")
+ ("C12g" "French: MacCutcheon, Bernstein Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 Bh4")
+ ("C12h" "French: MacCutcheon, Janowski Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 Be3")
+ ("C12i" "French: MacCutcheon, 6.Bd2" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 h6 Bd2")
+ ("C12i" "French: MacCutcheon, Tartakower Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 Bd2 Nfd7")
+ ("C12j" "French: MacCutcheon, Lasker Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5 h6 Bd2 Bxc3")
+ ("C12k" "French: MacCutcheon, Lasker, 7.bxc3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 
h6 Bd2 Bxc3 bxc3")
+ ("C12l" "French: MacCutcheon, 8.Qg4" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 h6 Bd2 
Bxc3 bxc3 Ne4 Qg4")
+ ("C12l" "French: MacCutcheon, 8.Qg4 Kf8" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 h6 
Bd2 Bxc3 bxc3 Ne4 Qg4 Kf8")
+ ("C12l" "French: MacCutcheon, Duras Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5 h6 Bd2 Bxc3 bxc3 Ne4 Qg4 Kf8 Bc1")
+ ("C12m" "French: MacCutcheon, 8.Qg4 Kf8 9.Bd3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5 h6 Bd2 Bxc3 bxc3 Ne4 Qg4 Kf8 Bd3")
+ ("C12n" "French: MacCutcheon, 8.Qg4 g6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 h6 
Bd2 Bxc3 bxc3 Ne4 Qg4 g6")
+ ("C12o" "French: MacCutcheon, 8.Qg4 g6 9.Bd3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 
h6 Bd2 Bxc3 bxc3 Ne4 Qg4 g6 Bd3")
+ ("C12p" "French: MacCutcheon, Main Line" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 e5 h6 
Bd2 Bxc3 bxc3 Ne4 Qg4 g6 Bd3 Nxd2 Kxd2 c5")
+ ("C12q" "French: MacCutcheon, Main Line, 11.Nf3" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Bb4 
e5 h6 Bd2 Bxc3 bxc3 Ne4 Qg4 g6 Bd3 Nxd2 Kxd2 c5 Nf3")
+ ("C12r" "French: MacCutcheon, Main Line, 11.Nf3 Nc6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Bb4 e5 h6 Bd2 Bxc3 bxc3 Ne4 Qg4 g6 Bd3 Nxd2 Kxd2 c5 Nf3 Nc6")
+ ("C13a" "French: Classical" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7")
+ ("C13b" "French: Classical, Anderssen Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
Bxf6")
+ ("C13c" "French: Classical, Anderssen-Richter Variation" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 Bxf6 Bxf6 e5 Be7 Qg4")
+ ("C13d" "French: Classical, 5.e5" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5")
+ ("C13d" "French: Classical, Nimzowitsch Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Be7 e5 Ng8")
+ ("C13e" "French: Classical, Frankfurt Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Ng8 Be3 b6")
+ ("C13f" "French: Classical, Tartakower Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Be7 e5 Ne4")
+ ("C13g" "French: Classical, Tartakower, 6.Bxe7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Ne4 Bxe7")
+ ("C13h" "French: Classical, 5.e5 Nfd7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7")
+ ("C13i" "French: Chatard-Alekhine Attack" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 
Nfd7 h4")
+ ("C13j" "French: Chatard-Alekhine, Teichmann Variation" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 f6")
+ ("C13k" "French: Chatard-Alekhine, Spielmann Variation" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 O-O")
+ ("C13l" "French: Chatard-Alekhine, 6...Bxg5" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 
Nfd7 h4 Bxg5")
+ ("C13l" "French: Chatard-Alekhine, 6...Bxg5 7.hxg5 Qxg5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 Bxg5 hxg5 Qxg5")
+ ("C13m" "French: Chatard-Alekhine, 6...Bxg5 7.hxg5 Qxg5 8.Nh3 Qe7 9.Nf4" "e4 
e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7 h4 Bxg5 hxg5 Qxg5 Nh3 Qe7 Nf4")
+ ("C13n" "French: Chatard-Alekhine, Maroczy Variation" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 a6")
+ ("C13o" "French: Chatard-Alekhine, Maroczy, 7.Qg4 Bxg5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 a6 Qg4 Bxg5")
+ ("C13p" "French: Chatard-Alekhine, Breyer Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Be7 e5 Nfd7 h4 c5")
+ ("C13q" "French: Chatard-Alekhine, Breyer, 7.Bxe7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Be7 e5 Nfd7 h4 c5 Bxe7")
+ ("C13r" "French: Chatard-Alekhine, Breyer, 7.Bxe7 Kxe7" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 h4 c5 Bxe7 Kxe7")
+ ("C14a" "French: Classical, 6.Bxe7 Qxe7" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 Nfd7 
Bxe7 Qxe7")
+ ("C14b" "French: Classical, Pollock Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Nfd7 Bxe7 Qxe7 Qg4")
+ ("C14c" "French: Classical, Tarrasch Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Nfd7 Bxe7 Qxe7 Bd3")
+ ("C14d" "French: Classical, Alapin Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 
Nfd7 Bxe7 Qxe7 Nb5")
+ ("C14e" "French: Classical, Rubinstein Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 
Be7 e5 Nfd7 Bxe7 Qxe7 Qd2")
+ ("C14f" "French: Classical, Steinitz Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Nfd7 Bxe7 Qxe7 f4")
+ ("C14g" "French: Classical, Steinitz, 7...a6" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 
Nfd7 Bxe7 Qxe7 f4 a6")
+ ("C14h" "French: Classical, Steinitz, 7...a6 8.Nf3 c5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 a6 Nf3 c5")
+ ("C14i" "French: Classical, Steinitz, 7...a6 8.Nf3 c5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 a6 Nf3 c5 dxc5")
+ ("C14j" "French: Classical, Steinitz, 7...O-O" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Nfd7 Bxe7 Qxe7 f4 O-O")
+ ("C14k" "French: Classical, Steinitz, 7...O-O 8.Nf3 c5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5")
+ ("C14l" "French: Classical, Steinitz, 8.Nf3 c5 9.dxc5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 dxc5")
+ ("C14m" "French: Classical, Steinitz, 9.Qd2" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 e5 
Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 Qd2")
+ ("C14m" "French: Classical, Stahlberg Variation" "e4 e6 d4 d5 Nc3 Nf6 Bg5 Be7 
e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 Qd2 Nc6 O-O-O c4")
+ ("C14n" "French: Classical, Steinitz, 9.Qd2 Nc6 10.dxc5" "e4 e6 d4 d5 Nc3 Nf6 
Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 Qd2 Nc6 dxc5")
+ ("C14o" "French: Classical, Steinitz, 9.Qd2 Nc6 10.dxc5 Qxc5" "e4 e6 d4 d5 
Nc3 Nf6 Bg5 Be7 e5 Nfd7 Bxe7 Qxe7 f4 O-O Nf3 c5 Qd2 Nc6 dxc5 Qxc5")
+ ("C15a" "French: Winawer" "e4 e6 d4 d5 Nc3 Bb4")
+ ("C15b" "French: Winawer, 4.exd5" "e4 e6 d4 d5 Nc3 Bb4 exd5")
+ ("C15b" "French: Winawer, 4.exd5 Qxd5" "e4 e6 d4 d5 Nc3 Bb4 exd5 Qxd5")
+ ("C15c" "French: Winawer, 4.Qg4" "e4 e6 d4 d5 Nc3 Bb4 Qg4")
+ ("C15d" "French: Winawer, 4.Qd3" "e4 e6 d4 d5 Nc3 Bb4 Qd3")
+ ("C15d" "French: Winawer, 4.Qd3 dxe4" "e4 e6 d4 d5 Nc3 Bb4 Qd3 dxe4")
+ ("C15e" "French: Winawer, 4.Bd3" "e4 e6 d4 d5 Nc3 Bb4 Bd3")
+ ("C15f" "French: Winawer, 4.Bd3 c5" "e4 e6 d4 d5 Nc3 Bb4 Bd3 c5")
+ ("C15f" "French: Winawer, Kondratiyev Variation" "e4 e6 d4 d5 Nc3 Bb4 Bd3 c5 
exd5 Qxd5 Bd2")
+ ("C15g" "French: Winawer, 4.Bd3 dxe4" "e4 e6 d4 d5 Nc3 Bb4 Bd3 dxe4")
+ ("C15g" "French: Winawer, 4.Bd3 dxe4 5.Bxe4" "e4 e6 d4 d5 Nc3 Bb4 Bd3 dxe4 
Bxe4")
+ ("C15g" "French: Winawer, 4.Bd3 dxe4 5.Bxe4 Nf6" "e4 e6 d4 d5 Nc3 Bb4 Bd3 
dxe4 Bxe4 Nf6")
+ ("C15h" "French: Winawer, Müller-Zhuravlev Gambit" "e4 e6 d4 d5 Nc3 Bb4 Bd2")
+ ("C15h" "French: Winawer, Müller-Zhuravlev Gambit" "e4 e6 d4 d5 Nc3 Bb4 Bd2 
dxe4")
+ ("C15i" "French: Winawer, Müller-Zhuravlev Gambit, 5.Qg4" "e4 e6 d4 d5 Nc3 
Bb4 Bd2 dxe4 Qg4")
+ ("C15i" "French: Winawer, Müller-Zhuravlev Gambit, Kunin Variation" "e4 e6 d4 
d5 Nc3 Bb4 Bd2 dxe4 Qg4 Qxd4")
+ ("C15j" "French: Winawer, Müller-Zhuravlev Gambit, 5.Qg4 Nf6" "e4 e6 d4 d5 
Nc3 Bb4 Bd2 dxe4 Qg4 Nf6")
+ ("C15k" "French: Winawer, 4.a3" "e4 e6 d4 d5 Nc3 Bb4 a3")
+ ("C15k" "French: Winawer, 4.a3 Bxc3+" "e4 e6 d4 d5 Nc3 Bb4 a3 Bxc3+")
+ ("C15k" "French: Winawer, 4.a3 Bxc3+" "e4 e6 d4 d5 Nc3 Bb4 a3 Bxc3+ bxc3")
+ ("C15k" "French: Winawer, 4.a3 Bxc3+ 5.bxc3 dxe4" "e4 e6 d4 d5 Nc3 Bb4 a3 
Bxc3+ bxc3 dxe4")
+ ("C15l" "French: Winawer, Winkelmann-Reimer Gambit (WRG)" "e4 e6 d4 d5 Nc3 
Bb4 a3 Bxc3+ bxc3 dxe4 f3")
+ ("C15l" "French: Winawer, Winkelmann-Reimer Gambit Accepted" "e4 e6 d4 d5 Nc3 
Bb4 a3 Bxc3+ bxc3 dxe4 f3 exf3")
+ ("C15l" "French: Winawer, Winkelmann-Reimer, Hübner Defence" "e4 e6 d4 d5 Nc3 
Bb4 a3 Bxc3+ bxc3 dxe4 f3 e5")
+ ("C15l" "French: Winawer, Winkelmann-Reimer, 6...c5" "e4 e6 d4 d5 Nc3 Bb4 a3 
Bxc3+ bxc3 dxe4 f3 c5")
+ ("C15m" "French: Winawer, 4.a3 Bxc3+ 5.bxc3 dxe4 6.Qg4" "e4 e6 d4 d5 Nc3 Bb4 
a3 Bxc3+ bxc3 dxe4 Qg4")
+ ("C15n" "French: Winawer, Alekhine Gambit" "e4 e6 d4 d5 Nc3 Bb4 Ne2")
+ ("C15o" "French: Winawer, Alekhine Gambit, 4...Nf6" "e4 e6 d4 d5 Nc3 Bb4 Ne2 
Nf6")
+ ("C15p" "French: Winawer, Alekhine Gambit, 4...Nc6" "e4 e6 d4 d5 Nc3 Bb4 Ne2 
Nc6")
+ ("C15q" "French: Winawer, Alekhine Gambit Accepted" "e4 e6 d4 d5 Nc3 Bb4 Ne2 
dxe4")
+ ("C15q" "French: Winawer, Alekhine Gambit, 5.a3 Bxc3+" "e4 e6 d4 d5 Nc3 Bb4 
Ne2 dxe4 a3 Bxc3+")
+ ("C15r" "French: Winawer, Alekhine Gambit, Kan Variation" "e4 e6 d4 d5 Nc3 
Bb4 Ne2 dxe4 a3 Bxc3+ Nxc3 Nc6")
+ ("C15s" "French: Winawer, Alekhine Gambit, Kan, 7.Bb5" "e4 e6 d4 d5 Nc3 Bb4 
Ne2 dxe4 a3 Bxc3+ Nxc3 Nc6 Bb5")
+ ("C15t" "French: Winawer, Alekhine Gambit, 5.a3 Be7" "e4 e6 d4 d5 Nc3 Bb4 Ne2 
dxe4 a3 Be7")
+ ("C15u" "French: Winawer, Alekhine Gambit, 5.a3 Be7 6.Nxe4 Nf6" "e4 e6 d4 d5 
Nc3 Bb4 Ne2 dxe4 a3 Be7 Nxe4 Nf6")
+ ("C15u" "French: Winawer, Alekhine Gambit, Alatortsev Variation" "e4 e6 d4 d5 
Nc3 Bb4 Ne2 dxe4 a3 Be7 Nxe4 Nf6 N2g3 O-O Be2 Nc6")
+ ("C15v" "French: Winawer, Alekhine Gambit, 5.a3 Be7 6.Nxe4 Nf6 7.Qd3" "e4 e6 
d4 d5 Nc3 Bb4 Ne2 dxe4 a3 Be7 Nxe4 Nf6 Qd3")
+ ("C16a" "French: Winawer, Advance Variation" "e4 e6 d4 d5 Nc3 Bb4 e5")
+ ("C16b" "French: Winawer, 4.e5 b6" "e4 e6 d4 d5 Nc3 Bb4 e5 b6")
+ ("C16c" "French: Winawer, 4.e5 b6 5.Qg4" "e4 e6 d4 d5 Nc3 Bb4 e5 b6 Qg4")
+ ("C16d" "French: Winawer, 4.e5 b6 5.Qg4 Bf8 6.Bg5" "e4 e6 d4 d5 Nc3 Bb4 e5 b6 
Qg4 Bf8 Bg5")
+ ("C16e" "French: Winawer, 4.e5 b6 5.a3" "e4 e6 d4 d5 Nc3 Bb4 e5 b6 a3")
+ ("C16e" "French: Winawer, 4.e5 b6 5.a3 Bf8" "e4 e6 d4 d5 Nc3 Bb4 e5 b6 a3 
Bf8")
+ ("C16f" "French: Winawer, Petrosian Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 Qd7")
+ ("C16g" "French: Winawer, Petrosian, 5.Bd2" "e4 e6 d4 d5 Nc3 Bb4 e5 Qd7 Bd2")
+ ("C16h" "French: Winawer, Petrosian, 5.a3" "e4 e6 d4 d5 Nc3 Bb4 e5 Qd7 a3")
+ ("C16i" "French: Winawer, Petrosian, 5.a3 Bxc3+ 6.bxc3 b6" "e4 e6 d4 d5 Nc3 
Bb4 e5 Qd7 a3 Bxc3+ bxc3 b6")
+ ("C16i" "French: Winawer, Petrosian, 5.a3 Bxc3+ 6.bxc3 b6 7.Qg4" "e4 e6 d4 d5 
Nc3 Bb4 e5 Qd7 a3 Bxc3+ bxc3 b6 Qg4")
+ ("C16j" "French: Winawer, Advance, 4...Ne7" "e4 e6 d4 d5 Nc3 Bb4 e5 Ne7")
+ ("C16k" "French: Winawer, Advance, 4...Ne7 5.Bd2" "e4 e6 d4 d5 Nc3 Bb4 e5 Ne7 
Bd2")
+ ("C16l" "French: Winawer, Advance, 4...Ne7 5.Bd2 b6" "e4 e6 d4 d5 Nc3 Bb4 e5 
Ne7 Bd2 b6")
+ ("C16m" "French: Winawer, Advance, 4...Ne7 5.a3" "e4 e6 d4 d5 Nc3 Bb4 e5 Ne7 
a3")
+ ("C16n" "French: Winawer, Advance, 4...Ne7 5.a3 Bxc3+ 6.bxc3 b6" "e4 e6 d4 d5 
Nc3 Bb4 e5 Ne7 a3 Bxc3+ bxc3 b6")
+ ("C16o" "French: Winawer, Advance, 4...Ne7 5.a3 Bxc3+ 6.bxc3 b6 7.Qg4" "e4 e6 
d4 d5 Nc3 Bb4 e5 Ne7 a3 Bxc3+ bxc3 b6 Qg4")
+ ("C17a" "French: Winawer, Advance, 4...c5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5")
+ ("C17b" "French: Winawer, Advance, 5.dxc5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 dxc5")
+ ("C17c" "French: Winawer, Russian Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 Qg4")
+ ("C17d" "French: Winawer, Russian, 6.dxc5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 Qg4 Ne7 
dxc5")
+ ("C17e" "French: Winawer, Bogoljubow Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
Bd2")
+ ("C17f" "French: Winawer, Bogoljubow, 5...cxd4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
Bd2 cxd4")
+ ("C17g" "French: Winawer, Bogoljubow, 5...Ne7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 Bd2 
Ne7")
+ ("C17h" "French: Winawer, Bogoljubow, 5...Ne7 6.a3" "e4 e6 d4 d5 Nc3 Bb4 e5 
c5 Bd2 Ne7 a3")
+ ("C17i" "French: Winawer, Bogoljubow, 5...Ne7 6.dxc5" "e4 e6 d4 d5 Nc3 Bb4 e5 
c5 Bd2 Ne7 dxc5")
+ ("C17j" "French: Winawer, Bogoljubow, 5...Ne7 6.Nb5" "e4 e6 d4 d5 Nc3 Bb4 e5 
c5 Bd2 Ne7 Nb5")
+ ("C17k" "French: Winawer, 5.a3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3")
+ ("C17l" "French: Winawer, 5.a3 cxd4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 cxd4")
+ ("C17l" "French: Winawer, Rauzer Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
cxd4 axb4 dxc3 Nf3")
+ ("C17m" "French: Winawer, Swiss Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Ba5")
+ ("C17n" "French: Winawer, Swiss, 6.b4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Ba5 b4")
+ ("C17o" "French: Winawer, Swiss, 6.b4 cxd4 7.Qg4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Ba5 b4 cxd4 Qg4")
+ ("C17p" "French: Winawer, Swiss, 6.b4 cxd4 7.Qg4 Ne7 8.bxa5" "e4 e6 d4 d5 Nc3 
Bb4 e5 c5 a3 Ba5 b4 cxd4 Qg4 Ne7 bxa5")
+ ("C17q" "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Ba5 b4 cxd4 Nb5")
+ ("C17r" "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5 Bc7 8.f4" "e4 e6 d4 d5 Nc3 
Bb4 e5 c5 a3 Ba5 b4 cxd4 Nb5 Bc7 f4")
+ ("C17s" "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5 Bc7 8.f4 Bd7" "e4 e6 d4 d5 
Nc3 Bb4 e5 c5 a3 Ba5 b4 cxd4 Nb5 Bc7 f4 Bd7")
+ ("C18a" "French: Winawer, 5...Bxc3+" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+")
+ ("C18a" "French: Winawer, 5...Bxc3+ 6.bxc3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3")
+ ("C18b" "French: Winawer, 6...Qa5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 
Qa5")
+ ("C18c" "French: Winawer, 6...Qc7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 
Qc7")
+ ("C18d" "French: Winawer, 6...Qc7 7.Qg4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ 
bxc3 Qc7 Qg4")
+ ("C18d" "French: Winawer, 6...Qc7 7.Qg4 f6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Qc7 Qg4 f6")
+ ("C18e" "French: Winawer, 6...Qc7 7.Qg4 f5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Qc7 Qg4 f5")
+ ("C18f" "French: Winawer, 6...Ne7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 
Ne7")
+ ("C18g" "French: Winawer, 6...Ne7 7.h4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ 
bxc3 Ne7 h4")
+ ("C18h" "French: Winawer, 6...Ne7 7.h4 Qc7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 h4 Qc7")
+ ("C18h" "French: Winawer, 6...Ne7 7.h4 Qc7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 h4 Qc7 Nf3")
+ ("C18i" "French: Winawer, 6...Ne7 7.h4 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 h4 Nbc6")
+ ("C18i" "French: Winawer, 6...Ne7 7.h4 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 h4 Nbc6 Nf3")
+ ("C18j" "French: Winawer, 6...Ne7 7.Qg4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ 
bxc3 Ne7 Qg4")
+ ("C18k" "French: Winawer, 6...Ne7 7.Qg4 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Qg4 Nbc6")
+ ("C18l" "French: Winawer, 6...Ne7 7.Qg4 Kf8" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Qg4 Kf8")
+ ("C18m" "French: Winawer, 6...Ne7 7.Qg4 cxd4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Qg4 cxd4")
+ ("C18n" "French: Winawer, 6...Ne7 7.Qg4 O-O" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Qg4 O-O")
+ ("C18o" "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Bd3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Qg4 O-O Bd3")
+ ("C18p" "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Bd3 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 
e5 c5 a3 Bxc3+ bxc3 Ne7 Qg4 O-O Bd3 Nbc6")
+ ("C18q" "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Nf3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Qg4 O-O Nf3")
+ ("C18q" "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Nf3 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 
e5 c5 a3 Bxc3+ bxc3 Ne7 Qg4 O-O Nf3 Nbc6")
+ ("C18r" "French: Winawer, Poisoned Pawn" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ 
bxc3 Ne7 Qg4 Qc7")
+ ("C18r" "French: Winawer, Poisoned Pawn, 8.Qxg7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7")
+ ("C18r" "French: Winawer, Poisoned Pawn, 10.Qd3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7 Rg8 Qxh7 cxd4 Qd3")
+ ("C18s" "French: Winawer, Poisoned Pawn, Euwe-Gligoric Variation" "e4 e6 d4 
d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7 Rg8 Qxh7 cxd4 Kd1")
+ ("C18t" "French: Winawer, Poisoned Pawn, Konstantinopolsky Variation" "e4 e6 
d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7 Rg8 Qxh7 cxd4 Ne2")
+ ("C18u" "French: Winawer, Poisoned Pawn, Main Line" "e4 e6 d4 d5 Nc3 Bb4 e5 
c5 a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7 Rg8 Qxh7 cxd4 Ne2 Nbc6 f4 Bd7 Qd3 dxc3")
+ ("C18v" "French: Winawer, Poisoned Pawn, Main Line, 13.Nxc3" "e4 e6 d4 d5 Nc3 
Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Qg4 Qc7 Qxg7 Rg8 Qxh7 cxd4 Ne2 Nbc6 f4 Bd7 Qd3 dxc3 
Nxc3")
+ ("C19a" "French: Winawer, Smyslov Variation" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 a4")
+ ("C19b" "French: Winawer, Smyslov, 7...Qa5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 a4 Qa5")
+ ("C19c" "French: Winawer, 6...Ne7 7.Nf3" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ 
bxc3 Ne7 Nf3")
+ ("C19d" "French: Winawer, 6...Ne7 7.Nf3 Qc7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Nf3 Qc7")
+ ("C19e" "French: Winawer, 6...Ne7 7.Nf3 Qc7 8.a4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Nf3 Qc7 a4")
+ ("C19f" "French: Winawer, 6...Ne7 7.Nf3 Qc7 8.a4 b6" "e4 e6 d4 d5 Nc3 Bb4 e5 
c5 a3 Bxc3+ bxc3 Ne7 Nf3 Qc7 a4 b6")
+ ("C19g" "French: Winawer, 6...Ne7 7.Nf3 Qa5" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Nf3 Qa5")
+ ("C19h" "French: Winawer, 6...Ne7 7.Nf3 b6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Nf3 b6")
+ ("C19h" "French: Winawer, 6...Ne7 7.Nf3 b6 8.a4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Nf3 b6 a4")
+ ("C19i" "French: Winawer, 6...Ne7 7.Nf3 b6 8.Bb5+" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Nf3 b6 Bb5+")
+ ("C19j" "French: Winawer, 6...Ne7 7.Nf3 Bd7" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Nf3 Bd7")
+ ("C19k" "French: Winawer, 6...Ne7 7.Nf3 Bd7 8.a4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Nf3 Bd7 a4")
+ ("C19l" "French: Winawer, 6...Ne7 7.Nf3 Nbc6" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 a3 
Bxc3+ bxc3 Ne7 Nf3 Nbc6")
+ ("C19m" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4" "e4 e6 d4 d5 Nc3 Bb4 e5 c5 
a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4")
+ ("C19m" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Bd7" "e4 e6 d4 d5 Nc3 Bb4 
e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Bd7")
+ ("C19n" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5" "e4 e6 d4 d5 Nc3 Bb4 
e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5")
+ ("C19n" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5 9.Qd2" "e4 e6 d4 d5 Nc3 
Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5 Qd2")
+ ("C19o" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5 9.Qd2 Bd7" "e4 e6 d4 d5 
Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5 Qd2 Bd7")
+ ("C19p" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2" "e4 e6 d4 d5 
Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5 Bd2")
+ ("C19q" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2 Bd7" "e4 e6 d4 
d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5 Bd2 Bd7")
+ ("C19r" "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2 Bd7 10.Bb5" "e4 
e6 d4 d5 Nc3 Bb4 e5 c5 a3 Bxc3+ bxc3 Ne7 Nf3 Nbc6 a4 Qa5 Bd2 Bd7 Bb5")
+ ("C20" "Open Game" "e4 e5")
+ ("C20" "Open Game: Mengarini Opening" "e4 e5 a3")
+ ("C20" "Open Game: Patzer/Parnham Opening" "e4 e5 Qh5")
+ ("C20" "Open Game: Napoleon's Opening" "e4 e5 Qf3")
+ ("C20" "Open Game: 2.d3" "e4 e5 d3")
+ ("C20" "Open Game: 2.d3 d5" "e4 e5 d3 d5")
+ ("C20" "Open Game: 2.c4" "e4 e5 c4")
+ ("C20" "Open Game: Lopez/Mcleod Opening" "e4 e5 c3")
+ ("C20" "Open Game: Lopez/Mcleod, Lasa Gambit" "e4 e5 c3 f5")
+ ("C20" "Open Game: Alapin Opening" "e4 e5 Ne2")
+ ("C20" "Open Game: Alapin Opening" "e4 e5 Ne2 Nf6")
+ ("C20" "Open Game: Portuguese Opening" "e4 e5 Bb5")
+ ("C20" "Open Game: Portuguese, 2...Nf6" "e4 e5 Bb5 Nf6")
+ ("C20" "Open Game: Portuguese Gambit" "e4 e5 Bb5 Nf6 d4")
+ ("C20" "Open Game: Portuguese, 2...Nc6" "e4 e5 Bb5 Nc6")
+ ("C20" "Open Game: Portuguese, 2...c6" "e4 e5 Bb5 c6")
+ ("C21" "Centre Game" "e4 e5 d4")
+ ("C21" "Centre Game: Maroczy Defence" "e4 e5 d4 d6")
+ ("C21" "Centre Game: Maroczy Defence, 3.dxe5" "e4 e5 d4 d6 dxe5")
+ ("C21" "Centre Game: Maroczy Defence, Philidor Gambit" "e4 e5 d4 d6 dxe5 Bd7")
+ ("C21" "Centre Game: Queenswap line" "e4 e5 d4 d6 dxe5 dxe5 Qxd8+")
+ ("C21" "Centre Game" "e4 e5 d4 exd4")
+ ("C21" "Centre Game: 3.Nf3" "e4 e5 d4 exd4 Nf3")
+ ("C21" "Centre Game: Kieseritsky Variation" "e4 e5 d4 exd4 Nf3 c5 Bc4 b5")
+ ("C21" "Centre Game: Halasz Gambit" "e4 e5 d4 exd4 f4")
+ ("C21" "Danish Gambit" "e4 e5 d4 exd4 c3")
+ ("C21" "Danish Gambit: Svenonius Defence" "e4 e5 d4 exd4 c3 Ne7")
+ ("C21" "Danish Gambit: Sörensen Defence" "e4 e5 d4 exd4 c3 d5")
+ ("C21" "Danish Gambit: Accepted" "e4 e5 d4 exd4 c3 dxc3")
+ ("C21" "Danish Gambit: Accepted, 4.Bc4" "e4 e5 d4 exd4 c3 dxc3 Bc4")
+ ("C21" "Danish Gambit: Accepted, 4.Bc4 cxb2 5.Bxb2" "e4 e5 d4 exd4 c3 dxc3 
Bc4 cxb2 Bxb2")
+ ("C21" "Danish Gambit: Copenhagen Defence" "e4 e5 d4 exd4 c3 dxc3 Bc4 cxb2 
Bxb2 Bb4+")
+ ("C21" "Danish Gambit: Chigorin Defence" "e4 e5 d4 exd4 c3 dxc3 Bc4 cxb2 Bxb2 
Qe7")
+ ("C21" "Danish Gambit: Classical Defence" "e4 e5 d4 exd4 c3 dxc3 Bc4 cxb2 
Bxb2 Nf6")
+ ("C21" "Danish Gambit: Schlechter Defence" "e4 e5 d4 exd4 c3 dxc3 Bc4 cxb2 
Bxb2 d5")
+ ("C22" "Centre Game" "e4 e5 d4 exd4 Qxd4")
+ ("C22" "Centre Game" "e4 e5 d4 exd4 Qxd4 Nc6")
+ ("C22" "Centre Game: Hall Variation" "e4 e5 d4 exd4 Qxd4 Nc6 Qc4")
+ ("C22" "Centre Game: Paulsen Attack" "e4 e5 d4 exd4 Qxd4 Nc6 Qe3")
+ ("C22" "Centre Game: Charousek Variation" "e4 e5 d4 exd4 Qxd4 Nc6 Qe3 Bb4+ c3 
Be7")
+ ("C22" "Centre Game: Berger Variation" "e4 e5 d4 exd4 Qxd4 Nc6 Qe3 Nf6")
+ ("C22" "Centre Game: Kupreichik Variation" "e4 e5 d4 exd4 Qxd4 Nc6 Qe3 Nf6 
Nc3 Bb4 Bd2 O-O O-O-O Re8 Bc4 d6 Nh3")
+ ("C23" "Bishop's Opening" "e4 e5 Bc4")
+ ("C23" "Bishop's Opening: Anderssen Gambit" "e4 e5 Bc4 b5")
+ ("C23" "Bishop's Opening: Philidor Counterattack" "e4 e5 Bc4 c6")
+ ("C23" "Bishop's Opening: Lisitsin Variation" "e4 e5 Bc4 c6 d4 d5 exd5 cxd5 
Bb5+ Bd7 Bxd7+ Nxd7 dxe5 Nxe5 Ne2")
+ ("C23" "Bishop's Opening: Calabrese Countergambit" "e4 e5 Bc4 f5")
+ ("C23" "Bishop's Opening: Calabrese Countergambit, Jänisch Variation" "e4 e5 
Bc4 f5 d3")
+ ("C23" "Bishop's Opening: Classical Variation" "e4 e5 Bc4 Bc5")
+ ("C23" "Bishop's Opening: 2...Bc5 3.Qe2" "e4 e5 Bc4 Bc5 Qe2")
+ ("C23" "Bishop's Opening: Lopez Gambit" "e4 e5 Bc4 Bc5 Qe2 Nc6 c3 Nf6 f4")
+ ("C23" "Bishop's Opening: Lewis Gambit" "e4 e5 Bc4 Bc5 d4")
+ ("C23" "Bishop's Opening: MacDonnell Gambit" "e4 e5 Bc4 Bc5 b4")
+ ("C23" "Bishop's Opening: MacDonnell Double Gambit" "e4 e5 Bc4 Bc5 b4 Bxb4 
f4")
+ ("C23" "Bishop's Opening: MacDonnell, Four Pawns Gambit" "e4 e5 Bc4 Bc5 b4 
Bxb4 f4 exf4 Nf3 Be7 d4 Bh4+ g3 fxg3 O-O gxh2+ Kh1")
+ ("C23" "Bishop's Opening: Philidor Variation" "e4 e5 Bc4 Bc5 c3")
+ ("C23" "Bishop's Opening: del Rio Variation" "e4 e5 Bc4 Bc5 c3 Qg5")
+ ("C23" "Bishop's Opening: Lewis Countergambit" "e4 e5 Bc4 Bc5 c3 d5")
+ ("C23" "Bishop's Opening: Lewis Countergambit, Jänisch" "e4 e5 Bc4 Bc5 c3 d5 
Bxd5 Nf6 Qf3")
+ ("C23" "Bishop's Opening: 2...Bc5 3.c3 Nf6" "e4 e5 Bc4 Bc5 c3 Nf6")
+ ("C23" "Bishop's Opening: Pratt Variation" "e4 e5 Bc4 Bc5 c3 Nf6 d4 exd4 e5 
d5 exf6 dxc4 Qh5 O-O")
+ ("C24" "Bishop's Opening: Berlin Defence" "e4 e5 Bc4 Nf6")
+ ("C24" "Bishop's Opening: Greco Gambit" "e4 e5 Bc4 Nf6 f4")
+ ("C24" "Bishop's Opening: 3.d3" "e4 e5 Bc4 Nf6 d3")
+ ("C24" "Bishop's Opening: 3.d3 d5" "e4 e5 Bc4 Nf6 d3 d5")
+ ("C24" "Bishop's Opening: Paulsen Defence" "e4 e5 Bc4 Nf6 d3 c6")
+ ("C24" "Bishop's Opening: Paulsen, 4.Nf3" "e4 e5 Bc4 Nf6 d3 c6 Nf3")
+ ("C24" "Bishop's Opening: 3.d4" "e4 e5 Bc4 Nf6 d4")
+ ("C24" "Bishop's Opening: Urusov Gambit" "e4 e5 Bc4 Nf6 d4 exd4 Nf3")
+ ("C24" "Bishop's Opening: Urusov Gambit, Panov Variation" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 d5 exd5 Bb4+ c3 Qe7+")
+ ("C24" "Bishop's Opening: Urusov Gambit, Marshall Variation" "e4 e5 Bc4 Nf6 
d4 exd4 Nf3 Nxe4 Qxd4 Nf6 Nc3 Nc6 Qh4")
+ ("C24" "Bishop's Opening: Urusov Gambit, 6.Bg5 Nc6 Defence" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Nc6")
+ ("C24" "Bishop's Opening: Urusov Gambit, 7...c6 Defence" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 c6")
+ ("C24" "Bishop's Opening: Urusov Gambit, Larsen Variation" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 c6 O-O-O d5 Rhe1 O-O Qh4")
+ ("C24" "Bishop's Opening: Urusov Gambit, Karpov Variation" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 c6 O-O-O d5 Rhe1 Be6 Bd3 Nbd7 Qh4 c5")
+ ("C24" "Bishop's Opening: Urusov Gambit, Forintos/Haag Variation" "e4 e5 Bc4 
Nf6 d4 exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 c6 O-O-O d5 Rhe1 Be6 Bd3 Nbd7 Qh4 Nc5 
Nd4 Ng8")
+ ("C24" "Bishop's Opening: Urusov Gambit, 7...Nc6 Defence" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 Nc6")
+ ("C24" "Bishop's Opening: Urusov Gambit, Keres Variation" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 Nc6 Qh4 d6")
+ ("C24" "Bishop's Opening: Urusov Gambit, Estrin Variation" "e4 e5 Bc4 Nf6 d4 
exd4 Nf3 Nxe4 Qxd4 Nf6 Bg5 Be7 Nc3 Nc6 Qh4 d5")
+ ("C25a" "Vienna Game" "e4 e5 Nc3")
+ ("C25b" "Vienna: 2...Bb4" "e4 e5 Nc3 Bb4")
+ ("C25b" "Vienna: Zhuravlev" "e4 e5 Nc3 Bb4 Qg4")
+ ("C25c" "Vienna: 2...d6" "e4 e5 Nc3 d6")
+ ("C25c" "Vienna: 2...d6 3.Bc4" "e4 e5 Nc3 d6 Bc4")
+ ("C25d" "Vienna: 2...Bc5" "e4 e5 Nc3 Bc5")
+ ("C25d" "Vienna: Hammpe-Meitner" "e4 e5 Nc3 Bc5 Na4")
+ ("C25e" "Vienna: 2...Bc5 3.Bc4" "e4 e5 Nc3 Bc5 Bc4")
+ ("C25f" "Vienna: 2...Bc5 3.Nf3" "e4 e5 Nc3 Bc5 Nf3")
+ ("C25g" "Vienna: 2...Nc6" "e4 e5 Nc3 Nc6")
+ ("C25g" "Vienna: Fyfe Gambit" "e4 e5 Nc3 Nc6 d4")
+ ("C25h" "Vienna: Paulsen Variation" "e4 e5 Nc3 Nc6 g3")
+ ("C25i" "Vienna: Paulsen, 3...Bc5" "e4 e5 Nc3 Nc6 g3 Bc5")
+ ("C25j" "Vienna: 2...Nc6 3.Bc4" "e4 e5 Nc3 Nc6 Bc4")
+ ("C25j" "Vienna: 2...Nc6 3.Bc4 Bc5" "e4 e5 Nc3 Nc6 Bc4 Bc5")
+ ("C25k" "Vienna: 2...Nc6 3.Bc4 Bc5 4.d3" "e4 e5 Nc3 Nc6 Bc4 Bc5 d3")
+ ("C25l" "Vienna: 2...Nc6 3.Bc4 Bc5 4.Qg4" "e4 e5 Nc3 Nc6 Bc4 Bc5 Qg4")
+ ("C25m" "Vienna: 2...Nc6 3.f4" "e4 e5 Nc3 Nc6 f4")
+ ("C25m" "Vienna: 2...Nc6 3.f4" "e4 e5 Nc3 Nc6 f4 exf4")
+ ("C25n" "Vienna: Steinitz Gambit" "e4 e5 Nc3 Nc6 f4 exf4 d4")
+ ("C25n" "Vienna: Steinitz Gambit, Fraser-Minckwitz Variation" "e4 e5 Nc3 Nc6 
f4 exf4 d4 Qh4+ Ke2 b6")
+ ("C25o" "Vienna: Steinitz Gambit, Zukertort Defence" "e4 e5 Nc3 Nc6 f4 exf4 
d4 Qh4+ Ke2 d5")
+ ("C25p" "Vienna: 2...Nc6 3.f4 exf4 4.Nf3" "e4 e5 Nc3 Nc6 f4 exf4 Nf3")
+ ("C25p" "Vienna: 2...Nc6 3.f4 exf4 4.Nf3 g5" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 g5")
+ ("C25p" "Vienna: Hamppe-Muzio Gambit" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 g5 Bc4 g4 
O-O")
+ ("C25p" "Vienna: Hamppe-Muzio, Dubois Variation" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 
g5 Bc4 g4 O-O gxf3 Qxf3 Ne5 Qxf4 Qf6")
+ ("C25q" "Vienna: Hamppe-Allgaier Gambit" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 g5 h4")
+ ("C25q" "Vienna: Hamppe-Allgaier Gambit, Alapin Variation" "e4 e5 Nc3 Nc6 f4 
exf4 Nf3 g5 h4 g4 Ng5 d6")
+ ("C25r" "Vienna: Pierce Gambit" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 g5 d4")
+ ("C25r" "Vienna: Pierce Gambit, Rushmere Attack" "e4 e5 Nc3 Nc6 f4 exf4 Nf3 
g5 d4 g4 Bc4 gxf3 O-O d5 exd5 Bg4 dxc6")
+ ("C26a" "Vienna: 2...Nf6" "e4 e5 Nc3 Nf6")
+ ("C26a" "Vienna: Mengarini Variation" "e4 e5 Nc3 Nf6 a3")
+ ("C26b" "Vienna: 2...Nf6 3.d3" "e4 e5 Nc3 Nf6 d3")
+ ("C26c" "Vienna: Smyslov Variation" "e4 e5 Nc3 Nf6 g3")
+ ("C26d" "Vienna: Smyslov, 3...Nc6" "e4 e5 Nc3 Nf6 g3 Nc6")
+ ("C26d" "Vienna: Smyslov, 3...Nc6" "e4 e5 Nc3 Nf6 g3 Nc6 Bg2")
+ ("C26e" "Vienna: Smyslov, 3...Bc5" "e4 e5 Nc3 Nf6 g3 Bc5")
+ ("C26e" "Vienna: Smyslov, 3...Bc5" "e4 e5 Nc3 Nf6 g3 Bc5 Bg2")
+ ("C26f" "Vienna: Smyslov, 3...Bc5 4.Bg2 d6" "e4 e5 Nc3 Nf6 g3 Bc5 Bg2 d6")
+ ("C26g" "Vienna: Smyslov, 3...Bc5 4.Bg2 O-O" "e4 e5 Nc3 Nf6 g3 Bc5 Bg2 O-O")
+ ("C26h" "Vienna: Smyslov, 3...Bc5 4.Bg2 Nc6" "e4 e5 Nc3 Nf6 g3 Bc5 Bg2 Nc6")
+ ("C26h" "Vienna: Smyslov, 3...Bc5 4.Bg2 Nc6 5.Nge2" "e4 e5 Nc3 Nf6 g3 Bc5 Bg2 
Nc6 Nge2")
+ ("C26i" "Vienna: Smyslov, 3...d5" "e4 e5 Nc3 Nf6 g3 d5")
+ ("C26i" "Vienna: Smyslov, 3...d5" "e4 e5 Nc3 Nf6 g3 d5 exd5 Nxd5 Bg2")
+ ("C26j" "Vienna: Smyslov, 3...d5, 5...Nxc3" "e4 e5 Nc3 Nf6 g3 d5 exd5 Nxd5 
Bg2 Nxc3")
+ ("C26k" "Vienna: Smyslov, 3...d5, 5...Nxc3 6.bxc3 Bd6" "e4 e5 Nc3 Nf6 g3 d5 
exd5 Nxd5 Bg2 Nxc3 bxc3 Bd6")
+ ("C26l" "Vienna: 3.Bc4" "e4 e5 Nc3 Nf6 Bc4")
+ ("C26l" "Vienna: Horwitz Gambit" "e4 e5 Nc3 Nf6 Bc4 b5")
+ ("C26m" "Vienna: 3.Bc4 Bb4" "e4 e5 Nc3 Nf6 Bc4 Bb4")
+ ("C26n" "Vienna: 3.Bc4 Bb4 4.Nf3" "e4 e5 Nc3 Nf6 Bc4 Bb4 Nf3")
+ ("C26o" "Vienna: 3.Bc4 Bb4 4.Nf3 O-O" "e4 e5 Nc3 Nf6 Bc4 Bb4 Nf3 O-O")
+ ("C26p" "Vienna: 3.Bc4 Bc5" "e4 e5 Nc3 Nf6 Bc4 Bc5")
+ ("C26p" "Vienna: 3.Bc4 Bc5 4.f4" "e4 e5 Nc3 Nf6 Bc4 Bc5 f4")
+ ("C26q" "Vienna: 3.Bc4 Bc5 4.Nf3" "e4 e5 Nc3 Nf6 Bc4 Bc5 Nf3")
+ ("C26r" "Vienna: 3.Bc4 Bc5 4.d3" "e4 e5 Nc3 Nf6 Bc4 Bc5 d3")
+ ("C26s" "Vienna: 3.Bc4 Bc5 4.d3 d6" "e4 e5 Nc3 Nf6 Bc4 Bc5 d3 d6")
+ ("C26t" "Vienna: 3.Bc4 Bc5 4.d3 d6 5.Na4" "e4 e5 Nc3 Nf6 Bc4 Bc5 d3 d6 Na4")
+ ("C26u" "Vienna: 3.Bc4 Bc5 4.d3 d6 5.f4" "e4 e5 Nc3 Nf6 Bc4 Bc5 d3 d6 f4")
+ ("C27a" "Vienna: 3.Bc4 Nxe4" "e4 e5 Nc3 Nf6 Bc4 Nxe4")
+ ("C27b" "Vienna: 3.Bc4 Nxe4 4.Nxe4" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Nxe4")
+ ("C27c" "Vienna: 3.Bc4 Nxe4 4.Qh5" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5")
+ ("C27d" "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Qxe5+" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 
Nd6 Qxe5+")
+ ("C27e" "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 Nd6 
Bb3")
+ ("C27f" "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3 Be7" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 
Nd6 Bb3 Be7")
+ ("C27g" "Vienna: Alekhine Variation" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 Nd6 Bb3 Be7 
Nf3 Nc6 Nxe5")
+ ("C27h" "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3 Nc6" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 
Nd6 Bb3 Nc6")
+ ("C27h" "Vienna: Adams' Gambit" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 Nd6 Bb3 Nc6 d4")
+ ("C27h" "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3 Nc6" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 
Nd6 Bb3 Nc6 Nb5")
+ ("C27i" "Vienna: Frankenstein-Dracula Variation" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 
Nd6 Bb3 Nc6 Nb5 g6 Qf3 f5 Qd5 Qe7 Nxc7+ Kd8 Nxa8")
+ ("C27j" "Vienna: Frankenstein-Dracula, 11.d3" "e4 e5 Nc3 Nf6 Bc4 Nxe4 Qh5 Nd6 
Bb3 Nc6 Nb5 g6 Qf3 f5 Qd5 Qe7 Nxc7+ Kd8 Nxa8 b6 d3")
+ ("C28a" "Vienna: 3.Bc4 Nc6" "e4 e5 Nc3 Nf6 Bc4 Nc6")
+ ("C28b" "Vienna: 3.Bc4 Nc6 4.f4" "e4 e5 Nc3 Nf6 Bc4 Nc6 f4")
+ ("C28b" "Vienna: Bronstein Gambit" "e4 e5 Nc3 Nf6 Bc4 Nc6 f4 Nxe4 Nf3")
+ ("C28c" "Vienna: 3.Bc4 Nc6 4.d3" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3")
+ ("C28d" "Vienna: 3.Bc4 Nc6 4.d3 Be7" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Be7")
+ ("C28e" "Vienna: 3.Bc4 Nc6 4.d3 Na5" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Na5")
+ ("C28f" "Vienna: 3.Bc4 Nc6 4.d3 Na5 5.Nge2" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Na5 
Nge2")
+ ("C28g" "Vienna: 3.Bc4 Nc6 4.d3 Bc5" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bc5")
+ ("C28h" "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.Bg5" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bc5 Bg5")
+ ("C28i" "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bc5 f4")
+ ("C28j" "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 
Bc5 f4 d6 Nf3")
+ ("C28k" "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3 Bg4" "e4 e5 Nc3 Nf6 Bc4 Nc6 
d3 Bc5 f4 d6 Nf3 Bg4")
+ ("C28l" "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3 a6" "e4 e5 Nc3 Nf6 Bc4 Nc6 
d3 Bc5 f4 d6 Nf3 a6")
+ ("C28m" "Vienna: 3.Bc4 Nc6 4.d3 Bb4" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bb4")
+ ("C28n" "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Nf3" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bb4 Nf3")
+ ("C28o" "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Bg5" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bb4 Bg5")
+ ("C28p" "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Ne2" "e4 e5 Nc3 Nf6 Bc4 Nc6 d3 Bb4 Ne2")
+ ("C29a" "Vienna Gambit" "e4 e5 Nc3 Nf6 f4")
+ ("C29a" "Vienna Gambit: 3...exf4" "e4 e5 Nc3 Nf6 f4 exf4")
+ ("C29b" "Vienna Gambit: 3...d6" "e4 e5 Nc3 Nf6 f4 d6")
+ ("C29b" "Vienna Gambit: 3...d6 4.Nf3" "e4 e5 Nc3 Nf6 f4 d6 Nf3")
+ ("C29c" "Vienna Gambit: 3...d5" "e4 e5 Nc3 Nf6 f4 d5")
+ ("C29d" "Vienna Gambit: 3...d5 4.exd5" "e4 e5 Nc3 Nf6 f4 d5 exd5")
+ ("C29d" "Vienna Gambit: 3...d5 4.exd5 exf4" "e4 e5 Nc3 Nf6 f4 d5 exd5 exf4")
+ ("C29e" "Vienna Gambit: Steinitz Variation" "e4 e5 Nc3 Nf6 f4 d5 d3")
+ ("C29f" "Vienna Gambit: 4.fxe5" "e4 e5 Nc3 Nf6 f4 d5 fxe5")
+ ("C29f" "Vienna Gambit: 4.fxe5" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4")
+ ("C29g" "Vienna Gambit: Oxford Variation" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 d3")
+ ("C29g" "Vienna Gambit: Wurzburger Trap" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 d3 
Qh4+ g3 Nxg3 Nf3 Qh5 Nxd5")
+ ("C29h" "Vienna Gambit: Oxford, 5...Bb4" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 d3 
Bb4")
+ ("C29h" "Vienna Gambit: Oxford, 5...Bb4 6.dxe4 Qh4+ 7.Ke2" "e4 e5 Nc3 Nf6 f4 
d5 fxe5 Nxe4 d3 Bb4 dxe4 Qh4+ Ke2")
+ ("C29i" "Vienna Gambit: Oxford, 5...Nxc3" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 d3 
Nxc3")
+ ("C29j" "Vienna Gambit: Oxford, 5...Nxc3 6.bxc3 d4" "e4 e5 Nc3 Nf6 f4 d5 fxe5 
Nxe4 d3 Nxc3 bxc3 d4")
+ ("C29k" "Vienna Gambit: Paulsen Attack" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Qf3")
+ ("C29k" "Vienna Gambit: Paulsen Attack, 5...Nc6" "e4 e5 Nc3 Nf6 f4 d5 fxe5 
Nxe4 Qf3 Nc6")
+ ("C29l" "Vienna Gambit: Paulsen Attack, Bardeleben Variation" "e4 e5 Nc3 Nf6 
f4 d5 fxe5 Nxe4 Qf3 f5")
+ ("C29l" "Vienna Gambit: Paulsen Attack, Heyde Variation" "e4 e5 Nc3 Nf6 f4 d5 
fxe5 Nxe4 Qf3 f5 d4")
+ ("C29m" "Vienna Gambit: Paulsen Attack, 5...Nxc3" "e4 e5 Nc3 Nf6 f4 d5 fxe5 
Nxe4 Qf3 Nxc3")
+ ("C29n" "Vienna Gambit: 5.Nf3" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3")
+ ("C29o" "Vienna Gambit: 5.Nf3 Bg4" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3 Bg4")
+ ("C29o" "Vienna Gambit: Kaufmann Variation" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 
Nf3 Bg4 Qe2")
+ ("C29p" "Vienna Gambit: 5.Nf3 Bb4" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3 Bb4")
+ ("C29q" "Vienna Gambit: 5.Nf3 Nc6" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3 Nc6")
+ ("C29r" "Vienna Gambit: Breyer Variation" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3 
Be7")
+ ("C29s" "Vienna Gambit: Breyer, 6.Qe2" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 Nf3 Be7 
Qe2")
+ ("C29t" "Vienna Gambit: Breyer, 6.Qe2 Nxc3" "e4 e5 Nc3 Nf6 f4 d5 fxe5 Nxe4 
Nf3 Be7 Qe2 Nxc3")
+ ("C29t" "Vienna Gambit: Breyer, 6.Qe2 Nxc3 7.dxc3" "e4 e5 Nc3 Nf6 f4 d5 fxe5 
Nxe4 Nf3 Be7 Qe2 Nxc3 dxc3")
+ ("C30a" "King's Gambit" "e4 e5 f4")
+ ("C30b" "King's Gambit: Mafia Defence" "e4 e5 f4 c5")
+ ("C30c" "King's Gambit: 2...d6" "e4 e5 f4 d6")
+ ("C30c" "King's Gambit: 2...d6 3.Nf3" "e4 e5 f4 d6 Nf3")
+ ("C30c" "King's Gambit: 2...d6 3.Nf3 Nc6" "e4 e5 f4 d6 Nf3 Nc6")
+ ("C30d" "King's Gambit: Wade Variation" "e4 e5 f4 Nf6")
+ ("C30e" "King's Gambit: Norwald Variation" "e4 e5 f4 Qf6")
+ ("C30e" "King's Gambit: Norwald Variation, Schubert line" "e4 e5 f4 Qf6 Nc3 
Qxf4 d4")
+ ("C30e" "King's Gambit: Norwald Variation, Bücker Gambit" "e4 e5 f4 Qf6 Nf3 
Qxf4 Nc3 Bb4 Bc4")
+ ("C30f" "King's Gambit: Keene Defence" "e4 e5 f4 Qh4+")
+ ("C30f" "King's Gambit: Keene Defence, 3.g3 Qe7" "e4 e5 f4 Qh4+ g3 Qe7")
+ ("C30g" "King's Gambit: 2...Nc6" "e4 e5 f4 Nc6")
+ ("C30h" "King's Gambit: Adelaide-Wahls Variation" "e4 e5 f4 Nc6 Nf3 f5")
+ ("C30i" "King's Gambit: Adelaide-Wahls, 4.exf5" "e4 e5 f4 Nc6 Nf3 f5 exf5")
+ ("C30i" "King's Gambit: Adelaide-Wahls, 4.exf5 e4" "e4 e5 f4 Nc6 Nf3 f5 exf5 
e4")
+ ("C30i" "King's Gambit: Adelaide-Wahls, 4.exf5 e4 5.Ne5 Nf6" "e4 e5 f4 Nc6 
Nf3 f5 exf5 e4 Ne5 Nf6")
+ ("C30j" "King's Gambit: Classical KGD" "e4 e5 f4 Bc5")
+ ("C30j" "KGD: Classical, 3.Bc4" "e4 e5 f4 Bc5 Bc4")
+ ("C30j" "KGD: Classical, 3.Nf3" "e4 e5 f4 Bc5 Nf3")
+ ("C30j" "KGD: Classical, Senechaud Countergambit" "e4 e5 f4 Bc5 Nf3 g5")
+ ("C30k" "KGD: Classical, 3.Nf3 d6" "e4 e5 f4 Bc5 Nf3 d6")
+ ("C30k" "KGD: Classical, Heath Variation" "e4 e5 f4 Bc5 Nf3 d6 b4")
+ ("C30k" "KGD: Classical, Soldatenkov Variation" "e4 e5 f4 Bc5 Nf3 d6 fxe5")
+ ("C30l" "KGD: Classical, 3.Nf3 d6 4.Nc3" "e4 e5 f4 Bc5 Nf3 d6 Nc3")
+ ("C30l" "KGD: Classical, Hanham Variation" "e4 e5 f4 Bc5 Nf3 d6 Nc3 Nd7")
+ ("C30m" "KGD: Classical, 3.Nf3 d6 4.Nc3 Nf6 5.Bc4" "e4 e5 f4 Bc5 Nf3 d6 Nc3 
Nf6 Bc4")
+ ("C30m" "KGD: Classical, Svenonius Variation" "e4 e5 f4 Bc5 Nf3 d6 Nc3 Nf6 
Bc4 Nc6 d3 Bg4 h3 Bxf3 Qxf3 exf4")
+ ("C30n" "KGD: Classical, 4.c3" "e4 e5 f4 Bc5 Nf3 d6 c3")
+ ("C30n" "KGD: Classical, Marshall Attack" "e4 e5 f4 Bc5 Nf3 d6 c3 Bg4 fxe5 
dxe5 Qa4+")
+ ("C30o" "KGD: Classical, 4.c3 Bb6" "e4 e5 f4 Bc5 Nf3 d6 c3 Bb6")
+ ("C30p" "KGD: Classical, 4.c3 Nf6" "e4 e5 f4 Bc5 Nf3 d6 c3 Nf6")
+ ("C30q" "KGD: Classical, 4.c3 Nf6 5.d4" "e4 e5 f4 Bc5 Nf3 d6 c3 Nf6 d4")
+ ("C30q" "KGD: Classical, 4.c3 Nf6 5.d4" "e4 e5 f4 Bc5 Nf3 d6 c3 Nf6 d4 Bb6")
+ ("C30q" "KGD: Classical, 4.c3 Nf6 5.d4" "e4 e5 f4 Bc5 Nf3 d6 c3 Nf6 d4 exd4 
cxd4 Bb6")
+ ("C30r" "KGD: Classical Countergambit" "e4 e5 f4 Bc5 Nf3 d6 c3 f5")
+ ("C30r" "KGD: Classical, Reti Variation" "e4 e5 f4 Bc5 Nf3 d6 c3 f5 fxe5 dxe5 
d4 exd4 Bc4")
+ ("C31" "KGD: Falkbeer Countergambit" "e4 e5 f4 d5")
+ ("C31" "KGD: Falkbeer, Tartakower Variation" "e4 e5 f4 d5 Nf3")
+ ("C31" "KGD: Falkbeer, Milner-Barry Variation" "e4 e5 f4 d5 Nc3")
+ ("C31" "KGD: Falkbeer, 3.exd5" "e4 e5 f4 d5 exd5")
+ ("C31" "KGD: Falkbeer, 3.exd5 exf4" "e4 e5 f4 d5 exd5 exf4")
+ ("C31" "KGD: Falkbeer, Marshall/Nimzowitsch Countergambit" "e4 e5 f4 d5 exd5 
c6")
+ ("C31" "KGD: Falkbeer, Marshall/Nimzowitsch, 4.dxc6" "e4 e5 f4 d5 exd5 c6 
dxc6")
+ ("C31" "KGD: Falkbeer, Marshall/Nimzowitsch, 4.Qe2" "e4 e5 f4 d5 exd5 c6 Qe2")
+ ("C31" "KGD: Falkbeer, Marshall/Nimzowitsch, 4.Nc3" "e4 e5 f4 d5 exd5 c6 Nc3")
+ ("C31" "KGD: Falkbeer, 3.exd5 e4" "e4 e5 f4 d5 exd5 e4")
+ ("C31" "KGD: Falkbeer, Rubinstein Variation" "e4 e5 f4 d5 exd5 e4 Nc3 Nf6 
Qe2")
+ ("C31" "KGD: Falkbeer, Nimzowitsch Variation" "e4 e5 f4 d5 exd5 e4 Bb5+")
+ ("C31" "KGD: Falkbeer, 4.d3" "e4 e5 f4 d5 exd5 e4 d3")
+ ("C32" "KGD: Falkbeer, 4.d3 Nf6" "e4 e5 f4 d5 exd5 e4 d3 Nf6")
+ ("C32" "KGD: Falkbeer, Keres Variation" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Nd2")
+ ("C32" "KGD: Falkbeer, Keres, 5...exd3" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Nd2 exd3")
+ ("C32" "KGD: Falkbeer, Reti Variation" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Qe2")
+ ("C32" "KGD: Falkbeer, 4.d3 Nf6 5.Nc3" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Nc3")
+ ("C32" "KGD: Falkbeer, 4.d3 Nf6 5.Nc3 Bb4" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Nc3 
Bb4")
+ ("C32" "KGD: Falkbeer, Morphy Gambit" "e4 e5 f4 d5 exd5 e4 d3 Nf6 Nc3 Bb4 Bd2 
e3")
+ ("C32" "KGD: Falkbeer, 5.dxe4" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4")
+ ("C32" "KGD: Falkbeer, Charousek Variation" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Qe2")
+ ("C32" "KGD: Falkbeer, 5.dxe4 Nxe4 6.Be3" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Be3")
+ ("C32" "KGD: Falkbeer, 5.dxe4 Nxe4 6.Nf3" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Nf3")
+ ("C32" "KGD: Falkbeer, 5.dxe4 Nxe4 6.Nf3 Bc5 7.Qe2" "e4 e5 f4 d5 exd5 e4 d3 
Nf6 dxe4 Nxe4 Nf3 Bc5 Qe2")
+ ("C32" "KGD: Falkbeer, Alapin Variation" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Nf3 Bc5 Qe2 Bf2+ Kd1 Qxd5+ Nfd2")
+ ("C32" "KGD: Falkbeer, Main Line, 7...Bf5" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Nf3 Bc5 Qe2 Bf5")
+ ("C32" "KGD: Falkbeer, Tarrasch Variation" "e4 e5 f4 d5 exd5 e4 d3 Nf6 dxe4 
Nxe4 Nf3 Bc5 Qe2 Bf5 g4 O-O")
+ ("C32" "KGD: Falkbeer, Main Line, 7...Bf5 8.Nc3" "e4 e5 f4 d5 exd5 e4 d3 Nf6 
dxe4 Nxe4 Nf3 Bc5 Qe2 Bf5 Nc3")
+ ("C33" "King's Gambit Accepted (KGA)" "e4 e5 f4 exf4")
+ ("C33" "KGA: Tumbleweed/Drunken King" "e4 e5 f4 exf4 Kf2")
+ ("C33" "KGA: Orsini Gambit" "e4 e5 f4 exf4 b3")
+ ("C33" "KGA: Stamma (Leonardo) Gambit" "e4 e5 f4 exf4 h4")
+ ("C33" "KGA: Schurig Gambit" "e4 e5 f4 exf4 Bd3")
+ ("C33" "KGA: Basman Gambit" "e4 e5 f4 exf4 Qe2")
+ ("C33" "KGA: Carrera Gambit" "e4 e5 f4 exf4 Qh5")
+ ("C33" "KGA: Eisenberg Gambit" "e4 e5 f4 exf4 Nh3")
+ ("C33" "KGA: Eisenberg Gambit" "e4 e5 f4 exf4 Ne2")
+ ("C33" "KGA: Villemson Gambit" "e4 e5 f4 exf4 d4")
+ ("C33" "KGA: Keres Gambit" "e4 e5 f4 exf4 Nc3")
+ ("C33" "KGA: Breyer Gambit" "e4 e5 f4 exf4 Qf3")
+ ("C33" "KGA: Lesser Bishop's (Tartakower) Gambit" "e4 e5 f4 exf4 Be2")
+ ("C33" "KGA: Bishop's Gambit" "e4 e5 f4 exf4 Bc4")
+ ("C33" "KGA: Bishop's Gambit, Chigorin Attack" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 d5 
Bxd5 g5 g3")
+ ("C33" "KGA: Bishop's Gambit, Greco Variation" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
Bc5")
+ ("C33" "KGA: Bishop's Gambit, Classical Defence" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
g5")
+ ("C33" "KGA: Bishop's Gambit, Grimm Attack" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 g5 
Nc3 Bg7 d4 d6 e5")
+ ("C33" "KGA: Bishop's Gambit, Classical Defence" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
g5 Nc3 Bg7 d4 Ne7")
+ ("C33" "KGA: Bishop's Gambit, McDonnell Attack" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
g5 Nc3 Bg7 d4 Ne7 g3")
+ ("C33" "KGA: bishop's Gambit, McDonnell Attack" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
g5 Nc3 Bg7 g3")
+ ("C33" "KGA: Bishop's Gambit, Fraser Variation" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 
g5 Nc3 Bg7 g3 fxg3 Qf3")
+ ("C33" "KGA: Bishop's Gambit, Classical Defence, Cozio Attack" "e4 e5 f4 exf4 
Bc4 Qh4+ Kf1 g5 Qf3")
+ ("C33" "KGA: Bishop's Gambit, Boden Defence" "e4 e5 f4 exf4 Bc4 Qh4+ Kf1 Nc6")
+ ("C33" "KGA: Bishop's Gambit, Bryan Countergambit" "e4 e5 f4 exf4 Bc4 Qh4+ 
Kf1 b5")
+ ("C33" "KGA: Bishop's Gambit, Bryan Countergambit" "e4 e5 f4 exf4 Bc4 b5")
+ ("C33" "KGA: Bishop's Gambit, Steinitz Defence" "e4 e5 f4 exf4 Bc4 Ne7")
+ ("C33" "KGA: Bishop's Gambit, Maurian Defence" "e4 e5 f4 exf4 Bc4 Nc6")
+ ("C33" "KGA: Bishop's Gambit, Ruy Lopez Defence" "e4 e5 f4 exf4 Bc4 c6")
+ ("C33" "KGA: Bishop's Gambit, Lopez-Gianutio Countergambit" "e4 e5 f4 exf4 
Bc4 f5")
+ ("C33" "KGA: Bishop's Gambit, Lopez-Gianutio Countergambit, Hein Variation" 
"e4 e5 f4 exf4 Bc4 f5 Qe2 Qh4+ Kd1 fxe4 Nc3 Kd8")
+ ("C33" "KGA: Bishop's Gambit, Bledow Variation" "e4 e5 f4 exf4 Bc4 d5")
+ ("C33" "KGA: Bishop's Gambit, Bledow, 4.exd5" "e4 e5 f4 exf4 Bc4 d5 exd5")
+ ("C33" "KGA: Bishop's Gambit, Bledow, 4.Bxd5" "e4 e5 f4 exf4 Bc4 d5 Bxd5")
+ ("C33" "KGA: Bishop's Gambit, Boren-Svenonius Variation" "e4 e5 f4 exf4 Bc4 
d5 Bxd5 Qh4+ Kf1 Bd6")
+ ("C33" "KGA: Bishop's Gambit, Anderssen Variation" "e4 e5 f4 exf4 Bc4 d5 Bxd5 
c6")
+ ("C33" "KGA: Bishop's Gambit, Morphy Variation" "e4 e5 f4 exf4 Bc4 d5 Bxd5 
Nf6")
+ ("C33" "KGA: Bishop's Gambit, Cozio Defence" "e4 e5 f4 exf4 Bc4 Nf6")
+ ("C33" "KGA: Bishop's Gambit, Bogoljubow Variation" "e4 e5 f4 exf4 Bc4 Nf6 
Nc3")
+ ("C33" "KGA: Bishop's Gambit, Paulsen Attack" "e4 e5 f4 exf4 Bc4 Nf6 Nc3 Bb4 
e5")
+ ("C33" "KGA: Bishop's Gambit, Jänisch Variation" "e4 e5 f4 exf4 Bc4 Nf6 Nc3 
c6")
+ ("C34" "KGA: King's Knight Gambit" "e4 e5 f4 exf4 Nf3")
+ ("C34" "KGA: Bonsch-Osmolovsky Variation" "e4 e5 f4 exf4 Nf3 Ne7")
+ ("C34" "KGA: Gianutio Countergambit" "e4 e5 f4 exf4 Nf3 f5")
+ ("C34" "KGA: Becker Defence (Anti-Kieseritzky)" "e4 e5 f4 exf4 Nf3 h6")
+ ("C34" "KGA: Schallop Defence" "e4 e5 f4 exf4 Nf3 Nf6")
+ ("C34" "KGA: Fischer Defence" "e4 e5 f4 exf4 Nf3 d6")
+ ("C34" "KGA: Fischer, 4.Bc4" "e4 e5 f4 exf4 Nf3 d6 Bc4")
+ ("C34" "KGA: Fischer, 4.d4" "e4 e5 f4 exf4 Nf3 d6 d4")
+ ("C34" "KGA: Fischer, Main Line" "e4 e5 f4 exf4 Nf3 d6 d4 g5 h4 g4 Ng1")
+ ("C35" "KGA: Cunningham Defence" "e4 e5 f4 exf4 Nf3 Be7")
+ ("C35" "KGA: Cunningham, Bertin Gambit" "e4 e5 f4 exf4 Nf3 Be7 Bc4 Bh4+ g3")
+ ("C35" "KGA: Cunningham, Three Pawns Gambit" "e4 e5 f4 exf4 Nf3 Be7 Bc4 Bh4+ 
g3 fxg3 O-O gxh2+ Kh1")
+ ("C35" "KGA: Cunningham, Euwe Defence" "e4 e5 f4 exf4 Nf3 Be7 Bc4 Nf6")
+ ("C36" "KGA: Scandinavian (Abbazia) Variation" "e4 e5 f4 exf4 Nf3 d5")
+ ("C36" "KGA: Scandinavian, 4.exd5" "e4 e5 f4 exf4 Nf3 d5 exd5")
+ ("C36" "KGA: Scandinavian, 4.exd5 Bd6" "e4 e5 f4 exf4 Nf3 d5 exd5 Bd6")
+ ("C36" "KGA: Scandinavian, Modern Variation" "e4 e5 f4 exf4 Nf3 d5 exd5 Nf6")
+ ("C36" "KGA: Scandinavian, Modern, 5.Bc4" "e4 e5 f4 exf4 Nf3 d5 exd5 Nf6 Bc4")
+ ("C36" "KGA: Scandinavian, Modern, 5.Nc3" "e4 e5 f4 exf4 Nf3 d5 exd5 Nf6 Nc3")
+ ("C36" "KGA: Scandinavian, Modern, 5.Bb5+ " "e4 e5 f4 exf4 Nf3 d5 exd5 Nf6 
Bb5+")
+ ("C36" "KGA: Scandinavian, Modern, 5.Bb5+ c6" "e4 e5 f4 exf4 Nf3 d5 exd5 Nf6 
Bb5+ c6")
+ ("C36" "KGA: Scandinavian, Modern, 5.Bb5+ c6 6.dxc6 Nxc6" "e4 e5 f4 exf4 Nf3 
d5 exd5 Nf6 Bb5+ c6 dxc6 Nxc6")
+ ("C36" "KGA: Scandinavian, Modern, 5.Bb5+ c6 6.dxc6 bxc6" "e4 e5 f4 exf4 Nf3 
d5 exd5 Nf6 Bb5+ c6 dxc6 bxc6")
+ ("C36" "KGA: Scandinavian, Botvinnik Variation" "e4 e5 f4 exf4 Nf3 d5 exd5 
Nf6 Bb5+ c6 dxc6 bxc6 Bc4 Nd5")
+ ("C37" "KGA: 3.Nf3 g5" "e4 e5 f4 exf4 Nf3 g5")
+ ("C37" "KGA: Quaade Gambit" "e4 e5 f4 exf4 Nf3 g5 Nc3")
+ ("C37" "KGA: Rosentreter Gambit" "e4 e5 f4 exf4 Nf3 g5 d4")
+ ("C37" "KGA: Sörensen Gambit" "e4 e5 f4 exf4 Nf3 g5 d4 g4 Ne5")
+ ("C37" "KGA: 3.Nf3 g5 4.Bc4" "e4 e5 f4 exf4 Nf3 g5 Bc4")
+ ("C37" "KGA: Blachly Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 Nc6")
+ ("C37" "KGA: 3.Nf3 g5 4.Bc4 g4" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4")
+ ("C37" "KGA: Lolli Gambit (Wild Muzio)" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Bxf7+")
+ ("C37" "KGA: Lolli Gambit, Young Variation" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 
Bxf7+ Kxf7 O-O gxf3 Qxf3 Qf6 d4 Qxd4+ Be3 Qf6 Nc3")
+ ("C37" "KGA: Ghulam-Kassim Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 d4")
+ ("C37" "KGA: MacDonnell Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Nc3")
+ ("C37" "KGA: Salvio Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Ne5")
+ ("C37" "KGA: Salvio, Silberschmidt Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Ne5 
Qh4+ Kf1 Nh6 d4 f3")
+ ("C37" "KGA: Salvio, Anderssen Counterattack" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 
Ne5 Qh4+ Kf1 Nh6 d4 d6")
+ ("C37" "KGA: Salvio, Cochrane Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Ne5 Qh4+ 
Kf1 f3")
+ ("C37" "KGA: Salvio, Herzfeld Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 Ne5 Qh4+ 
Kf1 Nc6")
+ ("C37" "KGA: Muzio Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 O-O")
+ ("C37" "KGA: Muzio Gambit, Paulsen Variation" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 
O-O gxf3 Qxf3 Qf6 e5 Qxe5 d3 Bh6 Nc3 Ne7 Bd2 Nbc6 Rae1")
+ ("C37" "KGA: Double Muzio Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 O-O gxf3 Qxf3 
Qf6 e5 Qxe5 Bxf7+")
+ ("C37" "KGA: Muzio Gambit, From Defence" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 O-O 
gxf3 Qxf3 Qe7")
+ ("C37" "KGA: Muzio Gambit, Holloway Defence" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 O-O 
gxf3 Qxf3 Nc6")
+ ("C37" "KGA: Muzio Gambit, Kling and Horwitz Counterattack" "e4 e5 f4 exf4 
Nf3 g5 Bc4 g4 O-O Qe7")
+ ("C37" "KGA: Muzio Gambit, Brentano Defence" "e4 e5 f4 exf4 Nf3 g5 Bc4 g4 O-O 
d5")
+ ("C38" "KGA: 3.Nf3 g5 4.Bc4 Bg7" "e4 e5 f4 exf4 Nf3 g5 Bc4 Bg7")
+ ("C38" "KGA: Hanstein Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 Bg7 d4")
+ ("C38" "KGA: Hanstein Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 Bg7 O-O h6 d4 d6")
+ ("C38" "KGA: Philidor Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 Bg7 h4")
+ ("C38" "KGA: Greco Gambit" "e4 e5 f4 exf4 Nf3 g5 Bc4 Bg7 h4 h6 d4 d6 Nc3 c6 
hxg5 hxg5 Rxh8 Bxh8 Ne5")
+ ("C38" "KGA: Philidor Gambit, Schultz Variation" "e4 e5 f4 exf4 Nf3 g5 Bc4 
Bg7 h4 h6 d4 d6 Qd3")
+ ("C39" "KGA: 3.Nf3 g5 4.h4" "e4 e5 f4 exf4 Nf3 g5 h4")
+ ("C39" "KGA: Allgaier Gambit" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5")
+ ("C39" "KGA: Allgaier, Horny Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 Nxf7 
Kxf7 Qxg4 Nf6 Qxf4 Bd6")
+ ("C39" "KGA: Allgaier, Thorold Variation" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 
Nxf7 Kxf7 d4")
+ ("C39" "KGA: Allgaier, Cook Variation" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 
Nxf7 Kxf7 d4 d5 Bxf4 dxe4 Bc4+ Kg7 Be5+")
+ ("C39" "KGA: Allgaier, Blackburne Gambit" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 
Nxf7 Kxf7 Nc3")
+ ("C39" "KGA: Allgaier, Walker Attack" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 Nxf7 
Kxf7 Bc4+")
+ ("C39" "KGA: Allgaier, Urusov Attack" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 h6 Nxf7 
Kxf7 Bc4+ d5 Bxd5+ Kg7 d4")
+ ("C39" "KGA: Allgaier, Schlechter Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ng5 
Nf6")
+ ("C39" "KGA: Kieseritsky" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5")
+ ("C39" "KGA: Kieseritsky, Green Variation" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
d6")
+ ("C39" "KGA: Kieseritsky, Paulsen Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
Bg7")
+ ("C39" "KGA: Kieseritsky, Long Whip Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
h5")
+ ("C39" "KGA: Kieseritsky, Long Whip Defence, Jänisch Variation" "e4 e5 f4 
exf4 Nf3 g5 h4 g4 Ne5 h5 Bc4 Rh7 d4 Bh6 Nc3")
+ ("C39" "KGA: Kieseritsky, Brentano (Campbell) Defence" "e4 e5 f4 exf4 Nf3 g5 
h4 g4 Ne5 d5")
+ ("C39" "KGA: Kieseritsky, Brentano Defence, Kaplanek Variation" "e4 e5 f4 
exf4 Nf3 g5 h4 g4 Ne5 d5 d4 Nf6 exd5 Qxd5 Nc3 Bb4 Kf2")
+ ("C39" "KGA: Kieseritsky, Brentano Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
d5 d4 Nf6 Bxf4")
+ ("C39" "KGA: Kieseritsky, Brentano Defence, Caro Variation" "e4 e5 f4 exf4 
Nf3 g5 h4 g4 Ne5 d5 d4 Nf6 Bxf4 Nxe4 Nd2")
+ ("C39" "KGA: Kieseritsky, Salvio (Rosenthal) Defence" "e4 e5 f4 exf4 Nf3 g5 
h4 g4 Ne5 Qe7")
+ ("C39" "KGA: Kieseritsky, Salvio Defence, Cozio Variation" "e4 e5 f4 exf4 Nf3 
g5 h4 g4 Ne5 Qe7 d4 f5 Bc4")
+ ("C39" "KGA: Kieseritsky, Polerio Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
Be7")
+ ("C39" "KGA: Kieseritsky, Neumann Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
Nc6")
+ ("C39" "KGA: Kieseritsky, Berlin Defence" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 
Nf6")
+ ("C39" "KGA: Kieseritsky, Berlin Defence, Riviere Variation" "e4 e5 f4 exf4 
Nf3 g5 h4 g4 Ne5 Nf6 Nxg4 d5")
+ ("C39" "KGA: Kieseritsky, Berlin Defence, 6.Bc4" "e4 e5 f4 exf4 Nf3 g5 h4 g4 
Ne5 Nf6 Bc4")
+ ("C39" "KGA: Kieseritsky, Rice Gambit" "e4 e5 f4 exf4 Nf3 g5 h4 g4 Ne5 Nf6 
Bc4 d5 exd5 Bd6 O-O")
+ ("C40a" "Open Game" "e4 e5 Nf3")
+ ("C40a" "Open Game: Damiano Defence" "e4 e5 Nf3 f6")
+ ("C40b" "Open Game: Greco Defence" "e4 e5 Nf3 Qf6")
+ ("C40c" "Open Game: Gunderam Defence" "e4 e5 Nf3 Qe7")
+ ("C40d" "Elephant Gambit" "e4 e5 Nf3 d5")
+ ("C40e" "Elephant Gambit: 3.Nxe5" "e4 e5 Nf3 d5 Nxe5")
+ ("C40e" "Elephant Gambit: 3.Nxe5 dxe4 4.Bc4" "e4 e5 Nf3 d5 Nxe5 dxe4 Bc4")
+ ("C40f" "Elephant Gambit: 3.exd5" "e4 e5 Nf3 d5 exd5")
+ ("C40g" "Elephant Gambit: Maroczy" "e4 e5 Nf3 d5 exd5 Bd6")
+ ("C40h" "Elephant Gambit: Paulsen" "e4 e5 Nf3 d5 exd5 e4")
+ ("C40i" "Latvian Gambit" "e4 e5 Nf3 f5")
+ ("C40j" "Latvian Gambit: 3.d3" "e4 e5 Nf3 f5 d3")
+ ("C40k" "Latvian Gambit: 3.Nc3" "e4 e5 Nf3 f5 Nc3")
+ ("C40l" "Latvian Gambit: 3.d4" "e4 e5 Nf3 f5 d4")
+ ("C40l" "Latvian Gambit: 3.d4 fxe4 5.Nxe5 Nf6" "e4 e5 Nf3 f5 d4 fxe4 Nxe5 
Nf6")
+ ("C40m" "Latvian Gambit: 3.exf5" "e4 e5 Nf3 f5 exf5")
+ ("C40m" "Latvian Gambit: 3.exf5 e4" "e4 e5 Nf3 f5 exf5 e4")
+ ("C40n" "Latvian Gambit: 3.Bc4" "e4 e5 Nf3 f5 Bc4")
+ ("C40n" "Latvian Gambit: Strautins Variation" "e4 e5 Nf3 f5 Bc4 b5")
+ ("C40n" "Latvian Gambit: Morgado Variation" "e4 e5 Nf3 f5 Bc4 Nf6")
+ ("C40o" "Latvian Gambit: 3.Bc4 fxe4" "e4 e5 Nf3 f5 Bc4 fxe4")
+ ("C40o" "Latvian: Blackburne Variation (Corkscrew Countergambit)" "e4 e5 Nf3 
f5 Bc4 fxe4 Nxe5 Nf6")
+ ("C40o" "Latvian Gambit: Svedenborg Variation" "e4 e5 Nf3 f5 Bc4 fxe4 Nxe5 
d5")
+ ("C40o" "Latvian Gambit: Svedenborg, 6.Nxg6 Nf6" "e4 e5 Nf3 f5 Bc4 fxe4 Nxe5 
d5 Qh5+ g6 Nxg6 Nf6")
+ ("C40o" "Latvian Gambit: Svedenborg, 6.Nxg6 hxg6" "e4 e5 Nf3 f5 Bc4 fxe4 Nxe5 
d5 Qh5+ g6 Nxg6 hxg6")
+ ("C40p" "Latvian Gambit: Poisoned Pawn Variation" "e4 e5 Nf3 f5 Bc4 fxe4 Nxe5 
Qg5")
+ ("C40p" "Latvian Gambit: Poisoned Pawn, Main Line" "e4 e5 Nf3 f5 Bc4 fxe4 
Nxe5 Qg5 d4 Qxg2 Qh5+ g6 Bf7+ Kd8")
+ ("C40q" "Latvian Gambit: 3.Nxe5" "e4 e5 Nf3 f5 Nxe5")
+ ("C40r" "Latvian Gambit: 3.Nxe5 Nc6" "e4 e5 Nf3 f5 Nxe5 Nc6")
+ ("C40s" "Latvian Gambit: 3.Nxe5 Qf6" "e4 e5 Nf3 f5 Nxe5 Qf6")
+ ("C40s" "Latvian Gambit: 3.Nxe5 Qf6 4.Nc4" "e4 e5 Nf3 f5 Nxe5 Qf6 Nc4")
+ ("C40t" "Latvian Gambit: 3.Nxe5 Qf6 4.d4" "e4 e5 Nf3 f5 Nxe5 Qf6 d4")
+ ("C40t" "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6" "e4 e5 Nf3 f5 Nxe5 Qf6 d4 d6")
+ ("C40t" "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4" "e4 e5 Nf3 f5 Nxe5 Qf6 d4 
d6 Nc4")
+ ("C40t" "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4 fxe4" "e4 e5 Nf3 f5 Nxe5 
Qf6 d4 d6 Nc4 fxe4")
+ ("C40u" "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4 fxe4 6.Be2" "e4 e5 Nf3 f5 
Nxe5 Qf6 d4 d6 Nc4 fxe4 Be2")
+ ("C40v" "Latvian Gambit: Nimzowitsch Variation" "e4 e5 Nf3 f5 Nxe5 Qf6 d4 d6 
Nc4 fxe4 Ne3")
+ ("C40w" "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4 fxe4 6.Nc3" "e4 e5 Nf3 f5 
Nxe5 Qf6 d4 d6 Nc4 fxe4 Nc3")
+ ("C41a" "Philidor Defence" "e4 e5 Nf3 d6")
+ ("C41b" "Philidor: 3.Bc4" "e4 e5 Nf3 d6 Bc4")
+ ("C41b" "Philidor: Steinitz Variation" "e4 e5 Nf3 d6 Bc4 Be7 c3")
+ ("C41b" "Philidor: Lopez Countergambit" "e4 e5 Nf3 d6 Bc4 f5")
+ ("C41b" "Philidor: Lopez Countergambit, Jänisch Variation" "e4 e5 Nf3 d6 Bc4 
f5 d4 exd4 Ng5 Nh6 Nxh7")
+ ("C41c" "Philidor: 3.d4" "e4 e5 Nf3 d6 d4")
+ ("C41d" "Philidor: Philidor Countergambit" "e4 e5 Nf3 d6 d4 f5")
+ ("C41d" "Philidor: Philidor Countergambit, Zukertort Variation" "e4 e5 Nf3 d6 
d4 f5 Nc3")
+ ("C41e" "Philidor: Philidor Countergambit, 4.dxe5" "e4 e5 Nf3 d6 d4 f5 dxe5")
+ ("C41e" "Philidor: Philidor Countergambit, Steinitz Variation" "e4 e5 Nf3 d6 
d4 f5 dxe5 fxe4 Ng5 d5 Nc3")
+ ("C41e" "Philidor: Philidor Countergambit, del Rio Attack" "e4 e5 Nf3 d6 d4 
f5 dxe5 fxe4 Ng5 d5 e6")
+ ("C41e" "Philidor: Philidor Countergambit, Berger Variation" "e4 e5 Nf3 d6 d4 
f5 dxe5 fxe4 Ng5 d5 e6 Bc5 Nc3")
+ ("C41f" "Philidor: Hanham Variation" "e4 e5 Nf3 d6 d4 Nd7")
+ ("C41f" "Philidor: Hanham, 4.Bc4" "e4 e5 Nf3 d6 d4 Nd7 Bc4")
+ ("C41g" "Philidor: Hanham, 4.Bc4 c6" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6")
+ ("C41g" "Philidor: Hanham, Krause Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 O-O")
+ ("C41g" "Philidor: Hanham, Steiner Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 O-O 
Be7 dxe5")
+ ("C41g" "Philidor: Hanham, Kmoch Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 Ng5")
+ ("C41g" "Philidor: Hanham, Berger Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 Ng5 
Nh6 f4 Be7 O-O O-O c3 d5")
+ ("C41g" "Philidor: Hanham, Schlechter Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 
Nc3")
+ ("C41g" "Philidor: Hanham, Delmar Variation" "e4 e5 Nf3 d6 d4 Nd7 Bc4 c6 c3")
+ ("C41h" "Philidor: 3...exd4" "e4 e5 Nf3 d6 d4 exd4")
+ ("C41h" "Philidor: Bird Gambit" "e4 e5 Nf3 d6 d4 exd4 c3")
+ ("C41i" "Philidor: Morphy Variation" "e4 e5 Nf3 d6 d4 exd4 Qxd4")
+ ("C41i" "Philidor: Morphy, 4...Nc6" "e4 e5 Nf3 d6 d4 exd4 Qxd4 Nc6")
+ ("C41i" "Philidor: Morphy, 4...Nf6" "e4 e5 Nf3 d6 d4 exd4 Qxd4 Nf6")
+ ("C41i" "Philidor: Morphy, 4...Nf6 5.Nc3" "e4 e5 Nf3 d6 d4 exd4 Qxd4 Nf6 Nc3")
+ ("C41j" "Philidor: 3...exd4 4.Nxd4" "e4 e5 Nf3 d6 d4 exd4 Nxd4")
+ ("C41j" "Philidor: Paulsen Attack" "e4 e5 Nf3 d6 d4 exd4 Nxd4 d5 exd5")
+ ("C41k" "Philidor: 3...exd4 4.Nxd4 Nf6" "e4 e5 Nf3 d6 d4 exd4 Nxd4 Nf6")
+ ("C41k" "Philidor: 3...exd4 4.Nxd4 Nf6 5.Nc3" "e4 e5 Nf3 d6 d4 exd4 Nxd4 Nf6 
Nc3")
+ ("C41k" "Philidor: 3...exd4 4.Nxd4 Nf6 5.Nc3 Be7" "e4 e5 Nf3 d6 d4 exd4 Nxd4 
Nf6 Nc3 Be7")
+ ("C41l" "Philidor: 3...exd4 4.Nxd4 Nf6 5.Nc3 Be7 6.Bc4" "e4 e5 Nf3 d6 d4 exd4 
Nxd4 Nf6 Nc3 Be7 Bc4")
+ ("C41m" "Philidor: Antoshin Variation" "e4 e5 Nf3 d6 d4 exd4 Nxd4 Nf6 Nc3 Be7 
Be2")
+ ("C41m" "Philidor: Berger Variation" "e4 e5 Nf3 d6 d4 exd4 Nxd4 Nf6 Nc3 Be7 
Be2 O-O O-O c5 Nf3 Nc6 Bg5 Be6 Re1")
+ ("C41n" "Philidor: Larsen Variation" "e4 e5 Nf3 d6 d4 exd4 Nxd4 g6")
+ ("C41o" "Philidor: Nimzowitsch Variation" "e4 e5 Nf3 d6 d4 Nf6")
+ ("C41o" "Philidor: Nimzowitsch, Klein Variation" "e4 e5 Nf3 d6 d4 Nf6 Bc4")
+ ("C41o" "Philidor: Nimzowitsch, Locock Variation" "e4 e5 Nf3 d6 d4 Nf6 Ng5")
+ ("C41p" "Philidor: Exchange Variation" "e4 e5 Nf3 d6 d4 Nf6 dxe5")
+ ("C41p" "Philidor: Exchange, Sokolsky Variation" "e4 e5 Nf3 d6 d4 Nf6 dxe5 
Nxe4 Nbd2")
+ ("C41p" "Philidor: Exchange, Rellstab Variation" "e4 e5 Nf3 d6 d4 Nf6 dxe5 
Nxe4 Qd5")
+ ("C41q" "Philidor: Nimzowitsch Variation" "e4 e5 Nf3 d6 d4 Nf6 Nc3")
+ ("C41r" "Philidor: Improved Hanham" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7")
+ ("C41s" "Philidor: Improved Hanham, 5.Bc4" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4")
+ ("C41s" "Philidor: Improved Hanham, 5.Bc4 Be7" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 
Bc4 Be7")
+ ("C41s" "Philidor: Improved Hanham, 6.Bxf7+" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 
Bc4 Be7 Bxf7+")
+ ("C41s" "Philidor: Improved Hanham, 6.Ng5" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 Ng5")
+ ("C41s" "Philidor: Improved Hanham, Larobok Variation" "e4 e5 Nf3 d6 d4 Nf6 
Nc3 Nbd7 Bc4 Be7 Ng5 O-O Bxf7+")
+ ("C41s" "Philidor: Improved Hanham, 6.dxe5" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 dxe5")
+ ("C41s" "Philidor: Improved Hanham, 6.dxe5 Nxe5" "e4 e5 Nf3 d6 d4 Nf6 Nc3 
Nbd7 Bc4 Be7 dxe5 Nxe5")
+ ("C41s" "Philidor: Improved Hanham, 6.dxe5 dxe5" "e4 e5 Nf3 d6 d4 Nf6 Nc3 
Nbd7 Bc4 Be7 dxe5 dxe5")
+ ("C41t" "Philidor: Improved Hanham 6.O-O" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 O-O")
+ ("C41u" "Philidor: Improved Hanham, Main Line" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 
Bc4 Be7 O-O O-O")
+ ("C41v" "Philidor: Improved Hanham, 7.a4" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 O-O O-O a4")
+ ("C41v" "Philidor: Improved Hanham, 7.a4 c6" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 
Bc4 Be7 O-O O-O a4 c6")
+ ("C41w" "Philidor: Improved Hanham, 7.Qe2" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 O-O O-O Qe2")
+ ("C41w" "Philidor: Improved Hanham, 7.Qe2 c6 8.a4" "e4 e5 Nf3 d6 d4 Nf6 Nc3 
Nbd7 Bc4 Be7 O-O O-O a4 c6 Qe2")
+ ("C41w" "Philidor: Improved Hanham, Sozin Variation" "e4 e5 Nf3 d6 d4 Nf6 Nc3 
Nbd7 Bc4 Be7 O-O O-O Qe2 c6 a4 exd4")
+ ("C41x" "Philidor: Improved Hanham, 7.Re1" "e4 e5 Nf3 d6 d4 Nf6 Nc3 Nbd7 Bc4 
Be7 O-O O-O Re1")
+ ("C41x" "Philidor: Improved Hanham, 7.Re1 c6 8.a4" "e4 e5 Nf3 d6 d4 Nf6 Nc3 
Nbd7 Bc4 Be7 O-O O-O Re1 c6 a4")
+ ("C41y" "Philidor: Improved Hanham, 7.Re1 c6 8.a4 b6" "e4 e5 Nf3 d6 d4 Nf6 
Nc3 Nbd7 Bc4 Be7 O-O O-O Re1 c6 a4 b6")
+ ("C42a" "Russian Game (Petroff Defence)" "e4 e5 Nf3 Nf6")
+ ("C42b" "Russian Game: 3.d3" "e4 e5 Nf3 Nf6 d3")
+ ("C42c" "Russian-Three Knights Game" "e4 e5 Nf3 Nf6 Nc3")
+ ("C42c" "Russian-Three Knights Game" "e4 e5 Nf3 Nf6 Nc3 Bb4")
+ ("C42d" "Russian-Three Knights Game, 4.Nxe5" "e4 e5 Nf3 Nf6 Nc3 Bb4 Nxe5")
+ ("C42e" "Russian Game: Italian Variation" "e4 e5 Nf3 Nf6 Bc4")
+ ("C42f" "Russian Game: Boden-Kieseritsky Gambit" "e4 e5 Nf3 Nf6 Bc4 Nxe4 Nc3")
+ ("C42f" "Russian Game: Boden-Kieseritsky Gambit Accepted" "e4 e5 Nf3 Nf6 Bc4 
Nxe4 Nc3 Nxc3")
+ ("C42g" "Russian Game: 3.Nxe5" "e4 e5 Nf3 Nf6 Nxe5")
+ ("C42g" "Russian Game: Damiano Variation" "e4 e5 Nf3 Nf6 Nxe5 Nxe4")
+ ("C42g" "Russian Game: 3.Nxe5 d6" "e4 e5 Nf3 Nf6 Nxe5 d6")
+ ("C42h" "Russian Game: Cochrane Gambit" "e4 e5 Nf3 Nf6 Nxe5 d6 Nxf7")
+ ("C42h" "Russian Game: Cochrane Gambit, 5.d4" "e4 e5 Nf3 Nf6 Nxe5 d6 Nxf7 
Kxf7 d4")
+ ("C42i" "Russian Game: Paulsen Attack" "e4 e5 Nf3 Nf6 Nxe5 d6 Nc4")
+ ("C42j" "Russian Game: 3.Nxe5 d6 4.Nf3" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3")
+ ("C42k" "Russian Game: French Attack" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 d3")
+ ("C42l" "Russian Game: Vienna/Kaufmann" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 c4")
+ ("C42m" "Russian Game: Nimzowitsch Attack" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 
Nc3")
+ ("C42n" "Russian Game: Cozio/Lasker" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 Qe2")
+ ("C42n" "Russian Game: Milner-Barry Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 
Nxe4 Qe2 Qe7 d3 Nf6 Bg5 Nbd7")
+ ("C42o" "Russian Game: 5.Qe2, Queenswap" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 Qe2 
Qe7 d3 Nf6 Bg5 Qxe2+")
+ ("C42p" "Russian Game: Classical" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 d4")
+ ("C42p" "Russian Game: Classical, Close Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 
Nxe4 d4 Nf6")
+ ("C42p" "Russian Game: Classical, 5...d5" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 d4 
d5")
+ ("C42q" "Russian Game: Classical, 6.Bd3" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 d4 
d5 Bd3")
+ ("C42q" "Russian Game: Classical, Marshall Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Bd6")
+ ("C42q" "Russian Game: Classical, Tarrasch Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Bd6 O-O O-O c4 Bg4")
+ ("C42q" "Russian Game: Classical, Marshall Trap" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 
Nxe4 d4 d5 Bd3 Bd6 O-O O-O c4 Bg4 cxd5 f5 Re1 Bxh2+")
+ ("C42r" "Russian Game: Classical, Marshall, 8.c4 c6" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Bd6 O-O O-O c4 c6")
+ ("C42s" "Russian Game: Classical, 6.Bd3 Be7" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 Nxe4 
d4 d5 Bd3 Be7")
+ ("C42s" "Russian Game: Classical, Mason Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 Nf3 
Nxe4 d4 d5 Bd3 Be7 O-O O-O")
+ ("C42s" "Russian Game: Classical, 6.Bd3 Be7 7.O-O Nc6" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6")
+ ("C42t" "Russian Game: Classical, Jänisch Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 c4")
+ ("C42u" "Russian Game: Classical, Jänisch, Main Line" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 c4 Nb4 Be2 O-O")
+ ("C42v" "Russian Game: Classical, Chigorin Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1")
+ ("C42v" "Russian Game: Classical, Chigorin, 8...Bf5" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bf5")
+ ("C42w" "Russian Game: Classical, Chigorin, 8...Bg4" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4")
+ ("C42w" "Russian Game: Classical, Chigorin, 8...Bg4 9.c4" "e4 e5 Nf3 Nf6 Nxe5 
d6 Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4 c4")
+ ("C42x" "Russian Game: Classical, Chigorin, 8...Bg4 9.c3" "e4 e5 Nf3 Nf6 Nxe5 
d6 Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4 c3")
+ ("C42x" "Russian Game: Classical, Berger Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4 c3 f5 Nbd2")
+ ("C42x" "Russian Game: Classical, Krause Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4 c3 f5 c4")
+ ("C42x" "Russian Game: Classical, Maroczy Variation" "e4 e5 Nf3 Nf6 Nxe5 d6 
Nf3 Nxe4 d4 d5 Bd3 Be7 O-O Nc6 Re1 Bg4 c3 f5 c4 Bh4")
+ ("C43a" "Russian Game: Modern (Steinitz) Attack" "e4 e5 Nf3 Nf6 d4")
+ ("C43b" "Russian Game: Modern Attack" "e4 e5 Nf3 Nf6 d4 exd4")
+ ("C43c" "Russian Game: Modern Attack" "e4 e5 Nf3 Nf6 d4 exd4 e5 Ne4")
+ ("C43c" "Russian Game: Modern Attack, Tal Gambit" "e4 e5 Nf3 Nf6 d4 exd4 e5 
Ne4 Bb5")
+ ("C43c" "Russian Game: Modern Attack, Steinitz Variation" "e4 e5 Nf3 Nf6 d4 
exd4 e5 Ne4 Qe2")
+ ("C43c" "Russian Game: Modern Attack, Bardeleben Variation" "e4 e5 Nf3 Nf6 d4 
exd4 e5 Ne4 Qe2 Nc5 Nxd4 Nc6")
+ ("C43d" "Russian Game: Modern Attack, 3...exd4, Main Line" "e4 e5 Nf3 Nf6 d4 
exd4 e5 Ne4 Qxd4")
+ ("C43e" "Russian Game: Modern Attack, 3...exd4, Main Line, 7.Nc3" "e4 e5 Nf3 
Nf6 d4 exd4 e5 Ne4 Qxd4 d5 exd6 Nxd6 Nc3")
+ ("C43e" "Russian Game: Modern Attack, Pillsbury Variation" "e4 e5 Nf3 Nf6 d4 
exd4 e5 Ne4 Qxd4 d5 exd6 Nxd6 Nc3 Nc6 Qf4 Bf5")
+ ("C43f" "Russian Game: Modern Attack, 3...Nxe4" "e4 e5 Nf3 Nf6 d4 Nxe4")
+ ("C43g" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3" "e4 e5 Nf3 Nf6 d4 Nxe4 
Bd3")
+ ("C43g" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 Nc6" "e4 e5 Nf3 Nf6 d4 
Nxe4 Bd3 Nc6")
+ ("C43g" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 Nc6 5.d5" "e4 e5 Nf3 Nf6 
d4 Nxe4 Bd3 Nc6 d5")
+ ("C43h" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 Nc6 5.Bxe4" "e4 e5 Nf3 
Nf6 d4 Nxe4 Bd3 Nc6 Bxe4")
+ ("C43i" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5" "e4 e5 Nf3 Nf6 d4 
Nxe4 Bd3 d5")
+ ("C43i" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.dxe5" "e4 e5 Nf3 
Nf6 d4 Nxe4 Bd3 d5 dxe5")
+ ("C43j" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5" "e4 e5 Nf3 
Nf6 d4 Nxe4 Bd3 d5 Nxe5")
+ ("C43k" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nc6" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Nc6")
+ ("C43l" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Be7" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Be7")
+ ("C43m" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Bd6" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Bd6")
+ ("C43n" "Russian Game: Modern Attack, Trifunovic Variation" "e4 e5 Nf3 Nf6 d4 
Nxe4 Bd3 d5 Nxe5 Bd6 O-O O-O c4 Bxe5")
+ ("C43o" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nd7" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Nd7")
+ ("C43p" "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.Nxd7" 
"e4 e5 Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Nd7 Nxd7")
+ ("C43q" "Russian Game: Modern Attack, 3...Nxe4, Main Line" "e4 e5 Nf3 Nf6 d4 
Nxe4 Bd3 d5 Nxe5 Nd7 Nxd7 Bxd7 O-O")
+ ("C43r" "Russian Game: Modern Attack, 3...Nxe4, Main Line, 7...Qh4" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Nd7 Nxd7 Bxd7 O-O Qh4")
+ ("C43s" "Russian Game: Modern Attack, 3...Nxe4, Main Line, 7...Bd6" "e4 e5 
Nf3 Nf6 d4 Nxe4 Bd3 d5 Nxe5 Nd7 Nxd7 Bxd7 O-O Bd6")
+ ("C44a" "Open Game" "e4 e5 Nf3 Nc6")
+ ("C44a" "Open Game: Irish (Chicago) Gambit" "e4 e5 Nf3 Nc6 Nxe5")
+ ("C44a" "Open Game: Paschman Wing Gambit" "e4 e5 Nf3 Nc6 b4")
+ ("C44a" "Open Game: Dresden Opening" "e4 e5 Nf3 Nc6 c4")
+ ("C44b" "Open Game: Konstantinopolsky" "e4 e5 Nf3 Nc6 g3")
+ ("C44c" "Open Game: Inverted Hungarian" "e4 e5 Nf3 Nc6 Be2")
+ ("C44c" "Open Game: Tayler Opening" "e4 e5 Nf3 Nc6 Be2 Nf6 d4")
+ ("C44d" "Open Game: Inverted Philidor" "e4 e5 Nf3 Nc6 d3")
+ ("C44d" "Open Game: Inverted Philidor" "e4 e5 Nf3 Nc6 d3 d5")
+ ("C44e" "Open Game: Inverted Philidor" "e4 e5 Nf3 Nc6 d3 Nf6")
+ ("C44f" "Open Game: Inverted Philidor, 4.g3" "e4 e5 Nf3 Nc6 d3 Nf6 g3")
+ ("C44g" "Open Game: Inverted Philidor, 4.Be2" "e4 e5 Nf3 Nc6 d3 Nf6 Be2")
+ ("C44h" "Open Game: Inverted Hanham" "e4 e5 Nf3 Nc6 Be2 Nf6 d3 d5 Nbd2")
+ ("C44i" "Ponziani Opening" "e4 e5 Nf3 Nc6 c3")
+ ("C44i" "Ponziani: Reti Variation" "e4 e5 Nf3 Nc6 c3 Nge7")
+ ("C44i" "Ponziani: Romanishin Variation" "e4 e5 Nf3 Nc6 c3 Be7")
+ ("C44j" "Ponziani Countergambit" "e4 e5 Nf3 Nc6 c3 f5")
+ ("C44j" "Ponziani Countergambit, Schmidt Attack" "e4 e5 Nf3 Nc6 c3 f5 d4 d6 
d5")
+ ("C44j" "Ponziani Countergambit, Cordel Variation" "e4 e5 Nf3 Nc6 c3 f5 d4 d6 
d5 fxe4 Ng5 Nb8 Nxe4 Nf6 Bd3 Be7")
+ ("C44k" "Ponziani: 3...d5" "e4 e5 Nf3 Nc6 c3 d5")
+ ("C44l" "Ponziani: 3...d5 4.Qa4" "e4 e5 Nf3 Nc6 c3 d5 Qa4")
+ ("C44l" "Ponziani: Caro Variation" "e4 e5 Nf3 Nc6 c3 d5 Qa4 Bd7")
+ ("C44l" "Ponziani: Leonhardt Variation" "e4 e5 Nf3 Nc6 c3 d5 Qa4 Nf6")
+ ("C44m" "Ponziani: Steinitz Variation" "e4 e5 Nf3 Nc6 c3 d5 Qa4 f6")
+ ("C44n" "Ponziani: 3...Nf6" "e4 e5 Nf3 Nc6 c3 Nf6")
+ ("C44n" "Ponziani: 3...Nf6" "e4 e5 Nf3 Nc6 c3 Nf6 d4")
+ ("C44o" "Ponziani: 3...Nf6 4.d4 exd4" "e4 e5 Nf3 Nc6 c3 Nf6 d4 exd4")
+ ("C44p" "Ponziani: 3...Nf6 4.d4 Nxe4" "e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4")
+ ("C44p" "Ponziani: Fraser Defence" "e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 d5 Bc5")
+ ("C44q" "Ponziani: 3...Nf6 4.d4 Nxe4 5.d5 Ne7" "e4 e5 Nf3 Nc6 c3 Nf6 d4 Nxe4 
d5 Ne7")
+ ("C44r" "Scotch Opening" "e4 e5 Nf3 Nc6 d4")
+ ("C44r" "Scotch: Lolli Variation" "e4 e5 Nf3 Nc6 d4 Nxd4")
+ ("C44r" "Scotch: Cochrane Variation" "e4 e5 Nf3 Nc6 d4 Nxd4 Nxe5 Ne6 Bc4 c6 
O-O Nf6 Nxf7")
+ ("C44s" "Scotch: 3...d6" "e4 e5 Nf3 Nc6 d4 d6")
+ ("C44t" "Scotch: 3...exd4" "e4 e5 Nf3 Nc6 d4 exd4")
+ ("C44t" "Scotch: Relfsson Gambit" "e4 e5 Nf3 Nc6 d4 exd4 Bb5")
+ ("C44t" "Scotch: Goring Gambit" "e4 e5 Nf3 Nc6 d4 exd4 c3")
+ ("C44u" "Scotch: Goring Gambit, 4...d5" "e4 e5 Nf3 Nc6 d4 exd4 c3 d5")
+ ("C44v" "Scotch: Goring Gambit, 4...d3" "e4 e5 Nf3 Nc6 d4 exd4 c3 d3")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3" "e4 e5 Nf3 Nc6 d4 exd4 c3 dxc3")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Bc4" "e4 e5 Nf3 Nc6 d4 exd4 c3 
dxc3 Bc4")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Bc4 cxb2 6.Bxb2" "e4 e5 Nf3 Nc6 d4 
exd4 c3 dxc3 Bc4 cxb2 Bxb2")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Nxc3" "e4 e5 Nf3 Nc6 d4 exd4 c3 
dxc3 Nxc3")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Nxc3 Bb4" "e4 e5 Nf3 Nc6 d4 exd4 
c3 dxc3 Nxc3 Bb4")
+ ("C44w" "Scotch: Goring Gambit, Bardeleben Variation" "e4 e5 Nf3 Nc6 d4 exd4 
c3 dxc3 Nxc3 Bb4 Bc4 Nf6")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Nxc3 Bb4 6.Bc4 d6" "e4 e5 Nf3 Nc6 
d4 exd4 c3 dxc3 Nxc3 Bb4 Bc4 d6")
+ ("C44w" "Scotch: Goring Gambit, 4...dxc3 5.Nxc3 Bb4 6.Bc4 d6 7.O-O" "e4 e5 
Nf3 Nc6 d4 exd4 c3 dxc3 Nxc3 Bb4 Bc4 d6 O-O")
+ ("C44x" "Scotch Gambit" "e4 e5 Nf3 Nc6 d4 exd4 Bc4")
+ ("C44x" "Scotch Gambit: London Defence" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bb4+")
+ ("C44y" "Scotch Gambit: 4...Bc5" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5")
+ ("C44y" "Scotch Gambit: 5.Ng5" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5 Ng5")
+ ("C44y" "Scotch Gambit: Vitzhum Attack" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5 Ng5 
Nh6 Qh5")
+ ("C44y" "Scotch Gambit: 5.O-O" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5 O-O")
+ ("C44y" "Scotch Gambit: Anderssen (Paulsen) Counterattack" "e4 e5 Nf3 Nc6 d4 
exd4 Bc4 Bc5 O-O d6 c3 Bg4")
+ ("C44z" "Scotch Gambit: 5.c3" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5 c3")
+ ("C44z" "Scotch Gambit: 5.c3 d3" "e4 e5 Nf3 Nc6 d4 exd4 Bc4 Bc5 c3 d3")
+ ("C45a" "Scotch: 4.Nxd4" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4")
+ ("C45b" "Scotch: 4.Nxd4 Nxd4" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nxd4")
+ ("C45b" "Scotch: Ghulam Kassim Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nxd4 
Qxd4 d6 Bd3")
+ ("C45c" "Scotch: 4.Nxd4 Bb4+" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bb4+")
+ ("C45d" "Scotch: 4.Nxd4 Qf6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qf6")
+ ("C45e" "Scotch: Steinitz Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4")
+ ("C45e" "Scotch: Steinitz, 5.Qd3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Qd3")
+ ("C45e" "Scotch: Steinitz, Fraser Attack" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 
Nf3")
+ ("C45f" "Scotch: Steinitz, 5.Nc3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Nc3")
+ ("C45g" "Scotch: Steinitz, 5.Nb5" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Nb5")
+ ("C45g" "Scotch: Steinitz, 5.Nb5 Qxe4+" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Nb5 
Qxe4+")
+ ("C45g" "Scotch: Steinitz, 5.Nb5 Bc5" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Nb5 
Bc5")
+ ("C45g" "Scotch: Steinitz, 5.Nb5 Bc5 6.Qf3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 
Nb5 Bc5 Qf3")
+ ("C45g" "Scotch: Steinitz, 5.Nb5 Bb4+" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 Nb5 
Bb4+")
+ ("C45g" "Scotch: Steinitz, Berger Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 
Nb5 Bb4+ Nd2 Qxe4+ Be2 Qxg2 Bf3 Qh3 Nxc7+ Kd8 Nxa8 Nf6 a3")
+ ("C45g" "Scotch: Steinitz, 5.Nb5 Bb4+ 6.Bd2" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Qh4 
Nb5 Bb4+ Bd2")
+ ("C45g" "Scotch: Steinitz, Rosenthal Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 
Qh4 Nb5 Bb4+ Bd2 Qxe4+ Be2 Kd8 O-O Bxd2 Nxd2 Qg6")
+ ("C45h" "Scotch: 4.Nxd4 Nf6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6")
+ ("C45h" "Scotch: 4.Nxd4 Nf6 5.Nxc6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6")
+ ("C45h" "Scotch: Tartakower Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 
bxc6 Nd2")
+ ("C45i" "Scotch: 4.Nxd4 Nf6 5.Nxc6 bxc6 6.Bd3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 
Nf6 Nxc6 bxc6 Bd3")
+ ("C45j" "Scotch: Mieses Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 bxc6 
e5")
+ ("C45j" "Scotch: Mieses, 6...Qe7" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 bxc6 
e5 Qe7")
+ ("C45j" "Scotch: Mieses, 6...Qe7 7.Qe2" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 
bxc6 e5 Qe7 Qe2")
+ ("C45k" "Scotch: Mieses, 8.c4" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 bxc6 e5 
Qe7 Qe2 Nd5 c4")
+ ("C45l" "Scotch: Mieses, 8.c4 Ba6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 bxc6 
e5 Qe7 Qe2 Nd5 c4 Ba6")
+ ("C45m" "Scotch: Mieses, 8.c4 Ba6 9.b3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Nf6 Nxc6 
bxc6 e5 Qe7 Qe2 Nd5 c4 Ba6 b3")
+ ("C45n" "Scotch: 4.Nxd4 Bc5" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5")
+ ("C45o" "Scotch: 4.Nxd4 Bc5 5.Nb3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nb3")
+ ("C45o" "Scotch: Romanishin Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nb3 
Bb4+")
+ ("C45p" "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nb3 
Bb6")
+ ("C45p" "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6 6.a4" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 
Nb3 Bb6 a4")
+ ("C45q" "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6 6.a4 a6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 
Bc5 Nb3 Bb6 a4 a6")
+ ("C45q" "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6 6.a4 a6 7.Nc3" "e4 e5 Nf3 Nc6 d4 exd4 
Nxd4 Bc5 Nb3 Bb6 a4 a6 Nc3")
+ ("C45q" "Scotch: Geller Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nb3 Bb6 a4 
a6 Nc3 Nf6")
+ ("C45q" "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6 6.a4 a6 7.Nc3 Qf6" "e4 e5 Nf3 Nc6 d4 
exd4 Nxd4 Bc5 Nb3 Bb6 a4 a6 Nc3 Qf6")
+ ("C45r" "Scotch: 4.Nxd4 Bc5 5.Nxc6" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Nxc6")
+ ("C45s" "Scotch: 4.Nxd4 Bc5 5.Nxc6 Qf6 6.Qd2" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 
Nxc6 Qf6 Qd2")
+ ("C45t" "Scotch: 4.Nxd4 Bc5 5.Nxc6 Qf6 6.Qd2 dxc6 7.Nc3" "e4 e5 Nf3 Nc6 d4 
exd4 Nxd4 Bc5 Nxc6 Qf6 Qd2 dxc6 Nc3")
+ ("C45u" "Scotch: 4.Nxd4 Bc5 5.Be3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Be3")
+ ("C45v" "Scotch: Blumenfeld Attack" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Be3 Qf6 
Nb5")
+ ("C45v" "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 
Be3 Qf6 c3")
+ ("C45w" "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 
Bc5 Be3 Qf6 c3 Nge7")
+ ("C45w" "Scotch: Blackburne Attack" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Be3 Qf6 
c3 Nge7 Qd2")
+ ("C45w" "Scotch: Meitner Variation" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Be3 Qf6 
c3 Nge7 Nc2")
+ ("C45w" "Scotch: Paulsen Attack" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 Be3 Qf6 c3 
Nge7 Bb5")
+ ("C45w" "Scotch: Paulsen, Gunsberg Defence" "e4 e5 Nf3 Nc6 d4 exd4 Nxd4 Bc5 
Be3 Qf6 c3 Nge7 Bb5 Nd8")
+ ("C45x" "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7 7.Bc4" "e4 e5 Nf3 Nc6 d4 exd4 
Nxd4 Bc5 Be3 Qf6 c3 Nge7 Bc4")
+ ("C45y" "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7 7.Bc4 Ne5" "e4 e5 Nf3 Nc6 d4 
exd4 Nxd4 Bc5 Be3 Qf6 c3 Nge7 Bc4 Ne5")
+ ("C46a" "Three Knights Game" "e4 e5 Nf3 Nc6 Nc3")
+ ("C46b" "Three Knights: Winawer Defence" "e4 e5 Nf3 Nc6 Nc3 f5")
+ ("C46c" "Three Knights: 3...d6" "e4 e5 Nf3 Nc6 Nc3 d6")
+ ("C46d" "Three Knights: 3...d6 4.d4" "e4 e5 Nf3 Nc6 Nc3 d6 d4")
+ ("C46e" "Three Knights: 3...Bc5" "e4 e5 Nf3 Nc6 Nc3 Bc5")
+ ("C46e" "Three Knights: 3...Bc5 4.Bb5" "e4 e5 Nf3 Nc6 Nc3 Bc5 Bb5")
+ ("C46f" "Three Knights: 3...Bc5 4.Nxe5" "e4 e5 Nf3 Nc6 Nc3 Bc5 Nxe5")
+ ("C46g" "Three Knights: 3...Bb4" "e4 e5 Nf3 Nc6 Nc3 Bb4")
+ ("C46h" "Three Knights: 3...Bb4 4.Nd5" "e4 e5 Nf3 Nc6 Nc3 Bb4 Nd5")
+ ("C46h" "Three Knights: Schlechter Variation" "e4 e5 Nf3 Nc6 Nc3 Bb4 Nd5 Nf6")
+ ("C46i" "Three Knights: Steinitz Variation" "e4 e5 Nf3 Nc6 Nc3 g6")
+ ("C46j" "Three Knights: Steinitz, 4.d4" "e4 e5 Nf3 Nc6 Nc3 g6 d4")
+ ("C46k" "Three Knights: Steinitz, Rosenthal Variation" "e4 e5 Nf3 Nc6 Nc3 g6 
d4 exd4 Nd5")
+ ("C46l" "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4" "e4 e5 Nf3 Nc6 Nc3 g6 d4 
exd4 Nxd4")
+ ("C46l" "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4 Bg7" "e4 e5 Nf3 Nc6 Nc3 g6 
d4 exd4 Nxd4 Bg7")
+ ("C46l" "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4 Bg7 6.Be3" "e4 e5 Nf3 Nc6 
Nc3 g6 d4 exd4 Nxd4 Bg7 Be3")
+ ("C46m" "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4 Bg7 6.Be3 Nf6" "e4 e5 Nf3 
Nc6 Nc3 g6 d4 exd4 Nxd4 Bg7 Be3 Nf6")
+ ("C47a" "Four Knights Game" "e4 e5 Nf3 Nc6 Nc3 Nf6")
+ ("C47a" "Four Knights: Halloween Gambit" "e4 e5 Nf3 Nc6 Nc3 Nf6 Nxe5")
+ ("C47b" "Four Knights: Gunsberg Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 a3")
+ ("C47c" "Four Knights: Van der Wiel Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Be2")
+ ("C47d" "Four Knights: Italian Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bc4")
+ ("C47e" "Four Knights: Glek Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 g3")
+ ("C47f" "Four Knights: Glek, 4...d5" "e4 e5 Nf3 Nc6 Nc3 Nf6 g3 d5")
+ ("C47g" "Four Knights: Glek, 4...Bc5" "e4 e5 Nf3 Nc6 Nc3 Nf6 g3 Bc5")
+ ("C47g" "Four Knights: Glek, 4...Bc5" "e4 e5 Nf3 Nc6 Nc3 Nf6 g3 Bc5 Bg2")
+ ("C47h" "Four Knights: Glek, Main Line" "e4 e5 Nf3 Nc6 Nc3 Nf6 g3 Bc5 Bg2 d6 
d3 a6")
+ ("C47i" "Four Knights: Scotch Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4")
+ ("C47i" "Four Knights: Scotch, 4...d6" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 d6")
+ ("C47j" "Four Knights: Scotch, Bogoljubow" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 Bb4")
+ ("C47j" "Four Knights: Scotch, Bogoljubow, 5.d5" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
Bb4 d5")
+ ("C47k" "Four Knights: Scotch, Krause Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
Bb4 Nxe5")
+ ("C47l" "Four Knights: Scotch, 4...exd4" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 exd4")
+ ("C47l" "Four Knights: Belgrade Gambit" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 exd4 Nd5")
+ ("C47l" "Four Knights: Belgrade Gambit, 5...Nb4" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nd5 Nb4")
+ ("C47l" "Four Knights: Belgrade Gambit, 5...Nxd5" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nd5 Nxd5")
+ ("C47m" "Four Knights: Belgrade Gambit, 5...Nxe4" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nd5 Nxe4")
+ ("C47m" "Four Knights: Belgrade Gambit, 5...Nxe4 6.Qe2 (Old Line)" "e4 e5 Nf3 
Nc6 Nc3 Nf6 d4 exd4 Nd5 Nxe4 Qe2")
+ ("C47m" "Four Knights: Belgrade Gambit, 5...Nxe4 6.Bc4 (Modern Line)" "e4 e5 
Nf3 Nc6 Nc3 Nf6 d4 exd4 Nd5 Nxe4 Bc4")
+ ("C47n" "Four Knights: Belgrade Gambit, 5...Be7" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nd5 Be7")
+ ("C47o" "Four Knights: Scotch, 4...exd4 5.Nxd4" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nxd4")
+ ("C47p" "Four Knights: Scotch, 4...exd4 5.Nxd4 d6" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nxd4 d6")
+ ("C47q" "Four Knights: Scotch, 4...exd4 5.Nxd4 Bc5" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nxd4 Bc5")
+ ("C47r" "Four Knights: Scotch, 4...exd4 5.Nxd4 Bb4" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nxd4 Bb4")
+ ("C47s" "Four Knights: Scotch, 4...exd4 5.Nxd4 Bb4 6.Nxc6 bxc6" "e4 e5 Nf3 
Nc6 Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6")
+ ("C47s" "Four Knights: Scotch, Main Line" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 exd4 Nxd4 
Bb4 Nxc6 bxc6 Bd3")
+ ("C47t" "Four Knights: Scotch, Main Line, 7...d5" "e4 e5 Nf3 Nc6 Nc3 Nf6 d4 
exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5")
+ ("C47t" "Four Knights: Scotch, Main Line, 7...d5 8.exd5 cxd5" "e4 e5 Nf3 Nc6 
Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5")
+ ("C47u" "Four Knights: Scotch, Main Line, 8.exd5 cxd5 9.O-O O-O" "e4 e5 Nf3 
Nc6 Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5 O-O O-O")
+ ("C47v" "Four Knights: Scotch, Main Line, 9.O-O O-O 10.Bg5 c6" "e4 e5 Nf3 Nc6 
Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5 O-O O-O Bg5 c6")
+ ("C47w" "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Na4" "e4 e5 Nf3 Nc6 
Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5 O-O O-O Bg5 c6 Na4")
+ ("C47x" "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Qf3" "e4 e5 Nf3 Nc6 
Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5 O-O O-O Bg5 c6 Qf3")
+ ("C47y" "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Qf3 Be7" "e4 e5 Nf3 
Nc6 Nc3 Nf6 d4 exd4 Nxd4 Bb4 Nxc6 bxc6 Bd3 d5 exd5 cxd5 O-O O-O Bg5 c6 Qf3 Be7")
+ ("C48a" "Four Knights: Spanish Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5")
+ ("C48a" "Four Knights: Spanish, Ranken Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
a6 Bxc6")
+ ("C48a" "Four Knights: Spanish, Spielmann Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 a6 Bxc6 dxc6 Nxe5 Nxe4 Nxe4 Qd4 O-O Qxe5 Re1 Be6 d4 Qd5")
+ ("C48b" "Four Knights: Spanish, 4...d6" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 d6")
+ ("C48c" "Four Knights: Spanish, 4...d6 5.d4" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 d6 
d4")
+ ("C48d" "Four Knights: Spanish, Classical Defence" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bc5")
+ ("C48e" "Four Knights: Spanish, Classical Defence, 5.Nxe5" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bc5 Nxe5")
+ ("C48f" "Four Knights: Spanish, Classical Defence, 5.O-O" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bc5 O-O")
+ ("C48f" "Four Knights: Spanish, Classical, Bardeleben Variation" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Bc5 O-O O-O Nxe5 Nxe5 d4 Bd6 f4 Nc6 e5 Bb4")
+ ("C48f" "Four Knights: Spanish, Classical, Marshall Variation" "e4 e5 Nf3 Nc6 
Nc3 Nf6 Bb5 Bc5 O-O O-O Nxe5 Nd4")
+ ("C48g" "Four Knights: Rubinstein Countergambit" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Nd4")
+ ("C48g" "Four Knights: Rubinstein, 5.Be2" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 Be2")
+ ("C48h" "Four Knights: Rubinstein, 5.Nxe5" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 
Nxe5")
+ ("C48h" "Four Knights: Rubinstein, Bogoljubow Variation" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Nd4 Nxe5 Qe7 f4")
+ ("C48i" "Four Knights: Rubinstein, Henneberger Variation" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Nd4 O-O")
+ ("C48j" "Four Knights: Rubinstein, 5.Bc4" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 Bc4")
+ ("C48k" "Four Knights: Rubinstein, Exchange Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Nd4 Nxd4")
+ ("C48k" "Four Knights: Rubinstein, Exchange Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Nd4 Nxd4 exd4 e5 dxc3 exf6")
+ ("C48l" "Four Knights: Rubinstein, Exchange Variation, 8...Bc5" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Nd4 Nxd4 exd4 e5 dxc3 exf6 Qxf6 dxc3 Bc5")
+ ("C48m" "Four Knights: Rubinstein, Exchange Variation, 8...Qe5+" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Nd4 Nxd4 exd4 e5 dxc3 exf6 Qxf6 dxc3 Qe5+")
+ ("C48n" "Four Knights: Rubinstein, 5.Ba4" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 Ba4")
+ ("C48n" "Four Knights: Rubinstein, 5.Ba4 Nxf3+" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Nd4 Ba4 Nxf3+")
+ ("C48o" "Four Knights: Rubinstein, 5.Ba4 c6" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 
Ba4 c6")
+ ("C48p" "Four Knights: Rubinstein, 5.Ba4 c6 6.Nxe5" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Nd4 Ba4 c6 Nxe5")
+ ("C48q" "Four Knights: Rubinstein, 5.Ba4 Bc5" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Nd4 
Ba4 Bc5")
+ ("C48r" "Four Knights: Rubinstein, 5.Ba4 Bc5 6.Nxe5" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Nd4 Ba4 Bc5 Nxe5")
+ ("C49a" "Four Knights: 4.Bb5 Bb4" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4")
+ ("C49b" "Four Knights: 4.Bb5 Bb4 5.O-O" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 O-O")
+ ("C49c" "Four Knights: 4.Bb5 Bb4 5.O-O O-O" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 
O-O O-O")
+ ("C49c" "Four Knights: Gunsberg Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 O-O 
O-O Nd5 Nxd5 exd5 e4")
+ ("C49d" "Four Knights: Nimzowitsch (Paulsen) Variation" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bb4 O-O O-O Bxc6")
+ ("C49e" "Four Knights: Double Bishops, 6.d3" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 
O-O O-O d3")
+ ("C49f" "Four Knights: Double Bishops, 6.d3 Bxc3" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bb4 O-O O-O d3 Bxc3")
+ ("C49f" "Four Knights: Janowski Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 O-O 
O-O d3 Bxc3 bxc3 d6 Re1")
+ ("C49f" "Four Knights: Svenonius Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 
O-O O-O d3 Bxc3 bxc3 d5")
+ ("C49g" "Four Knights: Symmetrical Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 
O-O O-O d3 d6")
+ ("C49h" "Four Knights: Symmetrical, Maroczy System" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Bb4 O-O O-O d3 d6 Ne2")
+ ("C49i" "Four Knights: Symmetrical, 7.Bg5" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 Bb4 O-O 
O-O d3 d6 Bg5")
+ ("C49j" "Four Knights: Symmetrical, Tarrasch Variation" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Be6")
+ ("C49k" "Four Knights: Symmetrical, Pillsbury Variation" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Ne7")
+ ("C49k" "Four Knights: Symmetrical, Blake Variation" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Bb4 O-O O-O d3 d6 Bg5 Ne7 Nh4 c6 Bc4 d5 Bb3 Qd6")
+ ("C49l" "Four Knights: Symmetrical, 7.Bg5 Bxc3" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bb4 O-O O-O d3 d6 Bg5 Bxc3")
+ ("C49l" "Four Knights: Symmetrical, 7.Bg5 Bxc3" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3")
+ ("C49m" "Four Knights: Symmetrical, 7.Bg5 Bxc3 8.bxc3 h6" "e4 e5 Nf3 Nc6 Nc3 
Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 h6")
+ ("C49n" "Four Knights: Symmetrical, Metger unpin" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7")
+ ("C49n" "Four Knights: Symmetrical, Metger, 10.d4" "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 
Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7 Re1 Nd8 d4")
+ ("C49o" "Four Knights: Symmetrical, Metger, Capablanca Variation" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7 Re1 Nd8 d4 Bg4")
+ ("C49p" "Four Knights: Symmetrical, Metger, 10.d4 Ne6" "e4 e5 Nf3 Nc6 Nc3 Nf6 
Bb5 Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7 Re1 Nd8 d4 Ne6")
+ ("C49q" "Four Knights: Symmetrical, Metger, 10.d4 Ne6 11.Bc1 Rd8" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7 Re1 Nd8 d4 Ne6 Bc1 Rd8")
+ ("C49r" "Four Knights: Symmetrical, Metger, 10.d4 Ne6 11.Bc1 c5" "e4 e5 Nf3 
Nc6 Nc3 Nf6 Bb5 Bb4 O-O O-O d3 d6 Bg5 Bxc3 bxc3 Qe7 Re1 Nd8 d4 Ne6 Bc1 c5")
+ ("C50a" "Italian Game" "e4 e5 Nf3 Nc6 Bc4")
+ ("C50b" "Italian: Rousseau Gambit" "e4 e5 Nf3 Nc6 Bc4 f5")
+ ("C50c" "Italian: Blackburne-Shilling Gambit" "e4 e5 Nf3 Nc6 Bc4 Nd4")
+ ("C50d" "Italian: 3...d6" "e4 e5 Nf3 Nc6 Bc4 d6")
+ ("C50e" "Italian: Hungarian Defence" "e4 e5 Nf3 Nc6 Bc4 Be7")
+ ("C50f" "Italian: Hungarian Defence, 4.d4 exd4" "e4 e5 Nf3 Nc6 Bc4 Be7 d4 
exd4")
+ ("C50f" "Italian: Hungarian Defence, Tartakower Variation" "e4 e5 Nf3 Nc6 Bc4 
Be7 d4 exd4 c3 Nf6 e5 Ne4")
+ ("C50g" "Italian: Hungarian Defence, 4.d4 d6" "e4 e5 Nf3 Nc6 Bc4 Be7 d4 d6")
+ ("C50h" "Giuoco Piano" "e4 e5 Nf3 Nc6 Bc4 Bc5")
+ ("C50h" "Giuoco Piano: Jerome Gambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 Bxf7+")
+ ("C50h" "Giuoco Piano: Rosentreter Gambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 d4")
+ ("C50i" "Giuoco Piano: Three Knights Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 Nc3")
+ ("C50j" "Giuoco Piano: Four Knights Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 Nc3 
Nf6")
+ ("C50k" "Giuoco Piano: 4.O-O" "e4 e5 Nf3 Nc6 Bc4 Bc5 O-O")
+ ("C50l" "Giuoco Piano: 4.O-O Nf6" "e4 e5 Nf3 Nc6 Bc4 Bc5 O-O Nf6")
+ ("C50m" "Giuoco Piano: 4.O-O Nf6 5.Nc3" "e4 e5 Nf3 Nc6 Bc4 Bc5 O-O Nf6 Nc3")
+ ("C50n" "Giuoco Pianissimo: 4.d3" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3")
+ ("C50n" "Giuoco Pianissimo: Lucchini Gambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 f5")
+ ("C50n" "Giuoco Pianissimo: Dubois Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 f5 
Ng5 f4")
+ ("C50o" "Giuoco Pianissimo: 4.d3 Nf6" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6")
+ ("C50p" "Giuoco Pianissimo: 4.d3 Nf6 5.O-O" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6 
O-O")
+ ("C50q" "Giuoco Pianissimo: 4.d3 Nf6 5.O-O d6" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6 
O-O d6")
+ ("C50r" "Giuoco Pianissimo: Italian Four Knights" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 
Nf6 Nc3")
+ ("C50s" "Giuoco Pianissimo: Italian Four Knights, 5...d6" "e4 e5 Nf3 Nc6 Bc4 
Bc5 d3 Nf6 Nc3 d6")
+ ("C50t" "Giuoco Pianissimo: Italian Four Knights, 5...d6 6.Be3" "e4 e5 Nf3 
Nc6 Bc4 Bc5 d3 Nf6 Nc3 d6 Be3")
+ ("C50u" "Giuoco Pianissimo: Canal Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6 
Nc3 d6 Bg5")
+ ("C50v" "Giuoco Pianissimo: Canal, 6...h6" "e4 e5 Nf3 Nc6 Bc4 Bc5 d3 Nf6 Nc3 
d6 Bg5 h6")
+ ("C51" "Evans Gambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4")
+ ("C51" "Evans Gambit Declined: 4...Be7" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Be7")
+ ("C51" "Evans Gambit: Hein Countergambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 d5")
+ ("C51" "Evans Gambit Declined" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bb6")
+ ("C51" "Evans Gambit Declined, Cordel Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bb6 Bb2")
+ ("C51" "Evans Gambit Declined, 5.b5" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bb6 b5")
+ ("C51" "Evans Gambit Declined, Lange Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bb6 
b5 Na5 Nxe5 Nh6")
+ ("C51" "Evans Gambit Declined, Pavlov Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bb6 b5 Na5 Nxe5 Nh6 d4 d6 Bxh6 dxe5 Bxg7 Rg8 Bxf7+ Kxf7 Bxe5 Qg5 Nd2")
+ ("C51" "Evans Gambit Declined, Hirschbach Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 
b4 Bb6 b5 Na5 Nxe5 Qg5")
+ ("C51" "Evans Gambit Declined, Vasquez Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bb6 b5 Na5 Nxe5 Qg5 Bxf7+ Ke7 Qh5")
+ ("C51" "Evans Gambit Declined, Hicken Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bb6 b5 Na5 Nxe5 Qg5 Qf3 Qxe5 Qxf7+ Kd8 Bb2")
+ ("C51" "Evans Gambit Declined, 5.a4" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bb6 a4")
+ ("C51" "Evans Gambit Declined, Showalter Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bb6 a4 a6 Nc3")
+ ("C51" "Evans Gambit Accepted" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4")
+ ("C51" "Evans Gambit Accepted, 5.c3" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3")
+ ("C51" "Evans Gambit: Mayet Defence" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bf8")
+ ("C51" "Evans Gambit: Stone-Ware Defence" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Bd6")
+ ("C51" "Evans Gambit: Anderssen Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Be7")
+ ("C51" "Evans Gambit: Anderssen, 6.Qb3" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Be7 
Qb3")
+ ("C51" "Evans Gambit: Anderssen, 6.d4" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Be7 
d4")
+ ("C51" "Evans Gambit: Cordel Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Be7 
d4 Na5")
+ ("C51" "Evans Gambit: Normal Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bc5 
d4 exd4 O-O d6 cxd4 Bb6")
+ ("C51" "Evans Gambit: Anderssen Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Bc5 d4 exd4 O-O d6 cxd4 Bb6 d5")
+ ("C51" "Evans Gambit: Ulvestad Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Bc5 d4 exd4 O-O d6 cxd4 Bb6 d5 Na5 Bb2")
+ ("C51" "Evans Gambit: Paulsen Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Bc5 d4 exd4 O-O d6 cxd4 Bb6 d5 Na5 Bb2 Ne7")
+ ("C51" "Evans Gambit: Morphy Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bc5 d4 
exd4 O-O d6 cxd4 Bb6 Nc3")
+ ("C51" "Evans Gambit: Göring Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bc5 d4 
exd4 O-O d6 cxd4 Bb6 Nc3 Na5 Bg5")
+ ("C51" "Evans Gambit: Steinitz Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Bc5 d4 exd4 O-O d6 cxd4 Bb6 Nc3 Na5 Bg5 f6 Be3")
+ ("C51" "Evans Gambit: Normal Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bc5 
d4 exd4 O-O d6 cxd4 Bb6 Nc3 Bg4")
+ ("C51" "Evans Gambit: Fraser Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Bc5 d4 
exd4 O-O d6 cxd4 Bb6 Nc3 Bg4 Qa4")
+ ("C51" "Evans Gambit: Fraser-Mortimer Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 
c3 Bc5 d4 exd4 O-O d6 cxd4 Bb6 Nc3 Bg4 Qa4 Bd7 Qb3 Na5 Bxf7+ Kf8 Qc2")
+ ("C52" "Evans Gambit: 5...Ba5" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5")
+ ("C52" "Evans Gambit: 5...Ba5 6.Qb3" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
Qb3")
+ ("C52" "Evans Gambit: 5...Ba5 6.O-O" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
O-O")
+ ("C52" "Evans Gambit: 5...Ba5 6.O-O Nf6" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 O-O Nf6")
+ ("C52" "Evans Gambit: Richardson Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 O-O Nf6 d4 O-O Nxe5")
+ ("C52" "Evans Gambit: 5...Ba5 6.O-O d6" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
O-O d6")
+ ("C52" "Evans Gambit: 5...Ba5 6.O-O d6 7.d4" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 
c3 Ba5 O-O d6 d4")
+ ("C52" "Evans Gambit: Waller Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
O-O d6 d4 exd4 Qb3")
+ ("C52" "Evans Gambit: Sanders-Alapin Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bxb4 c3 Ba5 O-O d6 d4 Bd7")
+ ("C52" "Evans Gambit: Alapin-Steinitz Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bxb4 c3 Ba5 O-O d6 d4 Bg4")
+ ("C52" "Evans Gambit: Lasker's Defence" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
O-O d6 d4 Bb6")
+ ("C52" "Evans Gambit: 5...Ba5 6.d4" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 d4")
+ ("C52" "Evans Gambit: Leonhardt Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 d4 b5")
+ ("C52" "Evans Gambit: 5...Ba5 6.d4 exd4" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 d4 exd4")
+ ("C52" "Evans Gambit: Compromised Defence" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 d4 exd4 O-O dxc3")
+ ("C52" "Evans Gambit: Compromised Defence, Paulsen Variation" "e4 e5 Nf3 Nc6 
Bc4 Bc5 b4 Bxb4 c3 Ba5 d4 exd4 O-O dxc3 Qb3 Qf6 e5 Qg6 Nxc3 Nge7 Ba3")
+ ("C52" "Evans Gambit: Compromised Defence, Potter Variation" "e4 e5 Nf3 Nc6 
Bc4 Bc5 b4 Bxb4 c3 Ba5 d4 exd4 O-O dxc3 Qb3 Qf6 e5 Qg6 Nxc3 Nge7 Rd1")
+ ("C52" "Evans Gambit: 5...Ba5 6.d4 d6" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 Ba5 
d4 d6")
+ ("C52" "Evans Gambit: Sokolsky Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 d4 d6 Bg5")
+ ("C52" "Evans Gambit: Tartakower Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 Bxb4 c3 
Ba5 d4 d6 Qb3")
+ ("C52" "Evans Gambit: Tartakower Attack, 7...Qd7" "e4 e5 Nf3 Nc6 Bc4 Bc5 b4 
Bxb4 c3 Ba5 d4 d6 Qb3 Qd7")
+ ("C52" "Evans Gambit: Tartakower Attack, 8.dxe5 Bb6" "e4 e5 Nf3 Nc6 Bc4 Bc5 
b4 Bxb4 c3 Ba5 d4 d6 Qb3 Qd7 dxe5 Bb6")
+ ("C52" "Evans Gambit: Tartakower Attack, 8.dxe5 dxe5" "e4 e5 Nf3 Nc6 Bc4 Bc5 
b4 Bxb4 c3 Ba5 d4 d6 Qb3 Qd7 dxe5 dxe5")
+ ("C52" "Evans Gambit: Tartakower, Levenfish Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 
b4 Bxb4 c3 Ba5 d4 d6 Qb3 Qd7 dxe5 dxe5 O-O Bb6 Ba3 Na5 Nxe5")
+ ("C53" "Giuoco Piano: 4.c3" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3")
+ ("C53" "Giuoco Piano: LaBourdonnais Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 d6 
d4 exd4 cxd4 Bb6")
+ ("C53" "Giuoco Piano: Close Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Qe7")
+ ("C53" "Giuoco Piano: Centre-Holding Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Qe7 
d4 Bb6")
+ ("C53" "Giuoco Piano: Tarrasch Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Qe7 d4 
Bb6 O-O Nf6 a4 a6 Re1 d6 h3")
+ ("C53" "Giuoco Piano: Mestel Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Qe7 d4 Bb6 
Bg5")
+ ("C53" "Giuoco Piano: Eisinger Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Qe7 d4 
Bb6 d5 Nb8 d6")
+ ("C54a" "Giuoco Piano: 4.c3 Nf6" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6")
+ ("C54b" "Giuoco Piano: Albin Gambit" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 O-O")
+ ("C54c" "Giuoco Piano: Bird's Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 b4")
+ ("C54c" "Giuoco Piano: Bird's Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 b4 Bb6 
a4")
+ ("C54d" "Giuoco Pianissimo: 5.d3" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d3")
+ ("C54e" "Giuoco Pianissimo: 5.d3 a6" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d3 a6")
+ ("C54f" "Giuoco Pianissimo: 5.d3 d6" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d3 d6")
+ ("C54g" "Giuoco Pianissimo: 5.d3 d6 6.Nbd2" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d3 
d6 Nbd2")
+ ("C54h" "Giuoco Pianissimo: 5.d3 d6 6.O-O" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d3 
d6 O-O")
+ ("C54i" "Giuoco Pianissimo: 5.d3 d6 6.O-O O-O" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 
d3 d6 O-O O-O")
+ ("C54j" "Giuoco Piano: 5.d4" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4")
+ ("C54k" "Giuoco Piano: 6.e5" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 e5")
+ ("C54k" "Giuoco Piano: Ghulam Kassim Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 
d4 exd4 e5 Ne4 Bd5 Nxf2 Kxf2 dxc3+ Kg3")
+ ("C54k" "Giuoco Piano: 6.e5 d5" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 e5 d5")
+ ("C54k" "Giuoco Piano: Anderssen Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 e5 d5 Bb5 Ne4 cxd4 Bb4+")
+ ("C54l" "Giuoco Piano: 6.cxd4" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 cxd4")
+ ("C54l" "Giuoco Piano: 6.cxd4 Bb4+" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 
cxd4 Bb4+")
+ ("C54l" "Giuoco Piano: Krakow Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Kf1")
+ ("C54m" "Giuoco Piano: 6.cxd4 Bb4+ 7.Bd2" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Bd2")
+ ("C54m" "Giuoco Piano: Krause Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Bd2 Nxe4 Bxb4 Nxb4 Bxf7+ Kxf7 Qb3+ d5 Ne5+ Kf6 f3")
+ ("C54n" "Giuoco Piano: Greco Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 
cxd4 Bb4+ Nc3")
+ ("C54n" "Giuoco Piano: Greco Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 
cxd4 Bb4+ Nc3 Nxe4 O-O Nxc3")
+ ("C54n" "Giuoco Piano: Bernstein Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Nxc3 bxc3 Bxc3 Qb3 d5")
+ ("C54n" "Giuoco Piano: Aitken Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Nxc3 bxc3 Bxc3 Ba3")
+ ("C54o" "Giuoco Piano: Greco Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 exd4 
cxd4 Bb4+ Nc3 Nxe4 O-O Bxc3")
+ ("C54o" "Giuoco Piano: Steinitz Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 d4 
exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Bxc3 bxc3 d5 Ba3")
+ ("C54o" "Giuoco Piano: Möller (Therkatz) Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 
Nf6 d4 exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Bxc3 d5")
+ ("C54o" "Giuoco Piano: Möller-Herzog Variation" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 
d4 exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Bxc3 d5 Bf6 Re1 Ne7 Rxe4 d6 Bg5 Bxg5 Nxg5 O-O 
Nxh7")
+ ("C54o" "Giuoco Piano: Möller, Bayonet Attack" "e4 e5 Nf3 Nc6 Bc4 Bc5 c3 Nf6 
d4 exd4 cxd4 Bb4+ Nc3 Nxe4 O-O Bxc3 d5 Bf6 Re1 Ne7 Rxe4 d6 g4")
+ ("C55a" "Two Knights Defence" "e4 e5 Nf3 Nc6 Bc4 Nf6")
+ ("C55b" "Two Knights: Deutz Gambit" "e4 e5 Nf3 Nc6 Bc4 Nf6 O-O Bc5 d4")
+ ("C55b" "Two Knights: 4.O-O Gambit, Rosentreter Variation" "e4 e5 Nf3 Nc6 Bc4 
Nf6 O-O Bc5 d4 Bxd4 Nxd4 Nxd4 Bg5 h6 Bh4 g5 f4")
+ ("C55b" "Two Knights: 4.O-O Gambit, Holzhausen Attack" "e4 e5 Nf3 Nc6 Bc4 Nf6 
O-O Bc5 d4 Bxd4 Nxd4 Nxd4 Bg5 d6 f4 Qe7 fxe5 dxe5 Nc3")
+ ("C55c" "Two Knights: 4.d3" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3")
+ ("C55d" "Two Knights: 4.d3 h6" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 h6")
+ ("C55e" "Two Knights: 4.d3 Be7" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7")
+ ("C55e" "Two Knights: 4.d3 Be7 5.Bb3 O-O" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 Bb3 
O-O")
+ ("C55f" "Two Knights: 4.d3 Be7 5.c3" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 c3")
+ ("C55g" "Two Knights: 4.d3 Be7 5.O-O" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 O-O")
+ ("C55h" "Two Knights: 4.d3 Be7 5.O-O O-O" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 O-O 
O-O")
+ ("C55i" "Two Knights: 4.d3 Be7 5.O-O O-O 6.Bb3" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 
O-O O-O Bb3")
+ ("C55j" "Two Knights: 4.d3 Be7 5.O-O O-O 6.Bb3 d6 7.c3" "e4 e5 Nf3 Nc6 Bc4 
Nf6 d3 Be7 O-O O-O Bb3 d6 c3")
+ ("C55k" "Two Knights: 4.d3 Be7 5.O-O O-O 6.Re1" "e4 e5 Nf3 Nc6 Bc4 Nf6 d3 Be7 
O-O O-O Re1")
+ ("C55l" "Two Knights: 4.d4" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4")
+ ("C55l" "Two Knights: 4.d4 exd4" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4")
+ ("C55m" "Two Knights: 4.d4 exd4 5.Nxd4" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 Nxd4")
+ ("C55n" "Two Knights: Perreux Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 Ng5")
+ ("C55o" "Two Knights: Modern Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 e5")
+ ("C55p" "Two Knights: Modern, 5.e5 d5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 e5 d5")
+ ("C55q" "Two Knights: Modern, Main Line" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 e5 d5 
Bb5 Ne4 Nxd4 Bd7")
+ ("C55r" "Two Knights: Modern, Main Line, 8.Bxc6 bxc6 9.O-O Bc5" "e4 e5 Nf3 
Nc6 Bc4 Nf6 d4 exd4 e5 d5 Bb5 Ne4 Nxd4 Bd7 Bxc6 bxc6 O-O Bc5")
+ ("C55s" "Two Knights: 5.O-O" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O")
+ ("C55s" "Two Knights: 5.O-O Be7" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O Be7")
+ ("C55t" "Two Knights: 5.O-O d6" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O d6")
+ ("C55u" "Two Knights: Max Lange Attack" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Bc5")
+ ("C55v" "Two Knights: Max Lange, Steinitz Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Bc5 e5 Ng4")
+ ("C55v" "Two Knights: Max Lange, Krause Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Bc5 e5 Ng4 c3")
+ ("C55w" "Two Knights: Max Lange, 6.e5 d5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Bc5 e5 d5")
+ ("C55w" "Two Knights: Max Lange, Schlechter Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 fxg7")
+ ("C55x" "Two Knights: Max Lange, Berger Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 Qd5 Nc3 Qf5 g4 Qg6 Nce4 Bb6 f4 O-O-O")
+ ("C55x" "Two Knights: Max Lange, Marshall Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 Qd5 Nc3 Qf5 Nce4")
+ ("C55x" "Two Knights: Max Lange, Rubinstein Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 Qd5 Nc3 Qf5 Nce4 Bf8")
+ ("C55x" "Two Knights: Max Lange, Loman Defence" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 g6")
+ ("C56a" "Two Knights: Classical" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O Nxe4")
+ ("C56a" "Two Knights: Classical, Nakhmanson Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Nxe4 Nc3")
+ ("C56b" "Two Knights: Classical, 6.Re1" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Nxe4 Re1")
+ ("C56b" "Two Knights: Classical, 6.Re1 d5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Nxe4 Re1 d5")
+ ("C56c" "Two Knights: Classical, Canal Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Nc3")
+ ("C56d" "Two Knights: Classical, 7.Bxd5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Nxe4 Re1 d5 Bxd5")
+ ("C56d" "Two Knights: Classical, 7.Bxd5 Qxd5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 
O-O Nxe4 Re1 d5 Bxd5 Qxd5")
+ ("C56d" "Two Knights: Classical, 8.Nc3" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O 
Nxe4 Re1 d5 Bxd5 Qxd5 Nc3")
+ ("C56e" "Two Knights: Classical, 8.Nc3 Qd8" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 
O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qd8")
+ ("C56f" "Two Knights: Classical, 8.Nc3 Qh5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 
O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qh5")
+ ("C56g" "Two Knights: Classical, 8.Nc3 Qh5 9.Nxe4 Be6 10.Bg5 Bd6" "e4 e5 Nf3 
Nc6 Bc4 Nf6 d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qh5 Nxe4 Be6 Bg5 Bd6")
+ ("C56h" "Two Knights: Classical, Moller Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5")
+ ("C56h" "Two Knights: Classical, Moller, 9.Nxe4" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4")
+ ("C56h" "Two Knights: Classical, Moller, 9.Nxe4 Be6" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6")
+ ("C56i" "Two Knights: Classical, Moller, 10.Bg5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bg5")
+ ("C56i" "Two Knights: Classical, Yurdansky Attack" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bg5 h6 Bh4 g5 Nf6+ Ke7 b4")
+ ("C56j" "Two Knights: Classical, Moller, 10.Neg5" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Neg5")
+ ("C56k" "Two Knights: Classical, Moller, 10.Neg5 O-O-O 11.Nxe6 fxe6 12.Rxe6 
Bd6" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 
Neg5 O-O-O Nxe6 fxe6 Rxe6 Bd6")
+ ("C56l" "Two Knights: Classical, Moller, 10.Bd2" "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 
exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bd2")
+ ("C56m" "Two Knights: Classical, Moller, 10.Bd2 Qf5" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bd2 Qf5")
+ ("C56n" "Two Knights: Classical, Moller, 10.Bd2 Qd5" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bd2 Qd5")
+ ("C56o" "Two Knights: Classical, Moller, 10.Bd2 Bb4" "e4 e5 Nf3 Nc6 Bc4 Nf6 
d4 exd4 O-O Nxe4 Re1 d5 Bxd5 Qxd5 Nc3 Qa5 Nxe4 Be6 Bd2 Bb4")
+ ("C57a" "Two Knights: 4.Ng5" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5")
+ ("C57a" "Two Knights: Traxler (Wilkes-Barre) Variation" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 Bc5")
+ ("C57a" "Two Knights: Traxler, 5.d4" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 Bc5 d4")
+ ("C57b" "Two Knights: Traxler, 5.Nxf7" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 Bc5 Nxf7")
+ ("C57b" "Two Knights: Traxler, 5.Nxf7 & 6.Kxf2" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
Bc5 Nxf7 Bxf2+ Kxf2")
+ ("C57c" "Two Knights: Traxler, 5.Nxf7 & 6.Kf1" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 Bc5 
Nxf7 Bxf2+ Kf1")
+ ("C57c" "Two Knights: Traxler, 5.Nxf7 & 6.Kf1, Beyer's 8...Bg4" "e4 e5 Nf3 
Nc6 Bc4 Nf6 Ng5 Bc5 Nxf7 Bxf2+ Kf1 Qe7 Nxh8 d5 exd5 Bg4")
+ ("C57c" "Two Knights: Traxler, 5.Nxf7 & 6.Kf1, 8...Nd4" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 Bc5 Nxf7 Bxf2+ Kf1 Qe7 Nxh8 d5 exd5 Nd4")
+ ("C57c" "Two Knights: Traxler, 5.Nxf7 & 6.Kf1, Palkin Variation" "e4 e5 Nf3 
Nc6 Bc4 Nf6 Ng5 Bc5 Nxf7 Bxf2+ Kf1 Qe7 Nxh8 d5 exd5 Nd4 h3")
+ ("C57c" "Two Knights: Traxler, 5.Nxf7 & 6.Kf1, Menovsky Variation" "e4 e5 Nf3 
Nc6 Bc4 Nf6 Ng5 Bc5 Nxf7 Bxf2+ Kf1 Qe7 Nxh8 d5 exd5 Nd4 d6")
+ ("C57d" "Two Knights: Traxler, 5.Bxf7+" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 Bc5 Bxf7+")
+ ("C57d" "Two Knights: Traxler, 5.Bxf7+ Ke7 6.Bb3" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
Bc5 Bxf7+ Ke7 Bb3")
+ ("C57d" "Two Knights: Traxler, Chigorin/Pithart Variation" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 Bc5 Bxf7+ Ke7 Bd5")
+ ("C57e" "Two Knights: 4.Ng5 d5" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5")
+ ("C57e" "Two Knights: Kloss Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Nb4")
+ ("C57e" "Two Knights: 4.Ng5 d5 5.exd5 Nxd5" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Nxd5")
+ ("C57f" "Two Knights: Lolli Attack" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 Nxd5 
d4")
+ ("C57f" "Two Knights: Lolli Attack, Pinkus Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Nxd5 d4 Bb4+")
+ ("C57g" "Two Knights: Fegatello (Fried Liver) Attack" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Nxd5 Nxf7")
+ ("C57g" "Two Knights: Fegatello, Leonhardt Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Nxd5 Nxf7 Kxf7 Qf3+ Ke6 Nc3 Nb4 Qe4 c6 a3 Na6 d4 Nc7")
+ ("C57g" "Two Knights: Fegatello, Polerio Defence" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Nxd5 Nxf7 Kxf7 Qf3+ Ke6 Nc3 Ne7")
+ ("C57h" "Two Knights: Ulvestad Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
b5")
+ ("C57i" "Two Knights: Fritz Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Nd4")
+ ("C57i" "Two Knights: Fritz Variation, Main Line" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Nd4 c3 b5 Bf1 Nxd5")
+ ("C57j" "Two Knights: Fritz, 8.Nxf7" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 Nd4 
c3 b5 Bf1 Nxd5 Nxf7")
+ ("C57j" "Two Knights: Fritz, 8.cxd5" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 Nd4 
c3 b5 Bf1 Nxd5 cxd4")
+ ("C57j" "Two Knights: Fritz, Paoli's 8.h4" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Nd4 c3 b5 Bf1 Nxd5 h4")
+ ("C57k" "Two Knights: Fritz, Gruber Variation (8.Ne4)" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Nd4 c3 b5 Bf1 Nxd5 Ne4")
+ ("C57l" "Two Knights: Fritz, Radchenko Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Nd4 c3 b5 Bf1 Nxd5 Ne4 Qh4 Ng3 Bb7")
+ ("C57m" "Two Knights: Fritz, Berliner Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Nd4 c3 b5 Bf1 Nxd5 Ne4 Qh4 Ng3 Bg4 f3 e4")
+ ("C58a" "Two Knights: Morphy Variation (5...Na5)" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5")
+ ("C58b" "Two Knights: Morphy, Kieseritsky Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Na5 d3")
+ ("C58c" "Two Knights: Morphy, Kieseritsky Variation, 6...h6 7.Nf3 e4 8.Qe2" 
"e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 Na5 d3 h6 Nf3 e4 Qe2")
+ ("C58c" "Two Knights: Morphy, Yankovich Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 d3 h6 Nf3 e4 Qe2 Nxc4 dxc4 Bc5 Nfd2")
+ ("C58c" "Two Knights: Morphy, Maroczy Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 d3 h6 Nf3 e4 Qe2 Nxc4 dxc4 Be7")
+ ("C58d" "Two Knights: Morphy, Polerio (6.Bb5+)" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+")
+ ("C58d" "Two Knights: Morphy, Polerio, 6...Bd7" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ Bd7")
+ ("C58e" "Two Knights: Morphy, Polerio, 6...c6" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6")
+ ("C58f" "Two Knights: Morphy, Bogoljubow Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Qf3")
+ ("C58f" "Two Knights: Morphy, Blackburne Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 
Ng5 d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Qf3 cxb5")
+ ("C58f" "Two Knights: Morphy, Paoli Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Qf3 Qc7 Bd3")
+ ("C58g" "Two Knights: Morphy, Colman Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Qf3 Rb8")
+ ("C58h" "Two Knights: Morphy, 8.Be2" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 Na5 
Bb5+ c6 dxc6 bxc6 Be2")
+ ("C59a" "Two Knights: Morphy, 8.Be2 h6" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Na5 Bb5+ c6 dxc6 bxc6 Be2 h6")
+ ("C59b" "Two Knights: Morphy, Steinitz Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nh3")
+ ("C59c" "Two Knights: Morphy, Main Line 9.Nf3" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3")
+ ("C59c" "Two Knights: Morphy, Main Line 9.Nf3 e4" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4")
+ ("C59c" "Two Knights: Morphy, Main Line 9.Nf3 e4 10.Ne5" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5")
+ ("C59d" "Two Knights: Morphy, Steiner Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bc5")
+ ("C59e" "Two Knights: Morphy, Göring Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Qc7")
+ ("C59f" "Two Knights: Morphy, Geller Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Qd4")
+ ("C59g" "Two Knights: Main Line 10...Bd6" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6")
+ ("C59h" "Two Knights: Main Line, 11.f4" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 f4")
+ ("C59i" "Two Knights: Main Line, 11.f4 exf3" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 f4 exf3")
+ ("C59j" "Two Knights: Main Line, 11.d4" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 exd5 
Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4")
+ ("C59j" "Two Knights: Main Line, 11.d4 Qc7" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4 Qc7")
+ ("C59j" "Two Knights: Main Line, Knorre Variation" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 
d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4 Qc7 Bd2")
+ ("C59k" "Two Knights: Main Line, 11.d4 exd3" "e4 e5 Nf3 Nc6 Bc4 Nf6 Ng5 d5 
exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4 exd3")
+ ("C59k" "Two Knights: Main Line, 11.d4 exd3 12.Nxd3 Qc7" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4 exd3 Nxd3 Qc7")
+ ("C59l" "Two Knights: Main Line, 11.d4, Honfi Variation" "e4 e5 Nf3 Nc6 Bc4 
Nf6 Ng5 d5 exd5 Na5 Bb5+ c6 dxc6 bxc6 Be2 h6 Nf3 e4 Ne5 Bd6 d4 exd3 Nxd3 Qc7 
b3")
+ ("C60a" "Spanish (Ruy Lopez)" "e4 e5 Nf3 Nc6 Bb5")
+ ("C60a" "Spanish: Spanish Countergambit" "e4 e5 Nf3 Nc6 Bb5 d5")
+ ("C60b" "Spanish: 3...a5" "e4 e5 Nf3 Nc6 Bb5 a5")
+ ("C60c" "Spanish: Nürnberg Variation" "e4 e5 Nf3 Nc6 Bb5 f6")
+ ("C60d" "Spanish: Pollock Defence" "e4 e5 Nf3 Nc6 Bb5 Na5")
+ ("C60e" "Spanish: Lucena Defence" "e4 e5 Nf3 Nc6 Bb5 Be7")
+ ("C60f" "Spanish: Vinogradov Variation" "e4 e5 Nf3 Nc6 Bb5 Qe7")
+ ("C60g" "Spanish: Brentano Variation" "e4 e5 Nf3 Nc6 Bb5 g5")
+ ("C60h" "Spanish: Alapin Variation" "e4 e5 Nf3 Nc6 Bb5 Bb4")
+ ("C60i" "Spanish: Alapin, 4.c3" "e4 e5 Nf3 Nc6 Bb5 Bb4 c3")
+ ("C60j" "Spanish: Fianchetto (Smyslov) Defence" "e4 e5 Nf3 Nc6 Bb5 g6")
+ ("C60k" "Spanish: Fianchetto, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 g6 O-O")
+ ("C60l" "Spanish: Fianchetto, 4.d4" "e4 e5 Nf3 Nc6 Bb5 g6 d4")
+ ("C60m" "Spanish: Fianchetto, 4.d4 exd4 5.Bg5" "e4 e5 Nf3 Nc6 Bb5 g6 d4 exd4 
Bg5")
+ ("C60n" "Spanish: Fianchetto, 4.c3" "e4 e5 Nf3 Nc6 Bb5 g6 c3")
+ ("C60o" "Spanish: Cozio Defence" "e4 e5 Nf3 Nc6 Bb5 Nge7")
+ ("C60p" "Spanish: Cozio, 4.Nc3" "e4 e5 Nf3 Nc6 Bb5 Nge7 Nc3")
+ ("C60q" "Spanish: Cozio, Paulsen Variation" "e4 e5 Nf3 Nc6 Bb5 Nge7 Nc3 g6")
+ ("C60r" "Spanish: Cozio, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 Nge7 c3")
+ ("C60s" "Spanish: Cozio, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 Nge7 O-O")
+ ("C60t" "Spanish: Cozio, 4.O-O g6" "e4 e5 Nf3 Nc6 Bb5 Nge7 O-O g6")
+ ("C60u" "Spanish: Cozio, 4.O-O g6" "e4 e5 Nf3 Nc6 Bb5 Nge7 O-O g6 c3")
+ ("C61a" "Spanish: Bird's Defence" "e4 e5 Nf3 Nc6 Bb5 Nd4")
+ ("C61b" "Spanish: Bird's, 4.Bc4" "e4 e5 Nf3 Nc6 Bb5 Nd4 Bc4")
+ ("C61c" "Spanish: Bird's, 4.Nxd4" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4")
+ ("C61c" "Spanish: Bird's, 4.Nxd4 exd4" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4")
+ ("C61d" "Spanish: Bird's, 5.d3" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 d3")
+ ("C61e" "Spanish: Bird's, 5.Bc4" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 Bc4")
+ ("C61f" "Spanish: Bird's, 5.O-O" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 O-O")
+ ("C61f" "Spanish: Bird's, Paulsen Variation" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 
O-O Ne7")
+ ("C61g" "Spanish: Bird's, 5.O-O c6" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 O-O c6")
+ ("C61h" "Spanish: Bird's, 5.O-O c6 6.Bc4" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 
O-O c6 Bc4")
+ ("C61i" "Spanish: Bird's, 5.O-O Bc5" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 O-O 
Bc5")
+ ("C61j" "Spanish: Bird's, 5.O-O Bc5 6.d3" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 
O-O Bc5 d3")
+ ("C61k" "Spanish: Bird's, 5.O-O Bc5 6.d3 c6" "e4 e5 Nf3 Nc6 Bb5 Nd4 Nxd4 exd4 
O-O Bc5 d3 c6")
+ ("C61l" "Spanish: Bird's, 5.O-O Bc5 6.d3 c6 7.Bc4" "e4 e5 Nf3 Nc6 Bb5 Nd4 
Nxd4 exd4 O-O Bc5 d3 c6 Bc4")
+ ("C61m" "Spanish: Bird's, 5.O-O Bc5 6.d3 c6 7.Bc4 d5" "e4 e5 Nf3 Nc6 Bb5 Nd4 
Nxd4 exd4 O-O Bc5 d3 c6 Bc4 d5")
+ ("C62" "Spanish: Old Steinitz" "e4 e5 Nf3 Nc6 Bb5 d6")
+ ("C62" "Spanish: Old Steinitz, 4.Bxc6+" "e4 e5 Nf3 Nc6 Bb5 d6 Bxc6+")
+ ("C62" "Spanish: Old Steinitz, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 d6 O-O")
+ ("C62" "Spanish: Old Steinitz, 4.c3" "e4 e5 Nf3 Nc6 Bb5 d6 c3")
+ ("C62" "Spanish: Old Steinitz, 4.d4" "e4 e5 Nf3 Nc6 Bb5 d6 d4")
+ ("C62" "Spanish: Old Steinitz, 4.d4 exd4" "e4 e5 Nf3 Nc6 Bb5 d6 d4 exd4")
+ ("C62" "Spanish: Old Steinitz, 4.d4 exd4 5.Qxd4" "e4 e5 Nf3 Nc6 Bb5 d6 d4 
exd4 Qxd4")
+ ("C62" "Spanish: Old Steinitz, 4.d4 exd4 5.Nxd4" "e4 e5 Nf3 Nc6 Bb5 d6 d4 
exd4 Nxd4")
+ ("C62" "Spanish: Old Steinitz, 4.d4 Bd7" "e4 e5 Nf3 Nc6 Bb5 d6 d4 Bd7")
+ ("C62" "Spanish: Old Steinitz, 4.d4 Bd7 5.Nc3" "e4 e5 Nf3 Nc6 Bb5 d6 d4 Bd7 
Nc3")
+ ("C62" "Spanish: Old Steinitz, Nimzowitsch Attack" "e4 e5 Nf3 Nc6 Bb5 d6 d4 
Bd7 Nc3 Nf6 Bxc6")
+ ("C62" "Spanish: Old Steinitz, Semi-Duras Variation" "e4 e5 Nf3 Nc6 Bb5 d6 d4 
Bd7 c4")
+ ("C63a" "Spanish: Schliemann (Jänisch)" "e4 e5 Nf3 Nc6 Bb5 f5")
+ ("C63a" "Spanish: Schliemann, 4.Qe2" "e4 e5 Nf3 Nc6 Bb5 f5 Qe2")
+ ("C63b" "Spanish: Schliemann, 4.exf5" "e4 e5 Nf3 Nc6 Bb5 f5 exf5")
+ ("C63c" "Spanish: Schliemann, 4.d4" "e4 e5 Nf3 Nc6 Bb5 f5 d4")
+ ("C63d" "Spanish: Schliemann, 4.d3" "e4 e5 Nf3 Nc6 Bb5 f5 d3")
+ ("C63e" "Spanish: Schliemann, 4.d3 fxe4" "e4 e5 Nf3 Nc6 Bb5 f5 d3 fxe4")
+ ("C63f" "Spanish: Schliemann, 4.d3 fxe4 5.dxe4 Nf6 6.O-O" "e4 e5 Nf3 Nc6 Bb5 
f5 d3 fxe4 dxe4 Nf6 O-O")
+ ("C63g" "Spanish: Schliemann, 4.Bxc6" "e4 e5 Nf3 Nc6 Bb5 f5 Bxc6")
+ ("C63h" "Spanish: Schliemann, 4.Bxc6 dxc6" "e4 e5 Nf3 Nc6 Bb5 f5 Bxc6 dxc6")
+ ("C63i" "Spanish: Schliemann, 4.Nc3" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3")
+ ("C63j" "Spanish: Schliemann, 4.Nc3 Nd4" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 Nd4")
+ ("C63k" "Spanish: Schliemann, 4.Nc3 Nd4 5.Ba4" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 Nd4 
Ba4")
+ ("C63l" "Spanish: Schliemann, 4.Nc3 Nf6" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 Nf6")
+ ("C63m" "Spanish: Schliemann, 4.Nc3 Nf6 5.exf5" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 Nf6 
exf5")
+ ("C63n" "Spanish: Schliemann, 4.Nc3 fxe4" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 fxe4")
+ ("C63o" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6" "e4 e5 Nf3 Nc6 Bb5 f5 
Nc3 fxe4 Nxe4 Nf6")
+ ("C63p" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6 6.Qe2" "e4 e5 Nf3 Nc6 Bb5 
f5 Nc3 fxe4 Nxe4 Nf6 Qe2")
+ ("C63q" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6 6.Nxf6+" "e4 e5 Nf3 Nc6 
Bb5 f5 Nc3 fxe4 Nxe4 Nf6 Nxf6+")
+ ("C63r" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5" "e4 e5 Nf3 Nc6 Bb5 f5 Nc3 
fxe4 Nxe4 d5")
+ ("C63s" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5" "e4 e5 Nf3 Nc6 Bb5 
f5 Nc3 fxe4 Nxe4 d5 Nxe5")
+ ("C63t" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5 dxe4 7.Nxc6 Qd5" 
"e4 e5 Nf3 Nc6 Bb5 f5 Nc3 fxe4 Nxe4 d5 Nxe5 dxe4 Nxc6 Qd5")
+ ("C63u" "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5 dxe4 7.Nxc6 Qg5" 
"e4 e5 Nf3 Nc6 Bb5 f5 Nc3 fxe4 Nxe4 d5 Nxe5 dxe4 Nxc6 Qg5")
+ ("C64a" "Spanish: Classical Defence" "e4 e5 Nf3 Nc6 Bb5 Bc5")
+ ("C64a" "Spanish: Classical, Exchange" "e4 e5 Nf3 Nc6 Bb5 Bc5 Bxc6")
+ ("C64b" "Spanish: Classical, 4.c3" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3")
+ ("C64b" "Spanish: Classical, Boden Variation" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Qe7")
+ ("C64c" "Spanish: Classical, Charousek Variation" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 
Bb6")
+ ("C64d" "Spanish: Classical, 4.c3 Nge7" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Nge7")
+ ("C64e" "Spanish: Classical, 4.c3 Qf6" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Qf6")
+ ("C64f" "Spanish: Classical, Cordel Gambit" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 f5")
+ ("C64g" "Spanish: Classical, Cordel Gambit, 5.d4" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 
f5 d4")
+ ("C64h" "Spanish: Classical, 4.c3 Nf6" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Nf6")
+ ("C64i" "Spanish: Classical, 4.c3 Nf6 5.d4" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Nf6 d4")
+ ("C64j" "Spanish: Classical, 4.c3 Nf6 5.d4 Bb6" "e4 e5 Nf3 Nc6 Bb5 Bc5 c3 Nf6 
d4 Bb6")
+ ("C64k" "Spanish: Classical, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O")
+ ("C64l" "Spanish: Classical, 4.O-O Nge7" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O Nge7")
+ ("C64m" "Spanish: Classical, 4.O-O Qf6" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O Qf6")
+ ("C64n" "Spanish: Classical, 4.O-O d6" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O d6")
+ ("C64o" "Spanish: Classical, 4.O-O d6 5.c3" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O d6 c3")
+ ("C64p" "Spanish: Classical, 4.O-O Nd4" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O Nd4")
+ ("C64q" "Spanish: Classical, Zaitsev Variation" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O 
Nd4 b4")
+ ("C64r" "Spanish: Classical, 4.O-O Nd4 5.Bc4" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O Nd4 
Bc4")
+ ("C64s" "Spanish: Classical, 4.O-O Nd4 5.Nxd4" "e4 e5 Nf3 Nc6 Bb5 Bc5 O-O Nd4 
Nxd4")
+ ("C64s" "Spanish: Classical, 4.O-O Nd4 5.Nxd4 Bxd4" "e4 e5 Nf3 Nc6 Bb5 Bc5 
O-O Nd4 Nxd4 Bxd4")
+ ("C64s" "Spanish: Classical, 4.O-O Nd4 5.Nxd4 Bxd4 6.c3" "e4 e5 Nf3 Nc6 Bb5 
Bc5 O-O Nd4 Nxd4 Bxd4 c3")
+ ("C64s" "Spanish: Classical, 4.O-O Nd4 5.Nxd4 Bxd4 6.c3 Bb6" "e4 e5 Nf3 Nc6 
Bb5 Bc5 O-O Nd4 Nxd4 Bxd4 c3 Bb6")
+ ("C64t" "Spanish: Classical, 4.O-O Nd4 5.Nxd4 Bxd4 6.c3 Bb6 7.d4" "e4 e5 Nf3 
Nc6 Bb5 Bc5 O-O Nd4 Nxd4 Bxd4 c3 Bb6 d4")
+ ("C64u" "Spanish: Classical, 6.c3 Bb6 7.d4 c6 8.Ba4" "e4 e5 Nf3 Nc6 Bb5 Bc5 
O-O Nd4 Nxd4 Bxd4 c3 Bb6 d4 c6 Ba4")
+ ("C64v" "Spanish: Classical, 6.c3 Bb6 7.d4 c6 8.Ba4 d6 9.Na3" "e4 e5 Nf3 Nc6 
Bb5 Bc5 O-O Nd4 Nxd4 Bxd4 c3 Bb6 d4 c6 Ba4 d6 Na3")
+ ("C65a" "Spanish: Berlin Defence" "e4 e5 Nf3 Nc6 Bb5 Nf6")
+ ("C65b" "Spanish: Berlin, 4.Qe2" "e4 e5 Nf3 Nc6 Bb5 Nf6 Qe2")
+ ("C65c" "Spanish: Berlin, 4.d4" "e4 e5 Nf3 Nc6 Bb5 Nf6 d4")
+ ("C65d" "Spanish: Berlin, 4.d4 exd4" "e4 e5 Nf3 Nc6 Bb5 Nf6 d4 exd4")
+ ("C65e" "Spanish: Berlin, Nyholm Attack" "e4 e5 Nf3 Nc6 Bb5 Nf6 d4 exd4 O-O")
+ ("C65f" "Spanish: Berlin, 4.d3" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3")
+ ("C65g" "Spanish: Berlin, Mortimer Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Ne7")
+ ("C65g" "Spanish: Berlin, Mortimer Trap" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Ne7 Nxe5 
c6")
+ ("C65h" "Spanish: Berlin, 4.d3 d6" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 d6")
+ ("C65h" "Spanish: Berlin, Anderssen Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 d6 
Bxc6+")
+ ("C65h" "Spanish: Berlin, Duras Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 d6 c4")
+ ("C65i" "Spanish: Berlin, 4.d3 d6 5.c3" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 d6 c3")
+ ("C65j" "Spanish: Berlin, 4.d3 Bc5" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Bc5")
+ ("C65j" "Spanish: Berlin, Kaufmann Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 d3 Bc5 
Be3")
+ ("C65k" "Spanish: Berlin, 4.O-O" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O")
+ ("C65l" "Spanish: Berlin, 4.O-O Be7" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Be7")
+ ("C65m" "Spanish: Berlin, Beverwijk Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Bc5")
+ ("C65n" "Spanish: Berlin, Beverwijk, 5.c3" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Bc5 c3")
+ ("C65o" "Spanish: Berlin, Benelux Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Bc5 
c3 O-O d4 Bb6")
+ ("C65p" "Spanish: Berlin, Benelux Variation, 7.Bg5" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Bc5 c3 O-O d4 Bb6 Bg5")
+ ("C65q" "Spanish: Berlin, Beverwijk, 5.Nxe5" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Bc5 
Nxe5")
+ ("C66" "Spanish: Closed Berlin" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6")
+ ("C66" "Spanish: Closed Berlin, 5.Re1" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6 Re1")
+ ("C66" "Spanish: Closed Berlin, 5.d4" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6 d4")
+ ("C66" "Spanish: Closed Berlin, Chigorin Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O d6 d4 Nd7")
+ ("C66" "Spanish: Closed Berlin, 5.d4 Bd7" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6 d4 
Bd7")
+ ("C66" "Spanish: Closed Berlin, Wolf Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6 
d4 Bd7 Nc3 exd4")
+ ("C66" "Spanish: Closed Berlin, Hedgehog Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O d6 d4 Bd7 Nc3 Be7")
+ ("C66" "Spanish: Closed Berlin, Tarrasch Trap" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O d6 
d4 Bd7 Nc3 Be7 Re1 O-O")
+ ("C66" "Spanish: Closed Berlin, Bernstein Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O d6 d4 Bd7 Nc3 Be7 Bg5")
+ ("C66" "Spanish: Closed Berlin, Showalter Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O d6 d4 Bd7 Nc3 Be7 Bxc6")
+ ("C67a" "Spanish: Open Berlin" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4")
+ ("C67b" "Spanish: Open Berlin, 5.Qe2" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 Qe2")
+ ("C67c" "Spanish: Open Berlin, 5.Re1" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 Re1")
+ ("C67d" "Spanish: Open Berlin, 5.Re1 Nd6 6.Nxe5" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 Re1 Nd6 Nxe5")
+ ("C67e" "Spanish: Open Berlin, 5.d4" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4")
+ ("C67e" "Spanish: Open Berlin, Rosenthal Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 a6")
+ ("C67f" "Spanish: Open Berlin, 5...Be7" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 
Be7")
+ ("C67g" "Spanish: Berlin, Minckwitz Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Be7 dxe5")
+ ("C67h" "Spanish: Open Berlin, 5...Be7 6.Qe2" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 
d4 Be7 Qe2")
+ ("C67h" "Spanish: Open Berlin, Trifunovic Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 Be7 Qe2 d5")
+ ("C67i" "Spanish: Open Berlin, 5...Be7 6.Qd2 Nd6" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Be7 Qe2 Nd6")
+ ("C67i" "Spanish: Open Berlin, Cordel Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nf5")
+ ("C67j" "Spanish: Open Berlin, 5...Be7 6.Qd2 Nd6 7.Bxc6 bxc6 8.dxe5 Nb7" "e4 
e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nb7")
+ ("C67j" "Spanish: Open Berlin, Pillsbury Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nb7 b3")
+ ("C67j" "Spanish: Open Berlin, Zukertort Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nb7 c4")
+ ("C67k" "Spanish: Open Berlin, Winawer Attack" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nb7 Nd4")
+ ("C67l" "Spanish: Open Berlin, Main Line 9.Nc3 (Rio de Janerio)" "e4 e5 Nf3 
Nc6 Bb5 Nf6 O-O Nxe4 d4 Be7 Qe2 Nd6 Bxc6 bxc6 dxe5 Nb7 Nc3")
+ ("C67m" "Spanish: Open Berlin, 5.d4 Nd6" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 
Nd6")
+ ("C67m" "Spanish: Open Berlin, Showalter Variation" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 Nd6 Ba4")
+ ("C67n" "Spanish: Open Berlin, 5.d4 Nd6 6.dxe5" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Nd6 dxe5")
+ ("C67o" "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Nd6 Bxc6")
+ ("C67p" "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6 dxc6" "e4 e5 Nf3 Nc6 Bb5 Nf6 
O-O Nxe4 d4 Nd6 Bxc6 dxc6")
+ ("C67q" "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6 dxc6 7.dxe5 Nf5" "e4 e5 Nf3 
Nc6 Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5")
+ ("C67r" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap" "e4 e5 Nf3 Nc6 Bb5 Nf6 O-O 
Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+")
+ ("C67s" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3" "e4 e5 Nf3 Nc6 Bb5 
Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3")
+ ("C67t" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 h6" "e4 e5 Nf3 Nc6 
Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3 h6")
+ ("C67u" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8" "e4 e5 Nf3 Nc6 
Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3 Ke8")
+ ("C67v" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.Rd1" "e4 e5 
Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3 Ke8 Rd1")
+ ("C67w" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.h3" "e4 e5 
Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3 Ke8 h3")
+ ("C67x" "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.h3 a5" "e4 e5 
Nf3 Nc6 Bb5 Nf6 O-O Nxe4 d4 Nd6 Bxc6 dxc6 dxe5 Nf5 Qxd8+ Kxd8 Nc3 Ke8 h3 a5")
+ ("C68a" "Spanish: 3...a6" "e4 e5 Nf3 Nc6 Bb5 a6")
+ ("C68b" "Spanish: 3...a6 4.Bc4" "e4 e5 Nf3 Nc6 Bb5 a6 Bc4")
+ ("C68c" "Spanish: Exchange Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6")
+ ("C68c" "Spanish: Exchange, 4...bxc6" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 bxc6")
+ ("C68d" "Spanish: Exchange, 4...dxc6" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6")
+ ("C68e" "Spanish: Exchange, Lasker Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
d4")
+ ("C68f" "Spanish: Exchange, Alekhine Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 d4 exd4 Qxd4 Qxd4 Nxd4 Bd7")
+ ("C68g" "Spanish: Exchange, Keres Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
Nc3")
+ ("C68h" "Spanish: Exchange, Keres, 5...f6" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
Nc3 f6")
+ ("C68h" "Spanish: Exchange, Romanovsky Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 Nc3 f6 d3")
+ ("C68i" "Spanish: Exchange, 5.Nc3 f6 6.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
Nc3 f6 d4")
+ ("C68j" "Spanish: Exchange, 5.O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O")
+ ("C68k" "Spanish: Exchange, 5.O-O Ne7" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O 
Ne7")
+ ("C68l" "Spanish: Exchange, 5.O-O Bd6" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O 
Bd6")
+ ("C68m" "Spanish: Exchange, 5.O-O Bd6 6.d4 exd4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O Bd6 d4 exd4")
+ ("C68n" "Spanish: Exchange, 5.O-O Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O 
Bg4")
+ ("C68n" "Spanish: Exchange, 5.O-O Bg4 6.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O Bg4 h3")
+ ("C68o" "Spanish: Exchange, Alapin Gambit" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O Bg4 h3 h5")
+ ("C68p" "Spanish: Exchange, Alapin Gambit, 7.d3 Qf6 8.Nbd2" "e4 e5 Nf3 Nc6 
Bb5 a6 Bxc6 dxc6 O-O Bg4 h3 h5 d3 Qf6 Nbd2")
+ ("C68q" "Spanish: Exchange, Bronstein Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O Qd6")
+ ("C68r" "Spanish: Exchange, Bronstein, 6.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O Qd6 d3")
+ ("C68s" "Spanish: Exchange, Bronstein, 6.Na3" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O Qd6 Na3")
+ ("C68t" "Spanish: Exchange, Bronstein, 6.Na3 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O Qd6 Na3 b5")
+ ("C68u" "Spanish: Exchange, Bronstein, 6.Na3 Be6" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O Qd6 Na3 Be6")
+ ("C69a" "Spanish: Exchange, Gligoric Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O f6")
+ ("C69b" "Spanish: Exchange, Gligoric, 6.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O f6 d4")
+ ("C69b" "Spanish: Exchange, Gligoric, 6.d4 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O f6 d4 Bg4")
+ ("C69c" "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.c3" "e4 e5 Nf3 Nc6 Bb5 a6 
Bxc6 dxc6 O-O f6 d4 Bg4 c3")
+ ("C69d" "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.c3 Bd6" "e4 e5 Nf3 Nc6 Bb5 
a6 Bxc6 dxc6 O-O f6 d4 Bg4 c3 Bd6")
+ ("C69e" "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.dxe5" "e4 e5 Nf3 Nc6 Bb5 a6 
Bxc6 dxc6 O-O f6 d4 Bg4 dxe5")
+ ("C69f" "Spanish: Exchange, Gligoric, 6.d4 Bg4 Queenswap, 9.Rd3" "e4 e5 Nf3 
Nc6 Bb5 a6 Bxc6 dxc6 O-O f6 d4 Bg4 dxe5 Qxd1 Rxd1 fxe5 Rd3")
+ ("C69g" "Spanish: Exchange, Gligoric, 6.d4 Bg4 Queenswap, 9.Rd3 Bd6" "e4 e5 
Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O f6 d4 Bg4 dxe5 Qxd1 Rxd1 fxe5 Rd3 Bd6")
+ ("C69h" "Spanish: Exchange, Gligoric, 6.d4 exd4" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 
dxc6 O-O f6 d4 exd4")
+ ("C69h" "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Qxd4" "e4 e5 Nf3 Nc6 Bb5 a6 
Bxc6 dxc6 O-O f6 d4 exd4 Nxd4")
+ ("C69i" "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Nxd4" "e4 e5 Nf3 Nc6 Bb5 a6 
Bxc6 dxc6 O-O f6 d4 exd4 Qxd4")
+ ("C69i" "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Nxd4 Ne7" "e4 e5 Nf3 Nc6 
Bb5 a6 Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 Ne7")
+ ("C69j" "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Nxd4 c5" "e4 e5 Nf3 Nc6 Bb5 
a6 Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 c5")
+ ("C69j" "Spanish: Exchange, Gligoric, 8.Ne2" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O f6 d4 exd4 Nxd4 c5 Ne2")
+ ("C69k" "Spanish: Exchange, Gligoric, 8.Nb3" "e4 e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 
O-O f6 d4 exd4 Nxd4 c5 Nb3")
+ ("C69k" "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap" "e4 e5 Nf3 Nc6 Bb5 a6 
Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 c5 Nb3 Qxd1 Rxd1")
+ ("C69l" "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bd7" "e4 e5 Nf3 
Nc6 Bb5 a6 Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 c5 Nb3 Qxd1 Rxd1 Bd7")
+ ("C69m" "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bg4" "e4 e5 Nf3 
Nc6 Bb5 a6 Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 c5 Nb3 Qxd1 Rxd1 Bg4")
+ ("C69n" "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bg4 10.f3 Be6" "e4 
e5 Nf3 Nc6 Bb5 a6 Bxc6 dxc6 O-O f6 d4 exd4 Nxd4 c5 Nb3 Qxd1 Rxd1 Bg4 f3 Be6")
+ ("C70" "Spanish: 4.Ba4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4")
+ ("C70" "Spanish: Brentano Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 g5")
+ ("C70" "Spanish: 4.Ba4 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Be7")
+ ("C70" "Spanish: Fianchetto Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 g6")
+ ("C70" "Spanish: Alapin Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Bb4")
+ ("C70" "Spanish: Cozio Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nge7")
+ ("C70" "Spanish: Bird's Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nd4")
+ ("C70" "Spanish: Classical Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Bc5")
+ ("C70" "Spanish: Caro Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 b5")
+ ("C70" "Spanish: Graz Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 b5 Bb3 Bc5")
+ ("C70" "Spanish: Taimanov (Wing) Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 b5 Bb3 
Na5")
+ ("C70" "Spanish: Schliemann Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 f5")
+ ("C70" "Spanish: Schliemann Deferred, 5.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 f5 d4")
+ ("C70" "Spanish: Schliemann Deferred, 5.d4 exd4 6.e5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 f5 d4 exd4 e5")
+ ("C71" "Spanish: Modern Steinitz Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6")
+ ("C71" "Spanish: Modern Steinitz, Three Knights Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 d6 Nc3")
+ ("C71" "Spanish: Modern Steinitz, 5.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 d4")
+ ("C71" "Spanish: Modern Steinitz, Noah's Ark Trap" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 d4 b5 Bb3 Nxd4 Nxd4 exd4 Qxd4 c5")
+ ("C71" "Spanish: Modern Steinitz, Keres Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 c4")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 O-O")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O Ne7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 O-O 
Ne7")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 O-O 
Bg4")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O Bg4 6.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 O-O Bg4 h3")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 O-O 
Bd7")
+ ("C72" "Spanish: Modern Steinitz, 5.O-O Bd7 6.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 O-O Bd7 d4")
+ ("C73" "Spanish: Modern Steinitz, Richter Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 Bxc6+")
+ ("C73" "Spanish: Modern Steinitz, Richter Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 Bxc6+ bxc6")
+ ("C73" "Spanish: Modern Steinitz, Richter Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 Bxc6+ bxc6 d4")
+ ("C73" "Spanish: Modern Steinitz, Alapin Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 Bxc6+ bxc6 d4 f6")
+ ("C74" "Spanish: Modern Steinitz, 5.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 c3")
+ ("C74" "Spanish: Modern Steinitz, 5.c3 g6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 c3 
g6")
+ ("C74" "Spanish: Modern Steinitz, Siesta Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 c3 f5")
+ ("C74" "Spanish: Modern Steinitz, Siesta, 6.exf5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 c3 f5 exf5")
+ ("C74" "Spanish: Modern Steinitz, Siesta, Kopayev Variation" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 d6 c3 f5 exf5 Bxf5 O-O")
+ ("C74" "Spanish: Modern Steinitz, Siesta, Kopayev, Main Line" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 d6 c3 f5 exf5 Bxf5 O-O Bd3 Re1 Be7 Bc2 Bxc2 Qxc2")
+ ("C75" "Spanish: Modern Steinitz, 5.c3 Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 c3 
Bd7")
+ ("C75" "Spanish: Modern Steinitz, 5.c3 Bd7 6.O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 c3 Bd7 O-O")
+ ("C75" "Spanish: Modern Steinitz, 5.c3 Bd7 6.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 d6 
c3 Bd7 d4")
+ ("C75" "Spanish: Modern Steinitz, 5.c3 Bd7 6.d4 Nf6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 c3 Bd7 d4 Nf6")
+ ("C75" "Spanish: Modern Steinitz, Rubinstein Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 c3 Bd7 d4 Nge7")
+ ("C75" "Spanish: Modern Steinitz, Rubinstein, 7.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 c3 Bd7 d4 Nge7 Bb3")
+ ("C75" "Spanish: Modern Steinitz, Rubinstein, 7.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 c3 Bd7 d4 Nge7 Be3")
+ ("C76" "Spanish: Modern Steinitz, Bronstein Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 d6 c3 Bd7 d4 g6")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
d6 c3 Bd7 d4 g6 O-O")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O Bg7 8.Re1" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 d6 c3 Bd7 d4 g6 O-O Bg7 Re1")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O Bg7 8.dxe5" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 d6 c3 Bd7 d4 g6 O-O Bg7 dxe5")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O Bg7 8.dxe5 dxe5" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 d6 c3 Bd7 d4 g6 O-O Bg7 dxe5 dxe5")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O Bg7 8.dxe5 Nxe5" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 d6 c3 Bd7 d4 g6 O-O Bg7 dxe5 Nxe5")
+ ("C76" "Spanish: Modern Steinitz, Bronstein, 7.O-O Bg7 8.d5" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 d6 c3 Bd7 d4 g6 O-O Bg7 d5")
+ ("C77a" "Spanish: Morphy Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6")
+ ("C77b" "Spanish: Anderssen Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3")
+ ("C77c" "Spanish: Anderssen, 5...b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3 b5")
+ ("C77d" "Spanish: Anderssen, 5...d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3 d6")
+ ("C77e" "Spanish: Duras Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3 d6 c4")
+ ("C77f" "Spanish: Anderssen, 5...d6 6.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3 d6 
c3")
+ ("C77g" "Spanish: Anderssen, 5...d6 6.c3 g6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d3 
d6 c3 g6")
+ ("C77h" "Spanish: Four Knights (Tarrasch) Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 Nc3")
+ ("C77i" "Spanish: Exchange Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 Bxc6")
+ ("C77j" "Spanish: Centre Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4")
+ ("C77k" "Spanish: Centre Attack, 5...b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 b5")
+ ("C77l" "Spanish: Centre Attack, 5...Nxd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 
Nxd4")
+ ("C77m" "Spanish: Centre Attack, 5...Nxe4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 
Nxe4")
+ ("C77n" "Spanish: Centre Attack, 5...Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 
Be7")
+ ("C77o" "Spanish: Centre Attack, 5...exd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 d4 
exd4")
+ ("C77p" "Spanish: Wormald Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 Qe2")
+ ("C77q" "Spanish: Wormald Attack, 5...Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 Qe2 
Be7")
+ ("C77r" "Spanish: Wormald Attack, 5...b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 Qe2 
b5")
+ ("C77s" "Spanish: Wormald Attack, 5...b5 6.Bb3 Bc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 Qe2 b5 Bb3 Bc5")
+ ("C77t" "Spanish: Wormald Attack, 5...b5 6.Bb3 Bc5 7.c3" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 Qe2 b5 Bb3 Bc5 c3")
+ ("C77u" "Spanish: Wormald Attack, 5...b5 6.Bb3 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 Qe2 b5 Bb3 Be7")
+ ("C77u" "Spanish: Wormald Attack, Grünfeld Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 Qe2 b5 Bb3 Be7 d4 d6 c3 Bg4")
+ ("C78a" "Spanish: 5.O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O")
+ ("C78b" "Spanish: Möller Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Bc5")
+ ("C78c" "Spanish: Möller Defence, 6.Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Bc5 Nxe5")
+ ("C78d" "Spanish: Möller Defence, 6.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Bc5 
c3")
+ ("C78e" "Spanish: 5.O-O b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5")
+ ("C78e" "Spanish: 5.O-O b5 6.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3")
+ ("C78f" "Spanish: 5.O-O b5 6.Bb3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3 
d6")
+ ("C78f" "Spanish: Rabinovich Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 d6 Ng5 d5 exd5 Nd4 Re1 Bc5 Rxe5+ Kf8")
+ ("C78g" "Spanish: 5.O-O b5 6.Bb3 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Be7")
+ ("C78g" "Spanish: 5.O-O b5 6.Bb3 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Be7 d4")
+ ("C78h" "Spanish: 5.O-O b5 6.Bb3 Bc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Bc5")
+ ("C78i" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O b5 Bb3 Bc5 Nxe5")
+ ("C78i" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O b5 Bb3 Bc5 Nxe5 Nxe5 d4")
+ ("C78j" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
b5 Bb3 Bc5 c3")
+ ("C78j" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.c3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O b5 Bb3 Bc5 c3 d6")
+ ("C78k" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.c3 d6 8.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O b5 Bb3 Bc5 c3 d6 d4")
+ ("C78l" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
b5 Bb3 Bc5 a4")
+ ("C78m" "Spanish: 5.O-O b5 6.Bb3 Bc5 7.a4 Rb8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O b5 Bb3 Bc5 a4 Rb8")
+ ("C78n" "Spanish: Archangelsk Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Bb7")
+ ("C78o" "Spanish: Archangelsk, 7.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3 
Bb7 d4")
+ ("C78p" "Spanish: Archangelsk, 7.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3 
Bb7 d3")
+ ("C78q" "Spanish: Archangelsk, 7.d3 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Bb7 d3 Be7")
+ ("C78r" "Spanish: Archangelsk, 7.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 Bb3 
Bb7 c3")
+ ("C78s" "Spanish: Archangelsk, 7.c3 Nxe4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
b5 Bb3 Bb7 c3 Nxe4")
+ ("C78t" "Spanish: Archangelsk, 7.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O b5 
Bb3 Bb7 Re1")
+ ("C78t" "Spanish: Archangelsk, 7.Re1 Bc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
b5 Bb3 Bb7 Re1 Bc5")
+ ("C78u" "Spanish: Archangelsk, 7.Re1 Bc5 8.c3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O b5 Bb3 Bb7 Re1 Bc5 c3 d6")
+ ("C78u" "Spanish: Archangelsk, Main Line" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
b5 Bb3 Bb7 Re1 Bc5 c3 d6 d4 Bb6")
+ ("C78v" "Spanish: Archangelsk, Main Line, 10.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O b5 Bb3 Bb7 Re1 Bc5 c3 d6 d4 Bb6 a4")
+ ("C78w" "Spanish: Archangelsk, Main Line, 10.Bg5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O b5 Bb3 Bb7 Re1 Bc5 c3 d6 d4 Bb6 Bg5")
+ ("C78x" "Spanish: Archangelsk, Main Line, 10.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O b5 Bb3 Bb7 Re1 Bc5 c3 d6 d4 Bb6 Be3")
+ ("C79" "Spanish: Steinitz Deferred" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O d6")
+ ("C79" "Spanish: Steinitz Deferred, 6.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
d6 c3")
+ ("C79" "Spanish: Steinitz Deferred, 6.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
d6 Re1")
+ ("C79" "Spanish: Steinitz Deferred, Exchange" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O d6 Bxc6+")
+ ("C79" "Spanish: Steinitz Deferred, Lipnitsky Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O d6 Bxc6+ bxc6 d4 Bg4")
+ ("C79" "Spanish: Steinitz Deferred, Rubinstein Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O d6 Bxc6+ bxc6 d4 Nxe4")
+ ("C79" "Spanish: Steinitz Deferred, Boleslavsky Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O d6 Bxc6+ bxc6 d4 Nxe4 Re1 f5 dxe5 d5 Nc3")
+ ("C80a" "Spanish: Open" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4")
+ ("C80b" "Spanish: Open, Knorre Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 Nc3")
+ ("C80c" "Spanish: Open, Tartakower Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 Qe2")
+ ("C80d" "Spanish: Open, 6.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 Re1")
+ ("C80e" "Spanish: Open, 6.Re1 Nc5 7.Bxc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 Re1 Nc5 Bxc6")
+ ("C80f" "Spanish: Open, 6.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4")
+ ("C80g" "Spanish: Open, Riga Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 exd4")
+ ("C80h" "Spanish: Open, 6.d4 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 
Be7")
+ ("C80i" "Spanish: Open, 6.d4 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 
b5")
+ ("C80i" "Spanish: Open, Friess Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Nxe5")
+ ("C80i" "Spanish: Open, Richter Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 d5")
+ ("C80j" "Spanish: Open, 7.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 
Bb3")
+ ("C80k" "Spanish: Open, 7.Bb3 d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 
b5 Bb3 d5")
+ ("C80k" "Spanish: Open, 7.Bb3 d5 8.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 a4")
+ ("C80k" "Spanish: Open, Schlechter Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 a4 Nxd4")
+ ("C80k" "Spanish: Open, Schlecter, Berger Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 a4 Nxd4 Nxd4 exd4 Nc3")
+ ("C80k" "Spanish: Open, Harksen Gambit" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 c4")
+ ("C80l" "Spanish: Open, 8.Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 
Bb3 d5 Nxe5")
+ ("C80m" "Spanish: Open, 8.dxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 
Bb3 d5 dxe5")
+ ("C80m" "Spanish: Open, Zukertort Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Ne7")
+ ("C80n" "Spanish: Open, 8...Be6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 
Bb3 d5 dxe5 Be6")
+ ("C80n" "Spanish: Open, 8...Be6 9.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 dxe5 Be6 a4")
+ ("C80o" "Spanish: Open, 8...Be6 9.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 dxe5 Be6 Be3")
+ ("C80p" "Spanish: Open, Bernstein Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2")
+ ("C80q" "Spanish: Open, Bernstein, 9...Bc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Bc5")
+ ("C80r" "Spanish: Open, Bernstein, 9...Nc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Nc5")
+ ("C80s" "Spanish: Open, Bernstein, 9...Nc5 10.c3 d4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Nc5 c3 d4")
+ ("C80s" "Spanish: Open, Bernstein, 11.cxd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Nc5 c3 d4 cxd4")
+ ("C80t" "Spanish: Open, Bernstein, Karpov Gambit" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Nc5 c3 d4 Ng5")
+ ("C80u" "Spanish: Open, Bernstein, 11.Bxe6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Nbd2 Nc5 c3 d4 Bxe6")
+ ("C81" "Spanish: Open, Keres Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 dxe5 Be6 Qe2")
+ ("C81" "Spanish: Open, Keres Attack, 9...Bc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Bc5")
+ ("C81" "Spanish: Open, Keres Attack, 9...Be7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7")
+ ("C81" "Spanish: Open, Keres, Adam Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 c4")
+ ("C81" "Spanish: Open, Keres, 10.Rd1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1")
+ ("C81" "Spanish: Open, Keres, 10.Rd1 O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1 O-O")
+ ("C81" "Spanish: Open, Keres, 10.Rd1 O-O 11.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1 O-O c3")
+ ("C81" "Spanish: Open, Keres, 10.Rd1 O-O 11.c4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1 O-O c4")
+ ("C81" "Spanish: Open, Keres, 10.Rd1 O-O 11.c4 bxc4 12.Bxc4 Bc5" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1 O-O c4 bxc4 Bxc4 
Bc5")
+ ("C81" "Spanish: Open, Keres, Ekstrom Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 Qe2 Be7 Rd1 O-O c4 bxc4 Bxc4 Qd7")
+ ("C82a" "Spanish: Open, 9.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 
Bb3 d5 dxe5 Be6 c3")
+ ("C82b" "Spanish: Open, Berlin Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5")
+ ("C82b" "Spanish: Open, Berlin, 10.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2")
+ ("C82c" "Spanish: Open, Berlin, 10.Bc2 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4")
+ ("C82d" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Re1")
+ ("C82e" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Nbd2")
+ ("C82e" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Nbd2 Be7")
+ ("C82f" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Nbd2 Be7 Re1")
+ ("C82g" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1 Qd7" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Nbd2 Be7 Re1 
Qd7")
+ ("C82h" "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1 O-O" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Nc5 Bc2 Bg4 Nbd2 Be7 Re1 
O-O")
+ ("C82i" "Spanish: Open, Italian Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5")
+ ("C82j" "Spanish: Open, Motzko Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 
d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Qd3")
+ ("C82j" "Spanish: Open, Motzko Attack, Nenarokov Variation" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Qd3 Ne7")
+ ("C82k" "Spanish: Open, St. Petersburg Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2")
+ ("C82k" "Spanish: Open, St. Petersburg Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O")
+ ("C82l" "Spanish: Open, St. Petersburg, 11.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2")
+ ("C82m" "Spanish: Open, St. Petersburg, 11.Bc2 f5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 f5")
+ ("C82n" "Spanish: Open, Baguio Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Bf5")
+ ("C82n" "Spanish: Open, Baguio, 12.Nb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Bf5 Nb3")
+ ("C82o" "Spanish: Open, Dilworth Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2")
+ ("C82o" "Spanish: Open, Dilworth, 12.Rxf2 f6 13.exf6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2 Rxf2 f6 exf6")
+ ("C82p" "Spanish: Open, Dilworth, 14.Kxf2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2 Rxf2 f6 exf6 Bxf2+ Kxf2")
+ ("C82q" "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2 Rxf2 f6 exf6 
Bxf2+ Kxf2 Qxf6 Nf1")
+ ("C82r" "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Kg1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2 Rxf2 f6 exf6 
Bxf2+ Kxf2 Qxf6 Kg1")
+ ("C82s" "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Kg1 g5" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Bc5 Nbd2 O-O Bc2 Nxf2 Rxf2 f6 exf6 
Bxf2+ Kxf2 Qxf6 Kg1 g5")
+ ("C83" "Spanish: Open, Classical Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7")
+ ("C83" "Spanish: Open, Classical, 10.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Re1")
+ ("C83" "Spanish: Open, Classical, Tarrasch Trap" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Re1 O-O Nd4 Qd7 Nxe6 fxe6 Rxe4")
+ ("C83" "Spanish: Open, Classical, Breslau Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Re1 O-O Nd4 Nxe5")
+ ("C83" "Spanish: Open, Classical, 10.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Be3")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2 Nc5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 Nc5")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2 O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 O-O")
+ ("C83" "Spanish: Open, Classical, Malkin Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 O-O Qe2")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2 O-O 11.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 O-O Bc2")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2 O-O 11.Bc2 f5 12.exf6" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 O-O Bc2 f5 exf6")
+ ("C83" "Spanish: Open, Classical, 10.Nbd2 O-O 11.Bc2 f5 12.Nb3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Nxe4 d4 b5 Bb3 d5 dxe5 Be6 c3 Be7 Nbd2 O-O Bc2 f5 Nb3")
+ ("C84a" "Spanish: Closed System" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7")
+ ("C84b" "Spanish: Closed, 6.Nc3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Nc3")
+ ("C84c" "Spanish: Closed, 6.Nc3 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Nc3 
b5")
+ ("C84c" "Spanish: Closed, 6.Nc3 b5 7.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Nc3 b5 Bb3")
+ ("C84c" "Spanish: Closed, 6.Nc3 b5 7.Bb3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Nc3 b5 Bb3 d6")
+ ("C84d" "Spanish: Closed, 6.Nc3 b5 7.Bb3 d6 8.Nd5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Nc3 b5 Bb3 d6 Nd5")
+ ("C84e" "Spanish: Closed, 6.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d3")
+ ("C84f" "Spanish: Closed, 6.d3 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d3 
b5")
+ ("C84f" "Spanish: Closed, 6.d3 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d3 
b5 Bb3")
+ ("C84g" "Spanish: Closed, Centre Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 d4")
+ ("C84g" "Spanish: Closed, Centre Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 d4 exd4")
+ ("C84h" "Spanish: Closed, Centre Attack, 7.e5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 d4 exd4 e5")
+ ("C84h" "Spanish: Closed, Centre Attack, 7.e5 Ne4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 d4 exd4 e5 Ne4")
+ ("C84h" "Spanish: Closed, Centre Attack, Basque Gambit" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 c3")
+ ("C84h" "Spanish: Closed, Centre Attack, Basque Gambit Accepted" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 c3 dxc3")
+ ("C84h" "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.b4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 b4")
+ ("C84i" "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 Nxd4")
+ ("C84j" "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4 Nxd4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 Nxd4 Nxd4")
+ ("C84k" "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4 O-O" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 e5 Ne4 Nxd4 O-O")
+ ("C84l" "Spanish: Closed, Centre Attack, 7.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 d4 exd4 Re1")
+ ("C84m" "Spanish: Closed, Centre Attack, 7.Re1 b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 d4 exd4 Re1 b5")
+ ("C84n" "Spanish: Closed, Centre Attack, 7.Re1 b5 8.e5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 d4 exd4 Re1 b5 e5")
+ ("C84n" "Spanish: Closed, Centre Attack, 7.Re1 b5 8.e5 Nxe5" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 b5 e5 Nxe5")
+ ("C84n" "Spanish: Closed, Centre Attack, 7.Re1 b5 8.e5 Nxe5 9.Rxe5" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 b5 e5 Nxe5 Rxe5")
+ ("C84o" "Spanish: Closed, Centre Attack, 7.Re1 O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 d4 exd4 Re1 O-O")
+ ("C84p" "Spanish: Closed, Centre Attack, 7.Re1 O-O 8.e5 Ne8" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 O-O e5 Ne8")
+ ("C84p" "Spanish: Closed, Centre Attack, 7.Re1 O-O 8.e5 Ne8 9.c3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 O-O e5 Ne8 c3")
+ ("C84q" "Spanish: Closed, Centre Attack, 7.Re1 O-O 8.e5 Ne8 9.Bf4" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 d4 exd4 Re1 O-O e5 Ne8 Bf4")
+ ("C85a" "Spanish: Closed, Exchange" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Bxc6")
+ ("C85b" "Spanish: Closed, Exchange" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Bxc6 dxc6")
+ ("C85c" "Spanish: Closed, Exchange, 7.Qe2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Bxc6 dxc6 Qe2")
+ ("C85d" "Spanish: Closed, Exchange, 7.Nc3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Bxc6 dxc6 Nc3")
+ ("C85e" "Spanish: Closed, Exchange, 7.Nc3 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Bxc6 dxc6 Nc3 Bg4")
+ ("C85f" "Spanish: Closed, Exchange, 7.Qe1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Bxc6 dxc6 Qe1")
+ ("C85g" "Spanish: Closed, Exchange, 7.Qe1 c5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Bxc6 dxc6 Qe1 c5")
+ ("C85h" "Spanish: Closed, Exchange, 7.Qe1 Nd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Bxc6 dxc6 Qe1 Nd7")
+ ("C85i" "Spanish: Closed, Exchange, 7.Qe1 Nd7 8.b3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Bxc6 dxc6 Qe1 Nd7 b3")
+ ("C85j" "Spanish: Closed, Exchange, 7.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Bxc6 dxc6 d3")
+ ("C85k" "Spanish: Closed, Exchange, 7.d3 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Bxc6 dxc6 d3 Bg4")
+ ("C85l" "Spanish: Closed, Exchange, 7.d3 Nd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Bxc6 dxc6 d3 Nd7")
+ ("C85m" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2")
+ ("C85n" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2 O-O Nc4")
+ ("C85o" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2 O-O Nc4 f6")
+ ("C85p" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4" "e4 
e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2 O-O Nc4 f6 Nh4")
+ ("C85q" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4 Nc5" 
"e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2 O-O Nc4 f6 Nh4 Nc5")
+ ("C85r" "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4 Nc5 
11.Nf5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Bxc6 dxc6 d3 Nd7 Nbd2 O-O Nc4 f6 
Nh4 Nc5 Nf5")
+ ("C86a" "Spanish: Worrall Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Qe2")
+ ("C86a" "Spanish: Worrall Attack, 6...d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Qe2 d6")
+ ("C86b" "Spanish: Worrall Attack, 6...b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Qe2 b5")
+ ("C86b" "Spanish: Worrall Attack, 6...b5 7.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Qe2 b5 Bb3")
+ ("C86c" "Spanish: Worrall Attack, 7...d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Qe2 b5 Bb3 d6")
+ ("C86d" "Spanish: Worrall Attack, 7...d6 8.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Qe2 b5 Bb3 d6 c3")
+ ("C86e" "Spanish: Worrall Attack, 7...O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Qe2 b5 Bb3 O-O")
+ ("C86e" "Spanish: Worrall Attack, 7...O-O 8.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Qe2 b5 Bb3 O-O a4")
+ ("C86f" "Spanish: Worrall Attack, 7...O-O 8.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Qe2 b5 Bb3 O-O c3")
+ ("C86g" "Spanish: Worrall Attack, 7...O-O 8.c3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d6")
+ ("C86h" "Spanish: Worrall Attack, 7...O-O 8.c3 d6 9.d4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d6 d4")
+ ("C86i" "Spanish: Worrall Attack, 7...O-O 8.c3 d6 9.Rd1" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d6 Rd1")
+ ("C86j" "Spanish: Worrall Attack, 7...O-O 8.c3 d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d5")
+ ("C86j" "Spanish: Worrall Attack, 7...O-O 8.c3 d5 9.exd5" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d5 exd5")
+ ("C86k" "Spanish: Worrall Attack, 7...O-O 8.c3 d5 9.d3" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d5 d3")
+ ("C86l" "Spanish: Worrall Attack, 7...O-O 8.c3 d5 9.d3 Bb7" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Qe2 b5 Bb3 O-O c3 d5 d3 Bb7")
+ ("C87a" "Spanish: Closed, 6.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1")
+ ("C87b" "Spanish: Closed, Averbakh (Russian) Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 d6")
+ ("C87c" "Spanish: Closed, Averbakh, 7.Bxc6+" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 d6 Bxc6+")
+ ("C87c" "Spanish: Closed, Averbakh, 7.Bxc6+ bxc6 8.d4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 d6 Bxc6+ bxc6 d4")
+ ("C87d" "Spanish: Closed, Averbakh, 7.Bxc6+ bxc6 8.d4 exd4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 d6 Bxc6+ bxc6 d4 exd4")
+ ("C87d" "Spanish: Closed, Averbakh, 7.Bxc6+ bxc6 8.d4 exd4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 d6 Bxc6+ bxc6 d4 exd4 Nxd4")
+ ("C87e" "Spanish: Closed, Averbakh, 7.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 d6 c3")
+ ("C87f" "Spanish: Closed, Averbakh, 7.c3 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 d6 c3 Bg4")
+ ("C87g" "Spanish: Closed, Averbakh, 7.c3 Bg4 8.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 d6 c3 Bg4 h3")
+ ("C87h" "Spanish: Closed, Averbakh, 7.c3 Bg4 8.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 d6 c3 Bg4 d3")
+ ("C87i" "Spanish: Closed, Averbakh, 7.c3 O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 d6 c3 O-O")
+ ("C87j" "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 d6 c3 O-O d4")
+ ("C87k" "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 d6 c3 O-O d4 Bd7")
+ ("C87l" "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7 9.Nbd2" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 d6 c3 O-O d4 Bd7 Nbd2")
+ ("C87m" "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7 9.Nbd2 Re8" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 d6 c3 O-O d4 Bd7 Nbd2 Re8")
+ ("C87n" "Spanish: Closed, Averbakh, 7.c3 O-O 8.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 d6 c3 O-O h3")
+ ("C87o" "Spanish: Closed, Averbakh, 7.c3 O-O 8.h3 Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 d6 c3 O-O h3 Bd7")
+ ("C88a" "Spanish: Closed, 6...b5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5")
+ ("C88a" "Spanish: Closed, 6...b5 7.Bb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3")
+ ("C88b" "Spanish: Closed, Trajkovic Counterattack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 Bb7")
+ ("C88c" "Spanish: Closed 7...d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 d6")
+ ("C88c" "Spanish: Closed, 7...d6 8.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 d6 d4")
+ ("C88c" "Spanish: Closed, Noah's Ark Trap" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 d6 d4 Nxd4 Nxd4 exd4 Qxd4 c5")
+ ("C88d" "Spanish: Closed 7...d6 8.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 d6 c3")
+ ("C88d" "Spanish: Closed 7...d6 8.c3 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 d6 c3 Bg4")
+ ("C88e" "Spanish: Closed 7...d6 8.c3 Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 d6 c3 Na5")
+ ("C88e" "Spanish: Closed, Leonhardt Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 d6 c3 Na5 Bc2 c5 d4 Qc7 h3 Nc6 d5 Nb8 Nbd2 g5")
+ ("C88e" "Spanish: Closed, Balla Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 d6 c3 Na5 Bc2 c5 d4 Qc7 a4")
+ ("C88f" "Spanish: Closed, 7...O-O" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O")
+ ("C88g" "Spanish: Closed, 8.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 O-O d3")
+ ("C88g" "Spanish: Closed, 8.d3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O d3 d6")
+ ("C88h" "Spanish: Closed, 8.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 O-O h3")
+ ("C88i" "Spanish: Closed, 8.h3 Bb7 9.d3 d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O h3 Bb7 d3 d6")
+ ("C88j" "Spanish: Closed, Anti-Marshall 8.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O a4")
+ ("C88k" "Spanish: Closed, Anti-Marshall 8.a4 b4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 b4")
+ ("C88l" "Spanish: Closed, Anti-Marshall 8.a4 Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 Bb7")
+ ("C88m" "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 Bb7 d3")
+ ("C88n" "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 Bb7 d3 d6")
+ ("C88o" "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6 10.Nc3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 Bb7 d3 d6 Nc3")
+ ("C88p" "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6 10.c3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O a4 Bb7 d3 d6 c3")
+ ("C88q" "Spanish: Closed, 8.c3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 O-O c3")
+ ("C89a" "Spanish: Marshall Counterattack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d5")
+ ("C89b" "Spanish: Marshall, 9.exd5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O c3 d5 exd5")
+ ("C89b" "Spanish: Marshall, Herman Steiner Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 e4")
+ ("C89c" "Spanish: Marshall, 9.exd5 Nxd5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5")
+ ("C89d" "Spanish: Marshall, 9.exd5 Nxd5 10.Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5")
+ ("C89d" "Spanish: Marshall, 9.exd5 Nxd5 10.Nxe5 Nxe5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5")
+ ("C89d" "Spanish: Marshall, 11.Rxe5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5")
+ ("C89e" "Spanish: Marshall, 11.Rxe5 Nf6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 Nf6")
+ ("C89f" "Spanish: Marshall, 11.Rxe5 c6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6")
+ ("C89g" "Spanish: Marshall, 12.Bxd5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 Bxd5")
+ ("C89h" "Spanish: Marshall, Kevitz Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 Bxd5 cxd5 d4 Bd6 Re3")
+ ("C89i" "Spanish: Marshall, 12.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d3")
+ ("C89i" "Spanish: Marshall, 12.d3 Bd6 13.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d3 Bd6 Re1")
+ ("C89j" "Spanish: Marshall, 12.d3 Bd6 13.Re1 Qh4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d3 Bd6 Re1 Qh4")
+ ("C89k" "Spanish: Marshall, Main Line (12.d4)" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4")
+ ("C89k" "Spanish: Marshall, Main Line (12.d4 Bd6)" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6")
+ ("C89l" "Spanish: Marshall, Main Line, 13.Re2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re2")
+ ("C89m" "Spanish: Marshall, Main Line, 13.Re1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1")
+ ("C89m" "Spanish: Marshall, Main Line, 13.Re1 Qh4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 Qh4")
+ ("C89m" "Spanish: Marshall, Main Line, 13.Re1 Qh4 14.g3" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3")
+ ("C89n" "Spanish: Marshall, Main Line, 14.g3 Qh3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 Qh4 g3 
Qh3")
+ ("C89o" "Spanish: Marshall, Main Line, 15.Re4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 Qh4 g3 Qh3 
Re4")
+ ("C89p" "Spanish: Marshall, Main Line, 15.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 Qh4 g3 Qh3 
Be3")
+ ("C89p" "Spanish: Marshall, Main Line, 15.Be3 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 Qh4 g3 
Qh3 Be3 Bg4")
+ ("C89p" "Spanish: Marshall, Main Line, 15.Be3 Bg4 16.Qd3" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3")
+ ("C89q" "Spanish: Marshall, Main Line, 15.Be3 Bg4 16.Qd3 Rae8" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 
Re1 Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8")
+ ("C89q" "Spanish: Marshall, Main Line, 16.Qd3 Rae8 17.Nd2" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2")
+ ("C89r" "Spanish: Marshall, Main Line, Pawn Push Variation" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 
Re1 Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 f5")
+ ("C89s" "Spanish: Marshall, Main Line, Classical Variation" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 
Re1 Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6")
+ ("C89t" "Spanish: Marshall, Main Line, Classical, 18.c4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 c4")
+ ("C89u" "Spanish: Marshall, Main Line, Classical, 18.Bxd5" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 Bxd5")
+ ("C89v" "Spanish: Marshall, Main Line, Classical, 18.Qf1" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 Qf1")
+ ("C89w" "Spanish: Marshall, Main Line, Classical, 18.a4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 Re1 
Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 a4")
+ ("C89x" "Spanish: Marshall, Main Line, Classical, Spassky Variation" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 
d4 Bd6 Re1 Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 a4 Qh5")
+ ("C89y" "Spanish: Marshall, Main Line, Classical, 18.a4 f5" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d5 exd5 Nxd5 Nxe5 Nxe5 Rxe5 c6 d4 Bd6 
Re1 Qh4 g3 Qh3 Be3 Bg4 Qd3 Rae8 Nd2 Re6 a4 f5")
+ ("C90a" "Spanish: Closed, 8...d6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O c3 d6")
+ ("C90b" "Spanish: Closed, Lutikov Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 Bc2")
+ ("C90c" "Spanish: Closed, Suetin Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 a3")
+ ("C90d" "Spanish: Closed, 8...d6 9.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 
Re1 b5 Bb3 O-O c3 d6 a4")
+ ("C90d" "Spanish: Closed, 8...d6 9.a4 Bg4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 a4 Bg4")
+ ("C90e" "Spanish: Closed, Pilnik Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3")
+ ("C90f" "Spanish: Closed, Pilnik, 9...h6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 h6")
+ ("C90g" "Spanish: Closed, Pilnik, 9...Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5")
+ ("C90g" "Spanish: Closed, Pilnik, 9...Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2")
+ ("C90g" "Spanish: Closed, Pilnik, 9...Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5")
+ ("C90h" "Spanish: Closed, Pilnik, 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2")
+ ("C90i" "Spanish: Closed, Pilnik, 11.Nbd2 Qc7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Qc7")
+ ("C90j" "Spanish: Closed, Pilnik, 11.Nbd2 Nc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Nc6")
+ ("C90k" "Spanish: Closed, Pilnik, 11.Nbd2 Re8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Re8")
+ ("C90k" "Spanish: Closed, Pilnik, 12.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Re8 Nf1")
+ ("C90l" "Spanish: Closed, Pilnik, 12.Nf1 Nc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Re8 Nf1 Nc6")
+ ("C90m" "Spanish: Closed, Pilnik, 12.Nf1 Bf8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Re8 Nf1 Bf8")
+ ("C90n" "Spanish: Closed, Pilnik, 12.Nf1 h6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d3 Na5 Bc2 c5 Nbd2 Re8 Nf1 h6")
+ ("C91a" "Spanish: Closed, 9.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 O-O c3 d6 d4")
+ ("C91b" "Spanish: Closed, Bogoljubow Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4")
+ ("C91c" "Spanish: Closed, Bogoljubow, 10.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 Be3")
+ ("C91d" "Spanish: Closed, Bogoljubow, 10.Be3 exd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 Be3 exd4")
+ ("C91e" "Spanish: Closed, Bogoljubow, 10.d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5")
+ ("C91f" "Spanish: Closed, Bogoljubow, 10.d5 Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5 Na5")
+ ("C91f" "Spanish: Closed, Bogoljubow, 10.d5 Na5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5 Na5 Bc2")
+ ("C91g" "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 Qc8" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5 Na5 Bc2 Qc8")
+ ("C91h" "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 c6" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5 Na5 Bc2 c6")
+ ("C91i" "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 c6 12.h3 Bc8" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 d4 Bg4 d5 Na5 Bc2 c6 h3 
Bc8")
+ ("C92a" "Spanish: Closed, 9.h3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 
Bb3 O-O c3 d6 h3")
+ ("C92b" "Spanish: Closed, Keres Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 a5")
+ ("C92c" "Spanish: Closed, Kholmov Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Be6")
+ ("C92d" "Spanish: Closed, Kholmov, 11.Qxb3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Be6 d4 Bxb3 Qxb3")
+ ("C92e" "Spanish: Closed, Karpov Variation" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nd7")
+ ("C92f" "Spanish: Closed, Karpov Variation, 10.d4 Bf6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nd7 d4 Bf6")
+ ("C92g" "Spanish: Closed, Karpov Variation, 10.d4 Bf6 11.a4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nd7 d4 Bf6 a4")
+ ("C92h" "Spanish: Closed, Karpov Variation, 10.d4 Bf6 11.a4 Bb7 12.Na3" "e4 
e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nd7 d4 Bf6 a4 Bb7 
Na3")
+ ("C92i" "Spanish: Closed, Zaitsev (Flohr) Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7")
+ ("C92j" "Spanish: Closed, Zaitsev, 10.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4")
+ ("C92k" "Spanish: Closed, Zaitsev, 10.d4 Re8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8")
+ ("C92l" "Spanish: Closed, Zaitsev, 11.Ng5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Ng5")
+ ("C92m" "Spanish: Closed, Zaitsev, 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2")
+ ("C92n" "Spanish: Closed, Zaitsev, 11.Nbd2 Bf8 12.d5 Nb8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 d5 Nb8")
+ ("C92o" "Spanish: Closed, Zaitsev, 12.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 Bc2")
+ ("C92p" "Spanish: Closed, Zaitsev, 12.a3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 a3")
+ ("C92q" "Spanish: Closed, Zaitsev, 12.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 a4")
+ ("C92r" "Spanish: Closed, Zaitsev, 12.a4 h6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 a4 h6")
+ ("C92s" "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 a4 h6 Bc2")
+ ("C92t" "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2 exd4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 Nbd2 Bf8 a4 h6 Bc2 exd4")
+ ("C92u" "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2 exd4 14.cxd4 Nb4 15.Bb1 
c5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Bb7 d4 Re8 
Nbd2 Bf8 a4 h6 Bc2 exd4 cxd4 Nb4 Bb1 c5")
+ ("C93" "Spanish: Closed, Smyslov Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6")
+ ("C93" "Spanish: Closed, Smyslov, 10.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d3")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4 Re8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4 Re8 11.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 a4")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4 Re8 11.Be3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Be3")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4 Re8 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2")
+ ("C93" "Spanish: Closed, Smyslov, 10.d4 Re8 11.Nbd2 Bf8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8")
+ ("C93" "Spanish: Closed, Smyslov, 12.a3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 a3")
+ ("C93" "Spanish: Closed, Smyslov, 12.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Bc2")
+ ("C93" "Spanish: Closed, Smyslov, 12.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Nf1")
+ ("C93" "Spanish: Closed, Smyslov, 12.Nf1 Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Nf1 Bb7")
+ ("C93" "Spanish: Closed, Smyslov, 12.Nf1 Bb7 13.Ng3 Na5 14.Bc2 Nc4" "e4 e5 
Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Nf1 
Bb7 Ng3 Na5 Bc2 Nc4")
+ ("C93" "Spanish: Closed, Smyslov, 12.Nf1 Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Nf1 Bd7")
+ ("C93" "Spanish: Closed, Smyslov, 12.Nf1 Bd7 13.Ng3 Na5 14.Bc2 c5" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 h6 d4 Re8 Nbd2 Bf8 Nf1 Bd7 
Ng3 Na5 Bc2 c5")
+ ("C94a" "Spanish: Closed, Breyer Defence" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8")
+ ("C94b" "Spanish: Closed, Breyer, Matulovic Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 a4")
+ ("C94c" "Spanish: Closed, Breyer, 10.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d3")
+ ("C94d" "Spanish: Closed, Breyer, 10.d3 Nbd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d3 Nbd7")
+ ("C94e" "Spanish: Closed, Breyer, 10.d3 Nbd7 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d3 Nbd7 Nbd2")
+ ("C94f" "Spanish: Closed, Breyer, 10.d3 Nbd7 11.Nbd2 Bb7" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d3 Nbd7 Nbd2 Bb7")
+ ("C95a" "Spanish: Closed, Breyer, 10.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4")
+ ("C95a" "Spanish: Closed, Breyer, 10.d4 Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Bb7")
+ ("C95b" "Spanish: Closed, Breyer, 10.d4 Nbd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7")
+ ("C95c" "Spanish: Closed, Breyer, Simagin Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nh4")
+ ("C95d" "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Bg5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Bg5")
+ ("C95e" "Spanish: Closed, Breyer, Arseniev Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 c4")
+ ("C95e" "Spanish: Closed, Breyer, Arseniev, 11...c6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 c4 c6")
+ ("C95f" "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2")
+ ("C95f" "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2 Bb7" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7")
+ ("C95f" "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2 Bb7 12.a4" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 a4")
+ ("C95g" "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2 Bb7 12.Bc2" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2")
+ ("C95g" "Spanish: Closed, Breyer, Gligoric Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 c5")
+ ("C95h" "Spanish: Closed, Breyer, Main Line" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8")
+ ("C95i" "Spanish: Closed, Breyer, Main Line, 13.b4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 b4")
+ ("C95j" "Spanish: Closed, Breyer, Main Line, 13.a4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 a4")
+ ("C95k" "Spanish: Closed, Breyer, Main Line, 13.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1")
+ ("C95k" "Spanish: Closed, Breyer, Main Line, 13.Nf1 Bf8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 
Bf8")
+ ("C95k" "Spanish: Closed, Breyer, Main Line, 13.Nf1 Bf8 14.Ng3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 
Nf1 Bf8 Ng3")
+ ("C95k" "Spanish: Closed, Breyer, Main Line, 14.Ng3 c5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 Bf8 
Ng3 c5")
+ ("C95l" "Spanish: Closed, Breyer, Main Line, 14.Ng3 g6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 Bf8 
Ng3 g6")
+ ("C95l" "Spanish: Closed, Breyer, Main Line, 14.Ng3 g6 15.b3" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 
Bf8 Ng3 g6 b3")
+ ("C95m" "Spanish: Closed, Breyer, Main Line, 14.Ng3 g6 15.a4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 
Bf8 Ng3 g6 a4")
+ ("C95n" "Spanish: Closed, Breyer, Main Line, 15.a4 c5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 Nf1 Bf8 
Ng3 g6 a4 c5")
+ ("C95o" "Spanish: Closed, Breyer, Main Line, 15.a4 c5 16.d5 c4" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Nb8 d4 Nbd7 Nbd2 Bb7 Bc2 Re8 
Nf1 Bf8 Ng3 g6 a4 c5 d5 c4")
+ ("C96a" "Spanish: Closed, Chigorin" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 
b5 Bb3 O-O c3 d6 h3 Na5")
+ ("C96b" "Spanish: Closed, Chigorin, 10.Bc2" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2")
+ ("C96c" "Spanish: Closed, Chigorin, 10...c6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c6")
+ ("C96d" "Spanish: Closed, Chigorin, Rossolimo Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c6 d4 Qc7")
+ ("C96e" "Spanish: Closed, Chigorin, 10...Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 Bb7")
+ ("C96f" "Spanish: Closed, Chigorin, 10...c5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5")
+ ("C96g" "Spanish: Closed, Chigorin, 11.d3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d3")
+ ("C96h" "Spanish: Closed, Chigorin, 11.d3 Nc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d3 Nc6")
+ ("C96i" "Spanish: Closed, Chigorin, 11.d4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O 
Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4")
+ ("C96j" "Spanish: Closed, Chigorin, 11.d4 cxd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 cxd4")
+ ("C96k" "Spanish: Closed, Chigorin, 11.d4 Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Bb7")
+ ("C96l" "Spanish: Closed, Chigorin, 11.d4 Bb7 12.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Bb7 Nbd2")
+ ("C96m" "Spanish: Closed, Chigorin, Borisenko Variation" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Nc6")
+ ("C96n" "Spanish: Closed, Chigorin, Keres Variation" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Nd7")
+ ("C96o" "Spanish: Closed, Chigorin, Keres, 11.Nbd2 cxd4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Nd7 Nbd2 cxd4")
+ ("C97a" "Spanish: Closed, Chigorin, 11.d4 Qc7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7")
+ ("C97b" "Spanish: Closed, Chigorin, 11.d4 Qc7 12.d5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 d5")
+ ("C97c" "Spanish: Closed, Chigorin, 11.d4 Qc7 12.d5 c4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 d5 c4")
+ ("C97d" "Spanish: Closed, Chigorin, 11.d4 Qc7 12.Nbd2" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2")
+ ("C97e" "Spanish: Closed, Chigorin, 12...Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bb7")
+ ("C97f" "Spanish: Closed, Chigorin, 12...Re8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Re8")
+ ("C97g" "Spanish: Closed, Chigorin, 12...Rd8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Rd8")
+ ("C97h" "Spanish: Closed, Chigorin, 12...Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bd7")
+ ("C97i" "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bd7 Nf1")
+ ("C97j" "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1 Nc4" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bd7 Nf1 Nc4")
+ ("C97k" "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1 Rfe8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bd7 Nf1 Rfe8")
+ ("C97l" "Spanish: Closed, Chigorin, Yugoslav System" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Bd7 Nf1 Rfe8 Ne3 
g6")
+ ("C98a" "Spanish: Closed, Chigorin, 12...Nc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6")
+ ("C98b" "Spanish: Closed, Chigorin, Rauzer Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 dxc5")
+ ("C98b" "Spanish: Closed, Chigorin, Rauzer Attack" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 dxc5 dxc5")
+ ("C98c" "Spanish: Closed, Chigorin, Rauzer, 14.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 dxc5 dxc5 Nf1")
+ ("C98d" "Spanish: Closed, Chigorin, Rauzer, 14.Nf1 Be6" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 dxc5 dxc5 
Nf1 Be6")
+ ("C98e" "Spanish: Closed, Chigorin, 12...Nc6 13.d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 d5")
+ ("C98f" "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Na5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 d5 Na5")
+ ("C98g" "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 d5 Nd8")
+ ("C98h" "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8 14.Nf1" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 d5 
Nd8 Nf1")
+ ("C98i" "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8 14.a4" "e4 e5 Nf3 Nc6 
Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 Nc6 d5 
Nd8 a4")
+ ("C99a" "Spanish: Closed, Chigorin, 12...cxd4" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4")
+ ("C99a" "Spanish: Closed, Chigorin, 12...cxd4 13.cxd4" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4")
+ ("C99b" "Spanish: Closed, Chigorin, 13...Rd8" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Rd8")
+ ("C99c" "Spanish: Closed, Chigorin, 13...Bd7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bd7")
+ ("C99c" "Spanish: Closed, Chigorin, 13...Bd7 14.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bd7 
Nf1")
+ ("C99d" "Spanish: Closed, Chigorin, 13...Bd7 14.Nf1 Rac8 15.Ne3" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 
cxd4 Bd7 Nf1 Rac8 Ne3")
+ ("C99e" "Spanish: Closed, Chigorin, 13...Bb7" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bb7")
+ ("C99e" "Spanish: Closed, Chigorin, 13...Bb7 14.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bb7 
Nf1")
+ ("C99e" "Spanish: Closed, Chigorin, 13...Bb7 14.Nf1 Rac8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bb7 
Nf1 Rac8")
+ ("C99f" "Spanish: Closed, Chigorin, 13...Bb7 14.Nf1 Rac8 15.Re2" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 
cxd4 Bb7 Nf1 Rac8 Re2")
+ ("C99g" "Spanish: Closed, Chigorin, 13...Bb7 14.d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bb7 d5")
+ ("C99h" "Spanish: Closed, Chigorin, 13...Bb7 14.d5 Rac8" "e4 e5 Nf3 Nc6 Bb5 
a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Bb7 
d5 Rac8")
+ ("C99i" "Spanish: Closed, Chigorin, 13...Nc6" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 
O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6")
+ ("C99i" "Spanish: Closed, Chigorin, 13...Nc6 14.a3" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6 a3")
+ ("C99j" "Spanish: Closed, Chigorin, 13...Nc6 14.Nf1" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6 
Nf1")
+ ("C99k" "Spanish: Closed, Chigorin, 13...Nc6 14.d5" "e4 e5 Nf3 Nc6 Bb5 a6 Ba4 
Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6 d5")
+ ("C99l" "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6 
Nb3")
+ ("C99l" "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5" "e4 e5 Nf3 Nc6 Bb5 a6 
Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 cxd4 Nc6 
Nb3 a5")
+ ("C99m" "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4" "e4 e5 Nf3 
Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 Nbd2 cxd4 
cxd4 Nc6 Nb3 a5 Be3 a4")
+ ("C99n" "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4 16.Nbd2 Nb4" 
"e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 
Nbd2 cxd4 cxd4 Nc6 Nb3 a5 Be3 a4 Nbd2 Nb4")
+ ("C99o" "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4 16.Nbd2 Bd7" 
"e4 e5 Nf3 Nc6 Bb5 a6 Ba4 Nf6 O-O Be7 Re1 b5 Bb3 O-O c3 d6 h3 Na5 Bc2 c5 d4 Qc7 
Nbd2 cxd4 cxd4 Nc6 Nb3 a5 Be3 a4 Nbd2 Bd7")
+ ("D00a" "Queen's Pawn Game" "d4 d5")
+ ("D00a" "Queen's Pawn: 2.f4" "d4 d5 f4")
+ ("D00a" "Queen's Pawn: 2.g3" "d4 d5 g3")
+ ("D00b" "Queen's Pawn: 2.c3" "d4 d5 c3")
+ ("D00b" "Queen's Pawn: 2.c3 Nf6" "d4 d5 c3 Nf6")
+ ("D00b" "Queen's Pawn: 2.c3 Nf6 3.Bf4" "d4 d5 c3 Nf6 Bf4")
+ ("D00b" "Queen's Pawn: 2.c3 Nf6 3.Bg5" "d4 d5 c3 Nf6 Bg5")
+ ("D00c" "Queen's Pawn: Mason Variation" "d4 d5 Bf4")
+ ("D00c" "Queen's Pawn, Mason, Steinitz Countergambit" "d4 d5 Bf4 c5")
+ ("D00d" "Queen's Pawn: 2.e3" "d4 d5 e3")
+ ("D00d" "Queen's Pawn: 2.e3 Nf6" "d4 d5 e3 Nf6")
+ ("D00e" "Queen's Pawn: Stonewall Attack" "d4 d5 e3 Nf6 Bd3")
+ ("D00f" "Hodgson Attack (Trompowsky vs. 1...d5)" "d4 d5 Bg5")
+ ("D00f" "Hodgson Attack: Welling Variation" "d4 d5 Bg5 Bg4")
+ ("D00f" "Hodgson Attack: 2...f6" "d4 d5 Bg5 f6")
+ ("D00f" "Hodgson Attack: 2...g6" "d4 d5 Bg5 g6")
+ ("D00g" "Hodgson Attack: 2...c6" "d4 d5 Bg5 c6")
+ ("D00h" "Hodgson Attack, 2...h6" "d4 d5 Bg5 h6")
+ ("D00h" "Hodgson Attack: 2...h6 3.Bh4 c6" "d4 d5 Bg5 h6 Bh4 c6")
+ ("D00h" "Hodgson Attack: 2...h6 3.Bh4 c6 4.e3" "d4 d5 Bg5 h6 Bh4 c6 e3")
+ ("D00h" "Hodgson Attack: 2...h6 3.Bh4 c6 4.e3 Qb6" "d4 d5 Bg5 h6 Bh4 c6 e3 
Qb6")
+ ("D00i" "Trompowsky: 2...d5" "d4 Nf6 Bg5 d5")
+ ("D00i" "Trompowsky: 2...d5 3.Nd2" "d4 Nf6 Bg5 d5 Nd2")
+ ("D00i" "Trompowsky: 2...d5 3.e3" "d4 Nf6 Bg5 d5 e3")
+ ("D00i" "Trompowsky: 2...d5 3.e3 e6" "d4 Nf6 Bg5 d5 e3 e6")
+ ("D00j" "Trompowsky: 2...d5 3.Bxf6" "d4 Nf6 Bg5 d5 Bxf6")
+ ("D00j" "Trompowsky: 2...d5 3.Bxf6 gxf6" "d4 Nf6 Bg5 d5 Bxf6 gxf6")
+ ("D00j" "Trompowsky: 2...d5 3.Bxf6 gxf6 4.e3" "d4 Nf6 Bg5 d5 Bxf6 gxf6 e3")
+ ("D00j" "Trompowsky: 2...d5 3.Bxf6 gxf6 4.e3 c5" "d4 Nf6 Bg5 d5 Bxf6 gxf6 e3 
c5")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6" "d4 Nf6 Bg5 d5 Bxf6 exf6")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6 4.e3" "d4 Nf6 Bg5 d5 Bxf6 exf6 e3")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6 4.e3 Bf5" "d4 Nf6 Bg5 d5 Bxf6 exf6 e3 
Bf5")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6 4.e3 c6" "d4 Nf6 Bg5 d5 Bxf6 exf6 e3 
c6")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6 4.e3 Be6" "d4 Nf6 Bg5 d5 Bxf6 exf6 e3 
Be6")
+ ("D00k" "Trompowsky: 2...d5 3.Bxf6 exf6 4.e3 Bd6" "d4 Nf6 Bg5 d5 Bxf6 exf6 e3 
Bd6")
+ ("D00l" "Blackmar-Diemer Gambit (BDG): 2.e4" "d4 d5 e4")
+ ("D00l" "Blackmar-Diemer: Beyer Countergambit" "d4 d5 e4 e5")
+ ("D00l" "Blackmar-Diemer Gambit (BDG): 2.e4 dxe4" "d4 d5 e4 dxe4")
+ ("D00l" "Blackmar-Diemer: Gedult Gambit" "d4 d5 e4 dxe4 f3")
+ ("D00l" "Blackmar-Diemer: Fritz Attack" "d4 d5 e4 dxe4 Bc4")
+ ("D00l" "Blackmar-Diemer: 2.e4 dxe4 3.Nc3" "d4 d5 e4 dxe4 Nc3")
+ ("D00l" "Blackmar-Diemer: Grosshans Defence" "d4 d5 e4 dxe4 Nc3 Bd7")
+ ("D00l" "Blackmar-Diemer: Zeller Defence" "d4 d5 e4 dxe4 Nc3 Bf5")
+ ("D00l" "Blackmar-Diemer: Pohmlann Defence" "d4 d5 e4 dxe4 Nc3 f5")
+ ("D00m" "Blackmar-Diemer: Lemberger Countergambit" "d4 d5 e4 dxe4 Nc3 e5")
+ ("D00m" "Blackmar-Diemer: Lemberger Countergambit, Rassmussen Attack" "d4 d5 
e4 dxe4 Nc3 e5 Nge2")
+ ("D00m" "Blackmar-Diemer: Lemberger Countergambit, Sneider Attack" "d4 d5 e4 
dxe4 Nc3 e5 Qh5")
+ ("D00n" "Queen's Pawn: Veresov Attack" "d4 d5 Nc3")
+ ("D00n" "Queen's Pawn: Veresov Attack" "d4 d5 Nc3 Bf5")
+ ("D00n" "Queen's Pawn: Veresov Attack" "d4 d5 Nc3 Nf6")
+ ("D00o" "Queen's Pawn: Veresov, 3.Bf4" "d4 d5 Nc3 Nf6 Bf4")
+ ("D00p" "Queen's Pawn: Veresov, 3.Nf3" "d4 d5 Nc3 Nf6 Nf3")
+ ("D00p" "Queen's Pawn: Veresov, 3.Nf3 g6" "d4 d5 Nc3 Nf6 Nf3 g6")
+ ("D00q" "Queen's Pawn: Anti-King's Indian" "d4 d5 Nc3 Nf6 Nf3 g6 Bf4")
+ ("D00r" "Queen's Pawn: Anti-King's Indian, Main Line" "d4 d5 Nc3 Nf6 Nf3 g6 
Bf4 Bg7 e3 O-O Be2")
+ ("D00s" "Blackmar-Diemer Gambit (BDG)" "d4 d5 Nc3 Nf6 e4")
+ ("D00s" "Blackmar-Diemer: Hubsch Gambit" "d4 d5 Nc3 Nf6 e4 Nxe4")
+ ("D00t" "Blackmar-Diemer: 3...dxe4" "d4 d5 Nc3 Nf6 e4 dxe4")
+ ("D00t" "Blackmar-Diemer: von Popiel Attack" "d4 d5 Nc3 Nf6 e4 dxe4 Bg5")
+ ("D00u" "Blackmar-Diemer: 4.f3" "d4 d5 Nc3 Nf6 e4 dxe4 f3")
+ ("D00u" "Blackmar-Diemer: O'Kelly Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 c6")
+ ("D00u" "Blackmar-Diemer: Langeheinecke Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 
e3")
+ ("D00u" "Blackmar-Diemer: Elbert Countergambit" "d4 d5 Nc3 Nf6 e4 dxe4 f3 e5")
+ ("D00u" "Blackmar-Diemer: Weinspach Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 e6")
+ ("D00u" "Blackmar-Diemer: Lamb Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 Nc6")
+ ("D00u" "Blackmar-Diemer: Vienna Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 Bf5")
+ ("D00v" "Blackmar-Diemer: Accepted" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3")
+ ("D00v" "Blackmar-Diemer: Ryder Gambit" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 Qxf3")
+ ("D00w" "Blackmar-Diemer: 4.f3 exf3 5.Nxf3" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 
Nxf3")
+ ("D00w" "Blackmar-Diemer: Gunderam Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 
Nxf3 Bf5")
+ ("D00w" "Blackmar-Diemer: Tartakower Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 
Nxf3 Bg4")
+ ("D00w" "Blackmar-Diemer: Ziegler Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 
Nxf3 c6")
+ ("D00x" "Blackmar-Diemer: Euwe Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 Nxf3 
e6")
+ ("D00y" "Blackmar-Diemer: Bogoljubow Defence" "d4 d5 Nc3 Nf6 e4 dxe4 f3 exf3 
Nxf3 g6")
+ ("D01a" "Richter-Veresov Attack" "d4 d5 Nc3 Nf6 Bg5")
+ ("D01b" "Richter-Veresov: 3...Ne4" "d4 d5 Nc3 Nf6 Bg5 Ne4")
+ ("D01c" "Richter-Veresov: 3...e6" "d4 d5 Nc3 Nf6 Bg5 e6")
+ ("D01d" "Richter-Veresov: 3...h6" "d4 d5 Nc3 Nf6 Bg5 h6")
+ ("D01e" "Richter-Veresov: 3...g6" "d4 d5 Nc3 Nf6 Bg5 g6")
+ ("D01f" "Richter-Veresov: 3...c6" "d4 d5 Nc3 Nf6 Bg5 c6")
+ ("D01g" "Richter-Veresov: 3...c5" "d4 d5 Nc3 Nf6 Bg5 c5")
+ ("D01h" "Richter-Veresov: 3...Bf5" "d4 d5 Nc3 Nf6 Bg5 Bf5")
+ ("D01i" "Richter-Veresov: 3...Bf5 4.f3" "d4 d5 Nc3 Nf6 Bg5 Bf5 f3")
+ ("D01j" "Richter-Veresov: 3...Bf5 4.Nf3" "d4 d5 Nc3 Nf6 Bg5 Bf5 Nf3")
+ ("D01k" "Richter-Veresov: 3...Bf5 4.Bxf6" "d4 d5 Nc3 Nf6 Bg5 Bf5 Bxf6")
+ ("D01l" "Richter-Veresov: 3...Nbd7" "d4 d5 Nc3 Nf6 Bg5 Nbd7")
+ ("D01m" "Richter-Veresov: 3...Nbd7 4.f3" "d4 d5 Nc3 Nf6 Bg5 Nbd7 f3")
+ ("D01n" "Richter-Veresov: 3...Nbd7 4.Nf3" "d4 d5 Nc3 Nf6 Bg5 Nbd7 Nf3")
+ ("D01o" "Richter-Veresov: 3...Nbd7 4.Nf3 h6" "d4 d5 Nc3 Nf6 Bg5 Nbd7 Nf3 h6")
+ ("D01p" "Richter-Veresov: 3...Nbd7 4.Nf3 g6" "d4 d5 Nc3 Nf6 Bg5 Nbd7 Nf3 g6")
+ ("D02a" "Queen's Pawn: 2.Nf3" "d4 d5 Nf3")
+ ("D02a" "Queen's Pawn: 2.Nf3 g6" "d4 d5 Nf3 g6")
+ ("D02a" "Queen's Pawn: 2.Nf3 Bg4" "d4 d5 Nf3 Bg4")
+ ("D02b" "Queen's Pawn: 2.Nf3 c6" "d4 d5 Nf3 c6")
+ ("D02c" "Queen's Pawn: London" "d4 d5 Nf3 c6 Bf4")
+ ("D02c" "Queen's Pawn: London, Alapin Variation" "d4 d5 Nf3 c6 Bf4 Qb6")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5" "d4 d5 Nf3 Bf5")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5 3.e3" "d4 d5 Nf3 Bf5 e3")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5 3.e3 c6" "d4 d5 Nf3 Bf5 e3 c6")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5 3.Bf4" "d4 d5 Nf3 Bf5 Bf4")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5 3.Bf4 c6" "d4 d5 Nf3 Bf5 Bf4 c6")
+ ("D02d" "Queen's Pawn: 2.Nf3 Bf5 3.Bf4 e6" "d4 d5 Nf3 Bf5 Bf4 e6")
+ ("D02e" "Queen's Pawn: 2.Nf3 Nc6" "d4 d5 Nf3 Nc6")
+ ("D02f" "Queen's Pawn: 2.Nf3 Nc6 3.Bf4" "d4 d5 Nf3 Nc6 Bf4")
+ ("D02g" "Queen's Pawn: 2.Nf3 Nc6 3.g3" "d4 d5 Nf3 Nc6 g3")
+ ("D02g" "Queen's Pawn: 2.Nf3 Nc6 3.g3 Bg4" "d4 d5 Nf3 Nc6 g3 Bg4")
+ ("D02h" "Queen's Pawn: 2.Nf3 e6" "d4 d5 Nf3 e6")
+ ("D02i" "Queen's Pawn: 2.Nf3 e6 3.g3" "d4 d5 Nf3 e6 g3")
+ ("D02i" "Queen's Pawn: 2.Nf3 e6 3.g3 c5" "d4 d5 Nf3 e6 g3 c5")
+ ("D02i" "Queen's Pawn: 2.Nf3 e6 3.g3 c5" "d4 d5 Nf3 e6 g3 c5 Bg2")
+ ("D02i" "Queen's Pawn: 2.Nf3 e6 3.g3 c5" "d4 d5 Nf3 e6 g3 c5 Bg2 cxd4 Nxd4")
+ ("D02i" "Queen's Pawn: 2.Nf3 e6 3.g3 c5" "d4 d5 Nf3 e6 g3 c5 Bg2 cxd4 Nxd4 
e5")
+ ("D02j" "Queen's Pawn: Krause Variation" "d4 d5 Nf3 c5")
+ ("D02j" "Queen's Pawn: Krause, 3.c4" "d4 d5 Nf3 c5 c4")
+ ("D02j" "Queen's Pawn: Krause, Reversed Slav" "d4 d5 Nf3 c5 c3")
+ ("D02j" "Queen's Pawn: Krause, Reversed QGD" "d4 d5 Nf3 c5 e3")
+ ("D02j" "Queen's Pawn: Krause, Reversed QGA" "d4 d5 Nf3 c5 dxc5")
+ ("D02k" "Queen's Pawn: 2.Nf3 Nf6" "d4 d5 Nf3 Nf6")
+ ("D02k" "Queen's Pawn: 3.c3" "d4 d5 Nf3 Nf6 c3")
+ ("D02l" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4")
+ ("D02m" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 Bf5")
+ ("D02n" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 e6")
+ ("D02o" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 c5")
+ ("D02p" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 c5 e3 e6")
+ ("D02p" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 c5 e3 e6 c3 Nc6")
+ ("D02q" "Queen's Pawn: London" "d4 d5 Nf3 Nf6 Bf4 e6 e3 c5 c3 Nc6 Bd3 Bd6")
+ ("D02r" "Queen's Pawn: 3.g3" "d4 d5 Nf3 Nf6 g3")
+ ("D02s" "Queen's Pawn: 3.g3 c6" "d4 d5 Nf3 Nf6 g3 c6")
+ ("D02s" "Queen's Pawn: 3.g3 c6" "d4 d5 Nf3 Nf6 g3 c6 Bg2")
+ ("D02t" "Queen's Pawn: 3.g3 c6 4.Bg2 Bg4" "d4 d5 Nf3 Nf6 g3 c6 Bg2 Bg4")
+ ("D02t" "Queen's Pawn: 3.g3 c6 4.Bg2 Bg4" "d4 d5 Nf3 Nf6 g3 c6 Bg2 Bg4 O-O")
+ ("D02t" "Queen's Pawn: 3.g3 c6 4.Bg2 Bg4" "d4 d5 Nf3 Nf6 g3 c6 Bg2 Bg4 O-O 
Nbd7")
+ ("D02t" "Queen's Pawn: 3.g3 c6 4.Bg2 Bg4" "d4 d5 Nf3 Nf6 g3 c6 Bg2 Bg4 O-O 
Nbd7 Nbd2 e6")
+ ("D02u" "Queen's Pawn: 3.g3 g6" "d4 d5 Nf3 Nf6 g3 g6")
+ ("D02u" "Queen's Pawn: 3.g3 g6" "d4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7")
+ ("D02u" "Queen's Pawn: 3.g3 g6" "d4 d5 Nf3 Nf6 g3 g6 Bg2 Bg7 O-O O-O")
+ ("D03a" "Torre Attack (Tartakower)" "d4 d5 Nf3 Nf6 Bg5")
+ ("D03b" "Torre Attack: 3...Ne4" "d4 d5 Nf3 Nf6 Bg5 Ne4")
+ ("D03c" "Torre Attack: 3...Ne4 4.Bf4" "d4 d5 Nf3 Nf6 Bg5 Ne4 Bf4")
+ ("D03d" "Torre Attack: 3...e6" "d4 d5 Nf3 Nf6 Bg5 e6")
+ ("D03e" "Torre Attack: 3...e6 4.e3" "d4 d5 Nf3 Nf6 Bg5 e6 e3")
+ ("D03f" "Torre Attack: 3...e6 4.e3 Nbd7" "d4 d5 Nf3 Nf6 Bg5 e6 e3 Nbd7")
+ ("D03f" "Torre Attack: 3...e6 4.e3 Nbd7" "d4 d5 Nf3 Nf6 Bg5 e6 e3 Nbd7 Nbd2 
Be7")
+ ("D03g" "Torre Attack: 3...e6 4.e3 c5" "d4 d5 Nf3 Nf6 Bg5 e6 e3 c5")
+ ("D03h" "Torre Attack: 3...e6 4.e3 c5" "d4 d5 Nf3 Nf6 Bg5 e6 e3 c5 Nbd2 Nbd7")
+ ("D03i" "Torre Attack: 3...e6 4.e3 c5" "d4 d5 Nf3 Nf6 Bg5 e6 e3 c5 Nbd2 Be7")
+ ("D03j" "Torre Attack: 3...e6 4.e3 c5" "d4 d5 Nf3 Nf6 Bg5 e6 e3 c5 Nbd2 Be7 
c3 Nbd7")
+ ("D03k" "Torre Attack: 3...g6" "d4 d5 Nf3 Nf6 Bg5 g6")
+ ("D03k" "Torre Attack: 3...g6" "d4 d5 Nf3 Nf6 Bg5 g6 c3 Bg7")
+ ("D03l" "Torre Attack: 3...g6" "d4 d5 Nf3 Nf6 Bg5 g6 Nbd2")
+ ("D03l" "Torre Attack: 3...g6" "d4 d5 Nf3 Nf6 Bg5 g6 Nbd2 Bg7")
+ ("D03m" "Torre Attack: 3...g6 4.e3" "d4 d5 Nf3 Nf6 Bg5 g6 e3")
+ ("D03m" "Torre Attack: 3...g6 4.e3" "d4 d5 Nf3 Nf6 Bg5 g6 e3 Bg7")
+ ("D03n" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2" "d4 d5 Nf3 Nf6 Bg5 g6 e3 Bg7 
Nbd2")
+ ("D03o" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O" "d4 d5 Nf3 Nf6 Bg5 g6 e3 
Bg7 Nbd2 O-O")
+ ("D03p" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3" "d4 d5 Nf3 Nf6 Bg5 g6 
Nbd2 Bg7 e3 O-O c3")
+ ("D03q" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3 Nbd7" "d4 d5 Nf3 Nf6 
Bg5 g6 Nbd2 Bg7 e3 O-O c3 Nbd7")
+ ("D03r" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3 Nbd7 7.Be2" "d4 d5 Nf3 
Nf6 Bg5 g6 Nbd2 Bg7 e3 O-O c3 Nbd7 Be2")
+ ("D03s" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3" "d4 d5 Nf3 Nf6 Bg5 
g6 e3 Bg7 Nbd2 O-O Bd3")
+ ("D03t" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3 c5" "d4 d5 Nf3 Nf6 
Bg5 g6 Nbd2 Bg7 e3 O-O Bd3 c5")
+ ("D03t" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3 c5" "d4 d5 Nf3 Nf6 
Bg5 g6 Nbd2 Bg7 e3 O-O Bd3 c5 c3")
+ ("D03u" "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3 c5 7.c3 Nbd7" "d4 d5 
Nf3 Nf6 Bg5 g6 Nbd2 Bg7 e3 O-O Bd3 c5 c3 Nbd7")
+ ("D04a" "Queen's Pawn: Colle" "d4 d5 Nf3 Nf6 e3")
+ ("D04b" "Colle: 3...Bg4" "d4 d5 Nf3 Nf6 e3 Bg4")
+ ("D04c" "Colle: 3...Bf5" "d4 d5 Nf3 Nf6 e3 Bf5")
+ ("D04d" "Colle: 3...Bf5, Alekhine Variation" "d4 d5 Nf3 Nf6 e3 Bf5 Bd3 e6")
+ ("D04e" "Colle: 3...g6" "d4 d5 Nf3 Nf6 e3 g6")
+ ("D04f" "Colle: 3...c6" "d4 d5 Nf3 Nf6 e3 c6")
+ ("D04g" "Colle: 3...c5" "d4 d5 Nf3 Nf6 e3 c5")
+ ("D04h" "Colle: 3...c5 4.c3" "d4 d5 Nf3 Nf6 e3 c5 c3")
+ ("D04i" "Colle: 3...c5 4.c3 Nc6" "d4 d5 Nf3 Nf6 e3 c5 c3 Nc6")
+ ("D04j" "Colle: 3...c5 4.c3 Nbd7" "d4 d5 Nf3 Nf6 e3 c5 c3 Nbd7")
+ ("D05a" "Colle: 3...e6" "d4 d5 Nf3 Nf6 e3 e6")
+ ("D05b" "Colle: 3...e6 4.Nbd2" "d4 d5 Nf3 Nf6 e3 e6 Nbd2")
+ ("D05c" "Colle: Zukertort Variation" "d4 d5 Nf3 Nf6 e3 e6 Nbd2 c5 b3")
+ ("D05d" "Colle: 3...e6 4.Bd3" "d4 d5 Nf3 Nf6 e3 e6 Bd3")
+ ("D05e" "Colle: 3...e6 4.Bd3 c5" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5")
+ ("D05f" "Colle: Rubinstein's Attack" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 b3")
+ ("D05g" "Colle: Rubinstein's Attack, 5...Nc6" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 b3 
Nc6")
+ ("D05h" "Colle: 5.c3" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3")
+ ("D05i" "Colle: 5.c3 Nbd7" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3 Nbd7")
+ ("D05j" "Colle: 5.c3 Nc6" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3 Nc6")
+ ("D05k" "Colle: 5.c3 Nc6 6.Nbd2" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3 Nc6 Nbd2")
+ ("D05l" "Colle: 5.c3 Nc6 6.Nbd2 Bd6" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3 Nc6 Nbd2 
Bd6")
+ ("D05m" "Colle: 5.c3 Nc6 6.Nbd2 Bd6 7.O-O O-O" "d4 d5 Nf3 Nf6 e3 e6 Bd3 c5 c3 
Nc6 Nbd2 Bd6 O-O O-O")
+ ("D05n" "Colle: 5.c3 Nc6 6.Nbd2 Bd6 7.O-O O-O 8.dxc5 Bxc5" "d4 d5 Nf3 Nf6 e3 
e6 Bd3 c5 c3 Nc6 Nbd2 Bd6 O-O O-O dxc5 Bxc5")
+ ("D06a" "Queen's Gambit" "d4 d5 c4")
+ ("D06b" "QGD: Austrian Defence" "d4 d5 c4 c5")
+ ("D06b" "QGD: Austrian, Rubinstein Variation" "d4 d5 c4 c5 cxd5 Nf6")
+ ("D06b" "QGD: Austrian, Rubinstein, 4.dxc5" "d4 d5 c4 c5 cxd5 Nf6 dxc5")
+ ("D06c" "QGD: Austrian, Rubinstein, 4.Nf3" "d4 d5 c4 c5 cxd5 Nf6 Nf3")
+ ("D06d" "QGD: Austrian, Rubinstein, 4.Nf3 cxd4" "d4 d5 c4 c5 cxd5 Nf6 Nf3 
cxd4")
+ ("D06e" "QGD: Marshall Defence" "d4 d5 c4 Nf6")
+ ("D06f" "QGD: Marshall Defence, 3.Nc3" "d4 d5 c4 Nf6 Nc3")
+ ("D06g" "QGD: Marshall Defence, 3.Nf3" "d4 d5 c4 Nf6 Nf3")
+ ("D06h" "QGD: Marshall Defence, 3.cxd5" "d4 d5 c4 Nf6 cxd5")
+ ("D06i" "QGD: Marshall Defence, 3.cxd5 Nxd5" "d4 d5 c4 Nf6 cxd5 Nxd5")
+ ("D06j" "QGD: Marshall Defence, 3.cxd5 Nxd5 4.Nf3" "d4 d5 c4 Nf6 cxd5 Nxd5 
Nf3")
+ ("D06k" "QGD: Marshall Defence, 3.cxd5 Nxd5 4.e4" "d4 d5 c4 Nf6 cxd5 Nxd5 e4")
+ ("D06l" "QGD: 2...Bf5" "d4 d5 c4 Bf5")
+ ("D06l" "QGD: 2...Bf5 3.Qb3" "d4 d5 c4 Bf5 Qb3")
+ ("D06m" "QGD: 2...Bf5 3.Nc3" "d4 d5 c4 Bf5 Nc3")
+ ("D06m" "QGD: 2...Bf5 3.Nc3 e6" "d4 d5 c4 Bf5 Nc3 e6")
+ ("D06n" "QGD: 2...Bf5 3.Nf3" "d4 d5 c4 Bf5 Nf3")
+ ("D06n" "QGD: 2...Bf5 3.Nf3 e6" "d4 d5 c4 Bf5 Nf3 e6")
+ ("D06o" "QGD: 2...Bf5 3.Nf3 e6 4.Qb3" "d4 d5 c4 Bf5 Nf3 e6 Qb3")
+ ("D06p" "QGD: 2...Bf5 3.Nf3 e6 4.Nc3" "d4 d5 c4 Bf5 Nf3 e6 Nc3")
+ ("D06q" "QGD: 2...Bf5 3.Nf3 e6 4.Nc3 Nf6" "d4 d5 c4 Bf5 Nf3 e6 Nc3 Nf6")
+ ("D06r" "QGD: 2...Bf5 3.cxd5" "d4 d5 c4 Bf5 cxd5")
+ ("D06s" "QGD: 2...Bf5 3.cxd5 Bxb1 4.Rxb1" "d4 d5 c4 Bf5 cxd5 Bxb1 Rxb1")
+ ("D06t" "QGD: 2...Bf5 3.cxd5 Bxb1 4.Qa4+" "d4 d5 c4 Bf5 cxd5 Bxb1 Qa4+")
+ ("D06u" "QGD: 2...Bf5 3.cxd5 Bxb1 4.Qa4+ c6 5.Rxb1" "d4 d5 c4 Bf5 cxd5 Bxb1 
Qa4+ c6 Rxb1")
+ ("D07a" "QGD: Chigorin Defence" "d4 d5 c4 Nc6")
+ ("D07b" "QGD: Chigorin, 3.e3" "d4 d5 c4 Nc6 e3")
+ ("D07c" "QGD: Chigorin, 3.cxd5" "d4 d5 c4 Nc6 cxd5")
+ ("D07c" "QGD: Chigorin, 3.cxd5, Main Line" "d4 d5 c4 Nc6 cxd5 Qxd5 e3 e5 Nc3 
Bb4 Bd2 Bxc3")
+ ("D07d" "QGD: Chigorin, 3.cxd5, Main Line, 7.bxc3" "d4 d5 c4 Nc6 cxd5 Qxd5 e3 
e5 Nc3 Bb4 Bd2 Bxc3 bxc3")
+ ("D07e" "QGD: Chigorin, 3.cxd5 Main Line, 7.Bxc3" "d4 d5 c4 Nc6 cxd5 Qxd5 e3 
e5 Nc3 Bb4 Bd2 Bxc3 Bxc3")
+ ("D07f" "QGD: Chigorin, 3.Nf3" "d4 d5 c4 Nc6 Nf3")
+ ("D07g" "QGD: Chigorin, Lazard Gambit" "d4 d5 c4 Nc6 Nf3 e5")
+ ("D07h" "QGD: Chigorin, 3.Nf3 Bg4" "d4 d5 c4 Nc6 Nf3 Bg4")
+ ("D07i" "QGD: Chigorin, 3.Nf3 Bg4 4.e3" "d4 d5 c4 Nc6 Nf3 Bg4 e3")
+ ("D07j" "QGD: Chigorin, 3.Nf3 Bg4 4.Nc3" "d4 d5 c4 Nc6 Nf3 Bg4 Nc3")
+ ("D07k" "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5" "d4 d5 c4 Nc6 Nf3 Bg4 cxd5")
+ ("D07l" "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5 Bxf3 5.dxc6" "d4 d5 c4 Nc6 Nf3 Bg4 
cxd5 Bxf3 dxc6")
+ ("D07m" "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5 Bxf3 5.gxf3" "d4 d5 c4 Nc6 Nf3 Bg4 
cxd5 Bxf3 gxf3")
+ ("D07n" "QGD: Chigorin, 3.Nc3" "d4 d5 c4 Nc6 Nc3")
+ ("D07o" "QGD: Chigorin, Tartakower Gambit" "d4 d5 c4 Nc6 Nc3 e5")
+ ("D07p" "QGD: Chigorin, 3.Nc3 Nf6" "d4 d5 c4 Nc6 Nc3 Nf6")
+ ("D07q" "QGD: Chigorin, 3.Nc3 Nf6 4.Nf3" "d4 d5 c4 Nc6 Nc3 Nf6 Nf3")
+ ("D07r" "QGD: Chigorin, 3.Nc3 Nf6 4.Nf3 Bg4" "d4 d5 c4 Nc6 Nc3 Nf6 Nf3 Bg4")
+ ("D07s" "QGD: Chigorin, 3.Nc3 dxc4" "d4 d5 c4 Nc6 Nc3 dxc4")
+ ("D07t" "QGD: Chigorin, 3.Nc3 dxc4 4.d5" "d4 d5 c4 Nc6 Nc3 dxc4 d5")
+ ("D07u" "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3" "d4 d5 c4 Nc6 Nc3 dxc4 Nf3")
+ ("D07v" "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3 Nf6" "d4 d5 c4 Nc6 Nc3 dxc4 Nf3 Nf6")
+ ("D07w" "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3 Nf6 5.e4" "d4 d5 c4 Nc6 Nc3 dxc4 Nf3 
Nf6 e4")
+ ("D08" "QGD: Albin Countergambit" "d4 d5 c4 e5")
+ ("D08" "QGD: Albin, 3.e3" "d4 d5 c4 e5 e3")
+ ("D08" "QGD: Albin, 3.dxe5" "d4 d5 c4 e5 dxe5")
+ ("D08" "QGD: Albin, 3.dxe5 d4" "d4 d5 c4 e5 dxe5 d4")
+ ("D08" "QGD: Albin, Lasker Trap" "d4 d5 c4 e5 dxe5 d4 e3 Bb4+ Bd2 dxe3")
+ ("D08" "QGD: Albin, 4.e4" "d4 d5 c4 e5 dxe5 d4 e4")
+ ("D08" "QGD: Albin, 4.a3" "d4 d5 c4 e5 dxe5 d4 a3")
+ ("D08" "QGD: Albin, 4.Nf3" "d4 d5 c4 e5 dxe5 d4 Nf3")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6")
+ ("D08" "QGD: Albin, Alapin Variation" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 Nbd2")
+ ("D08" "QGD: Albin, Janowski Variation" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 Nbd2 f6")
+ ("D08" "QGD: Albin, Balogh Variation" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 Nbd2 Qe7")
+ ("D08" "QGD: Albin, Alapin, 5...Bg4" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 Nbd2 Bg4")
+ ("D08" "QGD: Albin, Krenosz Variation" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 Nbd2 Bg4 
h3 Bxf3 Nxf3 Bb4+ Bd2 Qe7")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6 5.a3" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 a3")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6 5.a3 a5" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 a3 a5")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6 5.a3 Be6" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 a3 Be6")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6 5.a3 Bg4" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 a3 Bg4")
+ ("D08" "QGD: Albin, 4.Nf3 Nc6 5.a3 Bg4 6.Nbd2" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 
a3 Bg4 Nbd2")
+ ("D09" "QGD: Albin, 5.g3" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3")
+ ("D09" "QGD: Albin, 5.g3 Nge7" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Nge7")
+ ("D09" "QGD: Albin, 5.g3 Bf5" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Bf5")
+ ("D09" "QGD: Albin, 5.g3 Bg4" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Bg4")
+ ("D09" "QGD: Albin, 5.g3 Bg4 6.Bg2 Qd7" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Bg4 
Bg2 Qd7")
+ ("D09" "QGD: Albin, 5.g3 Bg4 6.Bg2 Qd7 7.O-O O-O-O" "d4 d5 c4 e5 dxe5 d4 Nf3 
Nc6 g3 Bg4 Bg2 Qd7 O-O O-O-O")
+ ("D09" "QGD: Albin, 5.g3 Be6" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Be6")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.b3" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Be6 b3")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Bg2" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Be6 Bg2")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Nbd2" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Be6 
Nbd2")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Nbd2 Qd7" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 g3 Be6 
Nbd2 Qd7")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Nbd2 Qd7 7.Bg2" "d4 d5 c4 e5 dxe5 d4 Nf3 Nc6 
g3 Be6 Nbd2 Qd7 Bg2")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Nbd2 Qd7 7.Bg2 O-O-O" "d4 d5 c4 e5 dxe5 d4 Nf3 
Nc6 g3 Be6 Nbd2 Qd7 Bg2 O-O-O")
+ ("D09" "QGD: Albin, 5.g3 Be6 6.Nbd2 Qd7 7.Bg2 Nge7" "d4 d5 c4 e5 dxe5 d4 Nf3 
Nc6 g3 Be6 Nbd2 Qd7 Bg2 Nge7")
+ ("D10a" "Slav Defence" "d4 d5 c4 c6")
+ ("D10a" "Diemer-Duhm Gambit (DDG) vs. Slav/Caro-Kann" "d4 d5 c4 c6 e4")
+ ("D10a" "Slav: 3.g3" "d4 d5 c4 c6 g3")
+ ("D10a" "Slav: 3.Bf4" "d4 d5 c4 c6 Bf4")
+ ("D10b" "Slav: Exchange" "d4 d5 c4 c6 cxd5")
+ ("D10b" "Slav: Exchange" "d4 d5 c4 c6 cxd5 cxd5")
+ ("D10c" "Slav: Exchange, 4.Bf4" "d4 d5 c4 c6 cxd5 cxd5 Bf4")
+ ("D10d" "Slav: Exchange, 4.Nf3" "d4 d5 c4 c6 cxd5 cxd5 Nf3")
+ ("D10e" "Slav: Exchange, 4.Nc3" "d4 d5 c4 c6 cxd5 cxd5 Nc3")
+ ("D10e" "Slav: Exchange, 4.Nc3 Nf6" "d4 d5 c4 c6 cxd5 cxd5 Nc3 Nf6")
+ ("D10e" "Slav: Exchange, 4.Nc3 Nf6 5.Bf4" "d4 d5 c4 c6 cxd5 cxd5 Nc3 Nf6 Bf4")
+ ("D10f" "Slav: Exchange, 4.Nc3 Nf6 5.Bf4 Nc6" "d4 d5 c4 c6 cxd5 cxd5 Nc3 Nf6 
Bf4 Nc6")
+ ("D10f" "Slav: Exchange, 4.Nc3 Nf6 5.Bf4 Nc6 6.e3" "d4 d5 c4 c6 cxd5 cxd5 Nc3 
Nf6 Bf4 Nc6 e3")
+ ("D10g" "Slav: Exchange, 4.Nc3 Nf6 5.Bf4 Nc6 6.e3 a6" "d4 d5 c4 c6 cxd5 cxd5 
Nc3 Nf6 Bf4 Nc6 e3 a6")
+ ("D10h" "Slav: 3.e3" "d4 d5 c4 c6 e3")
+ ("D10h" "Slav: 3.e3 Bf5" "d4 d5 c4 c6 e3 Bf5")
+ ("D10h" "Slav: 3.e3 Nf6" "d4 d5 c4 c6 e3 Nf6")
+ ("D10i" "Slav: 3.Nc3" "d4 d5 c4 c6 Nc3")
+ ("D10j" "Slav: Winawer Countergambit" "d4 d5 c4 c6 Nc3 e5")
+ ("D10k" "Slav: Winawer Countergambit, 4.cxd5" "d4 d5 c4 c6 Nc3 e5 cxd5")
+ ("D10k" "Slav: Winawer Countergambit, 4.cxd5 cxd5 5.dxe5" "d4 d5 c4 c6 Nc3 e5 
cxd5 cxd5 dxe5")
+ ("D10l" "Slav: Winawer Countergambit, 4.cxd5 cxd5 5.Nf3" "d4 d5 c4 c6 Nc3 e5 
cxd5 cxd5 Nf3")
+ ("D10m" "Slav: Winawer Countergambit Accepted" "d4 d5 c4 c6 Nc3 e5 dxe5")
+ ("D10m" "Slav: Winawer Countergambit Accepted, 6.Nd2" "d4 d5 c4 c6 Nc3 e5 
dxe5 d4 Ne4 Qa5+ Nd2")
+ ("D10n" "Slav: Winawer Countergambit Accepted, 6.Bd2" "d4 d5 c4 c6 Nc3 e5 
dxe5 d4 Ne4 Qa5+ Bd2")
+ ("D10o" "Slav: 3.Nc3 dxc4" "d4 d5 c4 c6 Nc3 dxc4")
+ ("D10o" "Slav: 3.Nc3 dxc4 4.a4" "d4 d5 c4 c6 Nc3 dxc4 a4")
+ ("D10o" "Slav: 3.Nc3 dxc4 4.e3" "d4 d5 c4 c6 Nc3 dxc4 e3")
+ ("D10p" "Slav: 3.Nc3 dxc4 4.e4" "d4 d5 c4 c6 Nc3 dxc4 e4")
+ ("D10q" "Slav: 3.Nc3 dxc4 4.e4 b5" "d4 d5 c4 c6 Nc3 dxc4 e4 b5")
+ ("D10r" "Slav: 3.Nc3 dxc4 4.e4 b5 5.a4" "d4 d5 c4 c6 Nc3 dxc4 e4 b5 a4")
+ ("D10r" "Slav: 3.Nc3 Nf6" "d4 d5 c4 c6 Nc3 Nf6")
+ ("D10s" "Slav: 3.Nc3 Nf6 4.Bg5" "d4 d5 c4 c6 Nc3 Nf6 Bg5")
+ ("D10t" "Slav: 3.Nc3 Nf6 4.Bg5 dxc4" "d4 d5 c4 c6 Nc3 Nf6 Bg5 dxc4")
+ ("D10u" "Slav: 3.Nc3 Nf6 4.e3" "d4 d5 c4 c6 Nc3 Nf6 e3")
+ ("D10v" "Slav: 3.Nc3 Nf6 4.e3 Bf5" "d4 d5 c4 c6 Nc3 Nf6 e3 Bf5")
+ ("D10w" "Slav: 3.Nc3 Nf6 4.e3 a6" "d4 d5 c4 c6 Nc3 Nf6 e3 a6")
+ ("D10w" "Slav: 3.Nc3 Nf6 4.e3 a6 5.Bd3" "d4 d5 c4 c6 Nc3 Nf6 e3 a6 Bd3")
+ ("D10x" "Slav: 3.Nc3 Nf6 4.e3 a6 5.Qc2" "d4 d5 c4 c6 Nc3 Nf6 e3 a6 Qc2")
+ ("D10y" "Slav: 3.Nc3 Nf6 4.e3 a6 5.Qc2 b5" "d4 d5 c4 c6 Nc3 Nf6 e3 a6 Qc2 b5")
+ ("D11a" "Slav: 3.Nf3" "d4 d5 c4 c6 Nf3")
+ ("D11b" "Slav: 3.Nf3 Bg4" "d4 d5 c4 c6 Nf3 Bg4")
+ ("D11c" "Slav: 3.Nf3 Bf5" "d4 d5 c4 c6 Nf3 Bf5")
+ ("D11c" "Slav: 3.Nf3 Bf5 4.Nc3" "d4 d5 c4 c6 Nf3 Bf5 Nc3")
+ ("D11c" "Slav: 3.Nf3 Bf5 4.Nc3 e6" "d4 d5 c4 c6 Nf3 Bf5 Nc3 e6")
+ ("D11d" "Slav: 3.Nf3 Bf5 4.Nc3 e6 5.Qb3" "d4 d5 c4 c6 Nf3 Bf5 Nc3 e6 Qb3")
+ ("D11e" "Slav: 3.Nf3 dxc4" "d4 d5 c4 c6 Nf3 dxc4")
+ ("D11e" "Slav: 3.Nf3 dxc4 4.Nc3" "d4 d5 c4 c6 Nf3 dxc4 Nc3")
+ ("D11e" "Slav: 3.Nf3 dxc4 4.e3" "d4 d5 c4 c6 Nf3 dxc4 e3")
+ ("D11e" "Slav: 3.Nf3 dxc4 4.e3 Be6" "d4 d5 c4 c6 Nf3 dxc4 e3 Be6")
+ ("D11f" "Slav: 3.Nf3 dxc4 4.e3 b5" "d4 d5 c4 c6 Nf3 dxc4 e3 b5")
+ ("D11f" "Slav: 3.Nf3 dxc4 4.e3 b5 5.a4" "d4 d5 c4 c6 Nf3 dxc4 e3 b5 a4")
+ ("D11f" "Slav: 3.Nf3 dxc4 4.e3 b5 5.a4 e6" "d4 d5 c4 c6 Nf3 dxc4 e3 b5 a4 e6")
+ ("D11g" "Slav: 3.Nf3 Nf6" "d4 d5 c4 c6 Nf3 Nf6")
+ ("D11h" "Slav: 4.Qb3" "d4 d5 c4 c6 Nf3 Nf6 Qb3")
+ ("D11i" "Slav: 4.Qc2" "d4 d5 c4 c6 Nf3 Nf6 Qc2")
+ ("D11j" "Slav: 4.Qc2 g6 5.Bf4" "d4 d5 c4 c6 Nf3 Nf6 Qc2 g6 Bf4")
+ ("D11k" "Slav: Breyer Variation" "d4 d5 c4 c6 Nf3 Nf6 Nbd2")
+ ("D11l" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
Nbd2")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
Nbd2 Bd6")
+ ("D11m" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
Nbd2 Be7")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Bd6")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Bd6 Bb2")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Bd6 Bb2 O-O Nbd2")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Be7")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Be7 Bb2")
+ ("D11n" "Slav: Slav-Reti with b3" "d4 d5 c4 c6 Nf3 Nf6 g3 Bg4 Bg2 e6 O-O Nbd7 
b3 Be7 Bb2 O-O Nbd2")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O Nbd7")
+ ("D11o" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O Be7")
+ ("D11p" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O h6")
+ ("D11p" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O h6 
Nbd2")
+ ("D11p" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O h6 
Nc3")
+ ("D11p" "Slav: Slav-Reti System" "d4 d5 c4 c6 Nf3 Nf6 g3 Bf5 Bg2 e6 O-O h6 
b3")
+ ("D11q" "Slav: 4.e3" "d4 d5 c4 c6 Nf3 Nf6 e3")
+ ("D11r" "Slav: 4.e3 g6" "d4 d5 c4 c6 Nf3 Nf6 e3 g6")
+ ("D11s" "Slav: 4.e3 a6" "d4 d5 c4 c6 Nf3 Nf6 e3 a6")
+ ("D11t" "Slav: 4.e3 Bg4" "d4 d5 c4 c6 Nf3 Nf6 e3 Bg4")
+ ("D11t" "Slav: 4.e3 Bg4" "d4 d5 c4 c6 Nf3 Nf6 e3 Bg4 Nc3")
+ ("D12a" "Slav: 4.e3 Bf5" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5")
+ ("D12b" "Slav: 4.e3 Bf5 5.Qb3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Qb3")
+ ("D12c" "Slav: 4.e3 Bf5 5.cxd5" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 cxd5")
+ ("D12c" "Slav: 4.e3 Bf5 5.cxd5" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 cxd5 cxd5")
+ ("D12d" "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Qb3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 cxd5 
cxd5 Qb3")
+ ("D12e" "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Qb3 Qc7" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 
cxd5 cxd5 Qb3 Qc7")
+ ("D12f" "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Nc3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 cxd5 
cxd5 Nc3")
+ ("D12f" "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Nc3, Amsterdam Variation" "d4 d5 c4 c6 
Nf3 Nf6 e3 Bf5 cxd5 cxd5 Nc3 e6 Ne5 Nfd7")
+ ("D12g" "Slav: 4.e3 Bf5 5.Bd3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Bd3")
+ ("D12h" "Slav: 4.e3 Bf5 5.Bd3 Bxd3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Bd3 Bxd3")
+ ("D12i" "Slav: 4.e3 Bf5 5.Nc3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3")
+ ("D12i" "Slav: 4.e3 Bf5 5.Nc3 e6" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 e6")
+ ("D12j" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Be2" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 e6 
Be2")
+ ("D12k" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 e6 
Bd3")
+ ("D12l" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3 Bxd3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 
e6 Bd3 Bxd3")
+ ("D12l" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3 Bxd3" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 
e6 Bd3 Bxd3 Qxd3")
+ ("D12m" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3 Bxd3 7.Qxd3 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 
e3 Bf5 Nc3 e6 Bd3 Bxd3 Qxd3 Nbd7")
+ ("D12n" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 e6 
Nh4")
+ ("D12o" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4 Bg4" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 
e6 Nh4 Bg4")
+ ("D12p" "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4 Be4" "d4 d5 c4 c6 Nf3 Nf6 e3 Bf5 Nc3 
e6 Nh4 Be4")
+ ("D13a" "Slav: Exchange" "d4 d5 c4 c6 Nf3 Nf6 cxd5")
+ ("D13b" "Slav: Exchange" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5")
+ ("D13c" "Slav: Exchange, 5.Nc3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3")
+ ("D13d" "Slav: Exchange, 5.Nc3 Bf5" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Bf5")
+ ("D13e" "Slav: Exchange, 5.Nc3 a6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 a6")
+ ("D13f" "Slav: Exchange, 5.Nc3 a6 6.Ne5" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
a6 Ne5")
+ ("D13g" "Slav: Exchange, 5.Nc3 a6 6.Bf4" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
a6 Bf4")
+ ("D13h" "Slav: Exchange, 5.Nc3 e6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 e6")
+ ("D13i" "Slav: Exchange, 5.Nc3 e6 6.Bf4" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
e6 Bf4")
+ ("D13j" "Slav: Exchange, 5.Nc3 Nc6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6")
+ ("D13k" "Slav: Exchange, 6.Bf4" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4")
+ ("D13l" "Slav: Exchange, 6.Bf4 a6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
a6")
+ ("D13m" "Slav: Exchange, 6.Bf4 a6 7.e3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
Nc6 Bf4 a6 e3")
+ ("D13n" "Slav: Exchange, 6.Bf4 a6 7.e3 Bg4" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 a6 e3 Bg4")
+ ("D13o" "Slav: Exchange, 6.Bf4 a6 7.e3 Bg4 8.Be2" "d4 d5 c4 c6 Nf3 Nf6 cxd5 
cxd5 Nc3 Nc6 Bf4 a6 e3 Bg4 Be2")
+ ("D13p" "Slav: Exchange, 6.Bf4 e6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
e6")
+ ("D13q" "Slav: Exchange, 6.Bf4 e6 7.e3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
Nc6 Bf4 e6 e3")
+ ("D13r" "Slav: Exchange, 6.Bf4 e6 7.e3 Be7" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 e6 e3 Be7")
+ ("D13s" "Slav: Exchange, 6.Bf4 e6 7.e3 Bd6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 e6 e3 Bd6")
+ ("D13t" "Slav: Exchange, 6.Bf4 e6 7.e3 Bd6 8.Bxd6 Qxd6" "d4 d5 c4 c6 Nf3 Nf6 
cxd5 cxd5 Nc3 Nc6 Bf4 e6 e3 Bd6 Bxd6 Qxd6")
+ ("D14a" "Slav: Exchange, 6.Bf4 Bf5" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 
Bf4 Bf5")
+ ("D14b" "Slav: Exchange, 6.Bf4 Bf5 7.e3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
Nc6 Bf4 Bf5 e3")
+ ("D14c" "Slav: Exchange, 6.Bf4 Bf5 7.e3 a6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 Bf5 e3 a6")
+ ("D14d" "Slav: Exchange, 6.Bf4 Bf5 7.e3 e6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 Bf5 e3 e6")
+ ("D14e" "Slav: Exchange, 8.Ne5" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
Bf5 e3 e6 Ne5")
+ ("D14f" "Slav: Exchange, 8.Qb3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
Bf5 e3 e6 Qb3")
+ ("D14g" "Slav: Exchange, Trifunovic Variation" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 
Nc3 Nc6 Bf4 Bf5 e3 e6 Qb3 Bb4")
+ ("D14h" "Slav: Exchange, 8.Bd3" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
Bf5 e3 e6 Bd3")
+ ("D14i" "Slav: Exchange, 8.Bd3 Bxd3 9.Qxd3 Bd6" "d4 d5 c4 c6 Nf3 Nf6 cxd5 
cxd5 Nc3 Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6")
+ ("D14j" "Slav: Exchange, 8.Bd3 Bxd3 9.Qxd3 Bd6 10.Bxd6 Qxd6" "d4 d5 c4 c6 Nf3 
Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6 Bxd6 Qxd6")
+ ("D14k" "Slav: Exchange, 8.Bd3 Main Line" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6 Bxd6 Qxd6 O-O O-O")
+ ("D14l" "Slav: Exchange, 8.Bd3 Main Line, 12.Rac1" "d4 d5 c4 c6 Nf3 Nf6 cxd5 
cxd5 Nc3 Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6 Bxd6 Qxd6 O-O O-O Rac1")
+ ("D14m" "Slav: Exchange, 8.Bd3 Main Line, 12.Rfc1" "d4 d5 c4 c6 Nf3 Nf6 cxd5 
cxd5 Nc3 Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6 Bxd6 Qxd6 O-O O-O Rfc1")
+ ("D14n" "Slav: Exchange, 8.Bd3 Main Line, 12.Rfc1 Rfc8" "d4 d5 c4 c6 Nf3 Nf6 
cxd5 cxd5 Nc3 Nc6 Bf4 Bf5 e3 e6 Bd3 Bxd3 Qxd3 Bd6 Bxd6 Qxd6 O-O O-O Rfc1 Rfc8")
+ ("D14o" "Slav: Exchange, 8.Bb5" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 Bf4 
Bf5 e3 e6 Bb5")
+ ("D14p" "Slav: Exchange, 8.Bb5 Nd7" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 Nc6 
Bf4 Bf5 e3 e6 Bb5 Nd7")
+ ("D14q" "Slav: Exchange, 8.Bb5 Nd7 9.Qa4" "d4 d5 c4 c6 Nf3 Nf6 cxd5 cxd5 Nc3 
Nc6 Bf4 Bf5 e3 e6 Bb5 Nd7 Qa4")
+ ("D15a" "Slav: 4.Nc3" "d4 d5 c4 c6 Nf3 Nf6 Nc3")
+ ("D15b" "Slav: 4.Nc3 Bf5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 Bf5")
+ ("D15b" "Slav: 4.Nc3 Bf5 5.Qb3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 Bf5 Qb3")
+ ("D15c" "Slav: Süchting Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 Qb6")
+ ("D15d" "Slav: Chameleon Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6")
+ ("D15e" "Slav: Chameleon, 5.Bg5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 Bg5")
+ ("D15f" "Slav: Chameleon, 5.Ne5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 Ne5")
+ ("D15g" "Slav: Chameleon, 5.e3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 e3")
+ ("D15h" "Slav: Chameleon, 5.e3 b5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 e3 b5")
+ ("D15i" "Slav: Chameleon, 5.e3 b5 6.b3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 e3 b5 b3")
+ ("D15j" "Slav: Chameleon, 5.c5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 c5")
+ ("D15k" "Slav: Chameleon, 5.c5 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 c5 Nbd7")
+ ("D15l" "Slav: Chameleon, 5.a4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 a4")
+ ("D15m" "Slav: Chameleon, 5.a4 e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 a4 e6")
+ ("D15n" "Slav: Chameleon, 5.a4 e6 6.Bg5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 a6 a4 e6 
Bg5")
+ ("D15o" "Slav: Accepted" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4")
+ ("D15p" "Slav: Accepted, 5.Ne5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 Ne5")
+ ("D15q" "Slav: Accepted, Alekhine" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 e3")
+ ("D15r" "Slav: Accepted, Alekhine: 5...b5 6.a4 b4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 e3 b5 a4 b4")
+ ("D15s" "Slav: Accepted, Alekhine: 5...b5 6.a4 b4 7.Nb1" "d4 d5 c4 c6 Nf3 Nf6 
Nc3 dxc4 e3 b5 a4 b4 Nb1")
+ ("D15t" "Slav: Geller (Tolush) Gambit" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 e4")
+ ("D15t" "Slav: Geller Gambit" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 e4 b5")
+ ("D15u" "Slav: Geller Gambit, Spassky Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 e4 b5 Qc2")
+ ("D15v" "Slav: Geller Gambit, 6.e5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 e4 b5 e5")
+ ("D15w" "Slav: Geller Gambit, 6.e5 Nd5 7.Ng5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
e4 b5 e5 Nd5 Ng5")
+ ("D15x" "Slav: Geller Gambit, 6.e5 Nd5 7.a4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 e4 
b5 e5 Nd5 a4")
+ ("D15y" "Slav: Geller Gambit, 6.e5 Nd5 7.a4 e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
e4 b5 e5 Nd5 a4 e6")
+ ("D16a" "Slav: Alapin" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4")
+ ("D16b" "Slav: 5.a4 Nd5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Nd5")
+ ("D16c" "Slav: Soultanbeieff Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 e6")
+ ("D16d" "Slav: Murey Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 a5")
+ ("D16e" "Slav: Smyslov Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6")
+ ("D16f" "Slav: Smyslov, 6.Ne5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6 Ne5")
+ ("D16g" "Slav: Smyslov, 6.e3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6 e3")
+ ("D16h" "Slav: Smyslov, 6.e3 Bg4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6 e3 
Bg4")
+ ("D16i" "Slav: Smyslov, 6.e4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6 e4")
+ ("D16j" "Slav: Smyslov, 6.e4 Bg4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Na6 e4 
Bg4")
+ ("D16k" "Slav: Smyslov, 6.e4 Bg4 7.Bxc4 e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Na6 e4 Bg4 Bxc4 e6")
+ ("D16l" "Slav: Bronstein (Steiner) Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bg4")
+ ("D16m" "Slav: Bronstein, 6.Ne5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bg4 Ne5")
+ ("D16n" "Slav: Bronstein, 6.Ne5 Bh5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bg4 Ne5 
Bh5")
+ ("D16o" "Slav: Bronstein, 6.Ne5 Bh5 7.h3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bg4 Ne5 Bh5 h3")
+ ("D16p" "Slav: Bronstein, 6.Ne5 Bh5 7.g3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bg4 Ne5 Bh5 g3")
+ ("D16q" "Slav: Bronstein, 6.Ne5 Bh5 7.f3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bg4 Ne5 Bh5 f3")
+ ("D16r" "Slav: Bronstein, 6.Ne5 Bh5 7.f3 Nfd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bg4 Ne5 Bh5 f3 Nfd7")
+ ("D16s" "Slav: Bronstein, 6.Ne5 Bh5 7.f3 Nfd7 8.Nxc4 e5 9.Ne4" "d4 d5 c4 c6 
Nf3 Nf6 Nc3 dxc4 a4 Bg4 Ne5 Bh5 f3 Nfd7 Nxc4 e5 Ne4")
+ ("D17a" "Slav: Czech Defence" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5")
+ ("D17b" "Slav: Czech, 6.Nh4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Nh4")
+ ("D17c" "Slav: Czech, 6.Nh4 e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Nh4 e6")
+ ("D17d" "Slav: Czech, 6.Nh4 e6 7.Nxf5 exf5 8.e3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 Nh4 e6 Nxf5 exf5 e3")
+ ("D17e" "Slav: Czech, 6.Nh4 Bc8" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Nh4 
Bc8")
+ ("D17e" "Slav: Czech, 6.Nh4 Bc8 7.e3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Nh4 Bc8 e3")
+ ("D17f" "Slav: Central Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5")
+ ("D17g" "Slav: Central, 6.Ne5 Na6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5 
Na6")
+ ("D17g" "Slav: Central, 6.Ne5 Na6 7.f3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 Na6 f3")
+ ("D17h" "Slav: Central, 6.Ne5 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5 
Nbd7")
+ ("D17i" "Slav: Central, Carlsbad Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 Ne5 Nbd7 Nxc4 Qc7 g3 e5")
+ ("D17j" "Slav: Central, Carlsbad, Main Line" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 Ne5 Nbd7 Nxc4 Qc7 g3 e5 dxe5 Nxe5 Bf4 Nfd7 Bg2 f6")
+ ("D17k" "Slav: Central, 6.Ne5 e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5 
e6")
+ ("D17k" "Slav: Central, 6.Ne5 e6 7.f3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3")
+ ("D17l" "Slav: Central, Hübner (7...c5)" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3 c5")
+ ("D17m" "Slav: Central, 7.f3 Bb4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5 e6 
f3 Bb4")
+ ("D17m" "Slav: Central, 7.f3 Bb4 8.Bg5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3 Bb4 Bg5")
+ ("D17n" "Slav: Central, 7.f3 Bb4 8.Nxc4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3 Bb4 Nxc4")
+ ("D17o" "Slav: Central, 7.f3 Bb4 8.e4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3 Bb4 e4")
+ ("D17p" "Slav: Central, Piece-Sac Line" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
Ne5 e6 f3 Bb4 e4 Bxe4")
+ ("D17q" "Slav: Central, Main Line" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 Ne5 
e6 f3 Bb4 e4 Bxe4 fxe4 Nxe4 Bd2 Qxd4 Nxe4 Qxe4+ Qe2 Bxd2+ Kxd2")
+ ("D17r" "Slav: Central, Main Line, 15.Nxc4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 Ne5 e6 f3 Bb4 e4 Bxe4 fxe4 Nxe4 Bd2 Qxd4 Nxe4 Qxe4+ Qe2 Bxd2+ Kxd2 Qd5+ Kc2 
Na6 Nxc4")
+ ("D17s" "Slav: Central, Main Line, 15.Nxc4 O-O" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bf5 Ne5 e6 f3 Bb4 e4 Bxe4 fxe4 Nxe4 Bd2 Qxd4 Nxe4 Qxe4+ Qe2 Bxd2+ Kxd2 Qd5+ 
Kc2 Na6 Nxc4 O-O")
+ ("D17t" "Slav: Central, Main Line, 15.Nxc4 O-O-O" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 Ne5 e6 f3 Bb4 e4 Bxe4 fxe4 Nxe4 Bd2 Qxd4 Nxe4 Qxe4+ Qe2 Bxd2+ Kxd2 
Qd5+ Kc2 Na6 Nxc4 O-O-O")
+ ("D18a" "Slav: Dutch Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3")
+ ("D18b" "Slav: Dutch, Lasker Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 Na6")
+ ("D18c" "Slav: Dutch, 6...e6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6")
+ ("D18d" "Slav: Dutch, 6...e6 7.Bxc4 Bb4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4")
+ ("D18e" "Slav: Dutch, 8.O-O" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 
Bb4 O-O")
+ ("D18f" "Slav: Dutch, 8...Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 
Bxc4 Bb4 O-O Nbd7")
+ ("D18g" "Slav: Dutch, 8...Nbd7 9.Nh4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O Nbd7 Nh4")
+ ("D18h" "Slav: Dutch, 8...Nbd7 9.Nh4 Bg6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 e3 e6 Bxc4 Bb4 O-O Nbd7 Nh4 Bg6")
+ ("D18i" "Slav: Dutch, 8...Nbd7 9.Qb3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O Nbd7 Qb3")
+ ("D18j" "Slav: Dutch, 8...Nbd7 9.Qb3 a5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O Nbd7 Qb3 a5")
+ ("D18k" "Slav: Dutch, 8...Nbd7 9.Qe2" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O Nbd7 Qe2")
+ ("D18l" "Slav: Dutch, 8...Nbd7 9.Qe2 Bg6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 e3 e6 Bxc4 Bb4 O-O Nbd7 Qe2 Bg6")
+ ("D18m" "Slav: Dutch, 8...Nbd7 9.Qe2 Bg6 10.e4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bf5 e3 e6 Bxc4 Bb4 O-O Nbd7 Qe2 Bg6 e4")
+ ("D18n" "Slav: Dutch, 8...O-O" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 
Bxc4 Bb4 O-O O-O")
+ ("D18o" "Slav: Dutch, 8...O-O 9.Qb3" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O O-O Qb3")
+ ("D18p" "Slav: Dutch, 8...O-O 9.Nh4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O O-O Nh4")
+ ("D18p" "Slav: Dutch, 8...O-O 9.Nh4 Bg6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Nh4 Bg6")
+ ("D18q" "Slav: Dutch, 8...O-O 9.Nh4 Bg4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Nh4 Bg4")
+ ("D18r" "Slav: Dutch, 8...O-O 9.Nh4 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 e3 e6 Bxc4 Bb4 O-O O-O Nh4 Nbd7")
+ ("D18s" "Slav: Dutch, 8...O-O 9.Nh4 Nbd7 10.Nxf5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Nh4 Nbd7 Nxf5")
+ ("D18s" "Slav: Dutch, 8...O-O 9.Nh4 Nbd7 10.Nxf5 exf5" "d4 d5 c4 c6 Nf3 Nf6 
Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Nh4 Nbd7 Nxf5 exf5")
+ ("D18t" "Slav: Dutch, 8...O-O 9.Nh4 Nbd7 10.Nxf5 exf5 11.Qc2" "d4 d5 c4 c6 
Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Nh4 Nbd7 Nxf5 exf5 Qc2")
+ ("D19a" "Slav: Dutch, 8...O-O 9.Qe2" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 
e6 Bxc4 Bb4 O-O O-O Qe2")
+ ("D19b" "Slav: Dutch, 8...O-O 9.Qe2 Bg4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg4")
+ ("D19c" "Slav: Dutch, 8...O-O 9.Qe2 Bg6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6")
+ ("D19d" "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Rd1" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 Rd1")
+ ("D19d" "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Rd1 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 Rd1 Nbd7")
+ ("D19e" "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Ne5" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 Ne5")
+ ("D19e" "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Ne5 Nbd7, 12.Rd1" "d4 d5 c4 c6 Nf3 
Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 Ne5 Nbd7")
+ ("D19f" "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Ne5 Nbd7, 12.Rd1" "d4 d5 c4 c6 Nf3 
Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Bg6 Ne5 Nbd7 Nxg6 hxg6 Rd1")
+ ("D19g" "Slav: Dutch, 8...O-O 9.Qe2 Ne4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Qe2 Ne4")
+ ("D19g" "Slav: Dutch, Sämisch Variation" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 
e3 e6 Bxc4 Bb4 O-O O-O Qe2 Ne4 g4")
+ ("D19h" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 a4 
Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7")
+ ("D19i" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 dxc4 
a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4")
+ ("D19i" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg4" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg4")
+ ("D19j" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6" "d4 d5 c4 c6 Nf3 Nf6 Nc3 
dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6")
+ ("D19k" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3" "d4 d5 c4 c6 Nf3 
Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6 Bd3")
+ ("D19l" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 h6" "d4 d5 c4 c6 
Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6 Bd3 h6")
+ ("D19m" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Re8" "d4 d5 c4 c6 
Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6 Bd3 Re8")
+ ("D19n" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Bh5" "d4 d5 c4 c6 
Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6 Bd3 Bh5")
+ ("D19o" "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Bh5 12.e5" "d4 d5 
c4 c6 Nf3 Nf6 Nc3 dxc4 a4 Bf5 e3 e6 Bxc4 Bb4 O-O O-O Qe2 Nbd7 e4 Bg6 Bd3 Bh5 
e5")
+ ("D20a" "Queen's Gambit Accepted (QGA)" "d4 d5 c4 dxc4")
+ ("D20a" "QGA: 3.Qa4+" "d4 d5 c4 dxc4 Qa4+")
+ ("D20b" "QGA: 3.e3" "d4 d5 c4 dxc4 e3")
+ ("D20c" "QGA: 3.e3 c5" "d4 d5 c4 dxc4 e3 c5")
+ ("D20c" "QGA: 3.e3 c5 4.Bxc4" "d4 d5 c4 dxc4 e3 c5 Bxc4")
+ ("D20c" "QGA: 3.e3 c5 4.Bxc4" "d4 d5 c4 dxc4 e3 c5 Bxc4 cxd4 exd4")
+ ("D20d" "QGA: 3.e3 e6" "d4 d5 c4 dxc4 e3 e6")
+ ("D20d" "QGA: 3.e3 e6" "d4 d5 c4 dxc4 e3 e6 Bxc4 Nf6")
+ ("D20e" "QGA: 3.e3 e5" "d4 d5 c4 dxc4 e3 e5")
+ ("D20e" "QGA: 3.e3 e5" "d4 d5 c4 dxc4 e3 e5 Bxc4 exd4 exd4")
+ ("D20f" "QGA: 3.e3 e5" "d4 d5 c4 dxc4 e3 e5 Bxc4 exd4 exd4 Bb4+")
+ ("D20f" "QGA: 3.e3 e5" "d4 d5 c4 dxc4 e3 e5 Bxc4 exd4 exd4 Bb4+ Nc3 Nf6")
+ ("D20g" "QGA: 3.e3 e5" "d4 d5 c4 dxc4 e3 e5 Bxc4 exd4 exd4 Nf6")
+ ("D20h" "QGA: 3.e3 Nf6" "d4 d5 c4 dxc4 e3 Nf6")
+ ("D20i" "QGA: 3.Nc3" "d4 d5 c4 dxc4 Nc3")
+ ("D20i" "QGA: 3.Nc3 c5" "d4 d5 c4 dxc4 Nc3 c5")
+ ("D20i" "QGA: 3.Nc3 e5" "d4 d5 c4 dxc4 Nc3 e5")
+ ("D20i" "QGA: 3.Nc3 Nf6" "d4 d5 c4 dxc4 Nc3 Nf6")
+ ("D20j" "QGA: 3.Nc3 e6" "d4 d5 c4 dxc4 Nc3 e6")
+ ("D20j" "QGA: 3.Nc3 e6 4.e4" "d4 d5 c4 dxc4 Nc3 e6 e4")
+ ("D20k" "QGA: 3.Nc3 a6" "d4 d5 c4 dxc4 Nc3 a6")
+ ("D20k" "QGA: 3.Nc3 a6 4.a4" "d4 d5 c4 dxc4 Nc3 a6 a4")
+ ("D20l" "QGA: 3.e4" "d4 d5 c4 dxc4 e4")
+ ("D20l" "QGA: 3.e4, Schwartz Defence" "d4 d5 c4 dxc4 e4 f5")
+ ("D20m" "QGA: 3.e4 Nc6" "d4 d5 c4 dxc4 e4 Nc6")
+ ("D20m" "QGA: 3.e4 Nc6 4.Nf3" "d4 d5 c4 dxc4 e4 Nc6 Nf3")
+ ("D20n" "QGA: 3.e4 Nc6 4.Be3" "d4 d5 c4 dxc4 e4 Nc6 Be3")
+ ("D20o" "QGA: 3.e4 Nf6" "d4 d5 c4 dxc4 e4 Nf6")
+ ("D20o" "QGA: 3.e4 Nf6 4.Nc3" "d4 d5 c4 dxc4 e4 Nf6 Nc3")
+ ("D20o" "QGA: 3.e4 Nf6 4.e5" "d4 d5 c4 dxc4 e4 Nf6 e5")
+ ("D20o" "QGA: 3.e4 Nf6 4.e5 Nd5" "d4 d5 c4 dxc4 e4 Nf6 e5 Nd5")
+ ("D20p" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6" "d4 d5 c4 dxc4 e4 Nf6 e5 Nd5 Bxc4 
Nb6")
+ ("D20p" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bd3" "d4 d5 c4 dxc4 e4 Nf6 e5 
Nd5 Bxc4 Nb6 Bd3")
+ ("D20p" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bd3" "d4 d5 c4 dxc4 e4 Nf6 e5 
Nd5 Bxc4 Nb6 Bd3 Nc6")
+ ("D20q" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bb3" "d4 d5 c4 dxc4 e4 Nf6 e5 
Nd5 Bxc4 Nb6 Bb3")
+ ("D20q" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bb3" "d4 d5 c4 dxc4 e4 Nf6 e5 
Nd5 Bxc4 Nb6 Bb3 Nc6")
+ ("D20r" "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bb3 Nc6 7.Ne2" "d4 d5 c4 dxc4 e4 
Nf6 e5 Nd5 Bxc4 Nb6 Bb3 Nc6 Ne2")
+ ("D20s" "QGA: 3.e4 c5" "d4 d5 c4 dxc4 e4 c5")
+ ("D20s" "QGA: 3.e4 c5" "d4 d5 c4 dxc4 e4 c5 Nf3")
+ ("D20t" "QGA: 3.e4 c5 4.d5" "d4 d5 c4 dxc4 e4 c5 d5")
+ ("D20u" "QGA: Linares Variation" "d4 d5 c4 dxc4 e4 c5 d5 Nf6 Nc3 b5")
+ ("D20v" "QGA: 3.e4 e5" "d4 d5 c4 dxc4 e4 e5")
+ ("D20w" "QGA: 3.e4 e5 4.Nf3 Bb4+" "d4 d5 c4 dxc4 e4 e5 Nf3 Bb4+")
+ ("D20x" "QGA: 3.e4 e5 4.Nf3 exd4" "d4 d5 c4 dxc4 e4 e5 Nf3 exd4")
+ ("D20y" "QGA: 3.e4 e5 4.Nf3 exd4 5.Bxc4 Nc6" "d4 d5 c4 dxc4 e4 e5 Nf3 exd4 
Bxc4 Nc6")
+ ("D21a" "QGA: 3.Nf3" "d4 d5 c4 dxc4 Nf3")
+ ("D21a" "QGA: Ericson Variation" "d4 d5 c4 dxc4 Nf3 b5")
+ ("D21b" "QGA: 3.Nf3 Nd7" "d4 d5 c4 dxc4 Nf3 Nd7")
+ ("D21c" "QGA: 3.Nf3 Bg4" "d4 d5 c4 dxc4 Nf3 Bg4")
+ ("D21d" "QGA: 3.Nf3 e6" "d4 d5 c4 dxc4 Nf3 e6")
+ ("D21e" "QGA: 3.Nf3 e6 4.Qa4+" "d4 d5 c4 dxc4 Nf3 e6 Qa4+")
+ ("D21f" "QGA: 3.Nf3 e6 4.e4" "d4 d5 c4 dxc4 Nf3 e6 e4")
+ ("D21g" "QGA: 3.Nf3 e6 4.e3" "d4 d5 c4 dxc4 Nf3 e6 e3")
+ ("D21g" "QGA: 3.Nf3 e6 4.e3 c5" "d4 d5 c4 dxc4 Nf3 e6 e3 c5")
+ ("D21h" "QGA: 3.Nf3 c5" "d4 d5 c4 dxc4 Nf3 c5")
+ ("D21i" "QGA: 3.Nf3 c5 4.Nc3" "d4 d5 c4 dxc4 Nf3 c5 Nc3")
+ ("D21j" "QGA: 3.Nf3 c5 4.e3" "d4 d5 c4 dxc4 Nf3 c5 e3")
+ ("D21j" "QGA: 3.Nf3 c5 4.e3 cxd4" "d4 d5 c4 dxc4 Nf3 c5 e3 cxd4")
+ ("D21k" "QGA: 3.Nf3 c5 4.e3 cxd4 5.Bxc4" "d4 d5 c4 dxc4 Nf3 c5 e3 cxd4 Bxc4")
+ ("D21l" "QGA: 3.Nf3 c5 4.d5" "d4 d5 c4 dxc4 Nf3 c5 d5")
+ ("D21m" "QGA: 3.Nf3 c5 4.d5 e6" "d4 d5 c4 dxc4 Nf3 c5 d5 e6")
+ ("D21m" "QGA: 3.Nf3 c5 4.d5 e6 5.e4" "d4 d5 c4 dxc4 Nf3 c5 d5 e6 e4")
+ ("D21n" "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3" "d4 d5 c4 dxc4 Nf3 c5 d5 e6 Nc3")
+ ("D21o" "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5" "d4 d5 c4 dxc4 Nf3 c5 d5 e6 Nc3 
exd5")
+ ("D21p" "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5" "d4 d5 c4 dxc4 
Nf3 c5 d5 e6 Nc3 exd5 Qxd5 Qxd5 Nxd5")
+ ("D21q" "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5 Bd6" "d4 d5 c4 
dxc4 Nf3 c5 d5 e6 Nc3 exd5 Qxd5 Qxd5 Nxd5 Bd6")
+ ("D21r" "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5 Bd6 8.Nd2" "d4 
d5 c4 dxc4 Nf3 c5 d5 e6 Nc3 exd5 Qxd5 Qxd5 Nxd5 Bd6 Nd2")
+ ("D21s" "QGA: Seirawan Variation" "d4 d5 c4 dxc4 Nf3 c5 d5 e6 Nc3 exd5 Qxd5 
Qxd5 Nxd5 Bd6 Nd2 Ne7")
+ ("D21t" "QGA: Alekhine Defence" "d4 d5 c4 dxc4 Nf3 a6")
+ ("D21u" "QGA: Alekhine, Borisenko-Furman Variation" "d4 d5 c4 dxc4 Nf3 a6 e4")
+ ("D21v" "QGA: Alekhine, 4.a4" "d4 d5 c4 dxc4 Nf3 a6 a4")
+ ("D22a" "QGA: Alekhine, 4.e3" "d4 d5 c4 dxc4 Nf3 a6 e3")
+ ("D22b" "QGA: Alekhine, Haberditz Variation" "d4 d5 c4 dxc4 Nf3 a6 e3 b5")
+ ("D22c" "QGA: Alekhine, 4.e3 e6" "d4 d5 c4 dxc4 Nf3 a6 e3 e6")
+ ("D22d" "QGA: Alekhine, 4.e3 e6 5.Bxc4" "d4 d5 c4 dxc4 Nf3 a6 e3 e6 Bxc4")
+ ("D22e" "QGA: Alekhine, 4.e3 e6 5.Bxc4 c5" "d4 d5 c4 dxc4 Nf3 a6 e3 e6 Bxc4 
c5")
+ ("D22f" "QGA: Alekhine, 4.e3 e6 5.Bxc4 c5 6.Qe2" "d4 d5 c4 dxc4 Nf3 a6 e3 e6 
Bxc4 c5 Qe2")
+ ("D22g" "QGA: Alekhine, 4.e3 Bg4" "d4 d5 c4 dxc4 Nf3 a6 e3 Bg4")
+ ("D22h" "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6" "d4 d5 c4 dxc4 Nf3 a6 e3 Bg4 Bxc4 
e6")
+ ("D22i" "QGA: Alekhine, Alatortsev Variation" "d4 d5 c4 dxc4 Nf3 a6 e3 Bg4 
Bxc4 e6 d5")
+ ("D22j" "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.Qb3" "d4 d5 c4 dxc4 Nf3 a6 e3 
Bg4 Bxc4 e6 Qb3")
+ ("D22k" "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.Nc3" "d4 d5 c4 dxc4 Nf3 a6 e3 
Bg4 Bxc4 e6 Nc3")
+ ("D22l" "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.h3" "d4 d5 c4 dxc4 Nf3 a6 e3 Bg4 
Bxc4 e6 h3")
+ ("D23a" "QGA: 3.Nf3 Nf6" "d4 d5 c4 dxc4 Nf3 Nf6")
+ ("D23b" "QGA: 3.Nf3 Nf6 4.g3" "d4 d5 c4 dxc4 Nf3 Nf6 g3")
+ ("D23c" "QGA: Mannheim Variation" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+")
+ ("D23d" "QGA: Mannheim, 4...Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ Nc6")
+ ("D23e" "QGA: Mannheim, 4...Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ Nc6 Nc3")
+ ("D23f" "QGA: Mannheim, 4...Nbd7" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ Nbd7")
+ ("D23g" "QGA: Mannheim, 4...Nbd7 5.Nc3 e6" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ Nbd7 
Nc3 e6")
+ ("D23h" "QGA: Mannheim, 4...Nbd7 5.Nc3 e6 6.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ 
Nbd7 Nc3 e6 e4")
+ ("D23i" "QGA: Mannheim, 4...c6" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6")
+ ("D23i" "QGA: Mannheim, 4...c6 5.Qxc4" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 Qxc4")
+ ("D23j" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 
Qxc4 Bf5")
+ ("D23k" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ 
c6 Qxc4 Bf5 Nc3")
+ ("D23l" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ 
c6 Qxc4 Bf5 g3")
+ ("D23m" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3 e6" "d4 d5 c4 dxc4 Nf3 Nf6 
Qa4+ c6 Qxc4 Bf5 g3 e6")
+ ("D23m" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3 e6 7.Bg2" "d4 d5 c4 dxc4 Nf3 
Nf6 Qa4+ c6 Qxc4 Bf5 g3 e6 Bg2")
+ ("D23n" "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3 e6 7.Bg2 Nbd7" "d4 d5 c4 dxc4 
Nf3 Nf6 Qa4+ c6 Qxc4 Bf5 g3 e6 Bg2 Nbd7")
+ ("D23o" "QGA: Mannheim, Main Line" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 Qxc4 Bf5 g3 
e6 Bg2 Nbd7 O-O Be7 Nc3")
+ ("D23p" "QGA: Mannheim, Main Line, 9...O-O" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 
Qxc4 Bf5 g3 e6 Bg2 Nbd7 O-O Be7 Nc3 O-O")
+ ("D23q" "QGA: Mannheim, Main Line, 10.Bg5" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 
Qxc4 Bf5 g3 e6 Bg2 Nbd7 O-O Be7 Nc3 O-O Bg5")
+ ("D23r" "QGA: Mannheim, Main Line, 10.e3" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 Qxc4 
Bf5 g3 e6 Bg2 Nbd7 O-O Be7 Nc3 O-O e3")
+ ("D23s" "QGA: Mannheim, Main Line, 10.e3 Ne4" "d4 d5 c4 dxc4 Nf3 Nf6 Qa4+ c6 
Qxc4 Bf5 g3 e6 Bg2 Nbd7 O-O Be7 Nc3 O-O e3 Ne4")
+ ("D23t" "QGA: Mannheim, Main Line, 10.e3 Ne4 11.Qe2" "d4 d5 c4 dxc4 Nf3 Nf6 
Qa4+ c6 Qxc4 Bf5 g3 e6 Bg2 Nbd7 O-O Be7 Nc3 O-O e3 Ne4 Qe2")
+ ("D24a" "QGA: 4.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3")
+ ("D24a" "QGA: 4.Nc3 Nd5" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 Nd5")
+ ("D24b" "QGA: 4.Nc3 e6" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 e6")
+ ("D24b" "QGA: 4.Nc3 e6 5.Bg5" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 e6 Bg5")
+ ("D24b" "QGA: 4.Nc3 e6 5.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 e6 e4")
+ ("D24c" "QGA: 4.Nc3 e6 5.e3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 e6 e3")
+ ("D24d" "QGA: 4.Nc3 c5" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5")
+ ("D24e" "QGA: 4.Nc3 c5 5.d5" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5 d5")
+ ("D24f" "QGA: 4.Nc3 c5 5.d5 e6 6.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5 d5 e6 e4")
+ ("D24g" "QGA: 4.Nc3 c5 5.d5 e6 6.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5 d5 e6 e4 
exd5 e5 Nfd7")
+ ("D24g" "QGA: 4.Nc3 c5 5.d5 e6 6.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5 d5 e6 e4 
exd5 e5 Nfd7 Bg5")
+ ("D24g" "QGA: 4.Nc3 c5 5.d5 e6 6.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 c5 d5 e6 e4 
exd5 e5 Nfd7 Bg5 Be7")
+ ("D24h" "QGA: 4.Nc3 a6" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6")
+ ("D24i" "QGA: 4.Nc3 a6 5.a4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 a4")
+ ("D24j" "QGA: 4.Nc3 a6 5.a4 Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 a4 Nc6")
+ ("D24j" "QGA: 4.Nc3 a6 5.a4 Nc6 5.e4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 a4 Nc6 
e4")
+ ("D24k" "QGA: Bogoljubow" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4")
+ ("D24l" "QGA: Bogoljubow, 7.a4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 Nd5 
a4")
+ ("D24m" "QGA: Bogoljubow, 7.a4 e6" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 Nd5 
a4 e6")
+ ("D24n" "QGA: Bogoljubow, 7.a4 c6" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 Nd5 
a4 c6")
+ ("D24o" "QGA: Bogoljubow, 7.a4 Bb7" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Bb7")
+ ("D24p" "QGA: Bogoljubow, 7.a4 Nb4" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Nb4")
+ ("D24q" "QGA: Bogoljubow, 7.a4 Nxc3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Nxc3")
+ ("D24r" "QGA: Bogoljubow, 7.a4 Nxc3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Nxc3 bxc3 Bb7")
+ ("D24s" "QGA: Bogoljubow, 7.a4 Nxc3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Nxc3 bxc3 Qd5")
+ ("D24t" "QGA: Bogoljubow, 7.a4 Nxc3" "d4 d5 c4 dxc4 Nf3 Nf6 Nc3 a6 e4 b5 e5 
Nd5 a4 Nxc3 bxc3 Qd5 g3 Bb7")
+ ("D25a" "QGA: 4.e3" "d4 d5 c4 dxc4 Nf3 Nf6 e3")
+ ("D25b" "QGA: 4.e3 c5" "d4 d5 c4 dxc4 Nf3 Nf6 e3 c5")
+ ("D25c" "QGA: 4.e3 a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 a6")
+ ("D25d" "QGA: Smyslov Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 g6")
+ ("D25d" "QGA: Smyslov, 5.Bxc4 Bg7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 g6 Bxc4 Bg7")
+ ("D25d" "QGA: Smyslov, 5.Bxc4 Bg7 6.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 g6 Bxc4 
Bg7 Nc3")
+ ("D25e" "QGA: Smyslov, 5.Bxc4 Bg7 6.O-O" "d4 d5 c4 dxc4 Nf3 Nf6 e3 g6 Bxc4 
Bg7 O-O")
+ ("D25e" "QGA: Smyslov, 5.Bxc4 Bg7 6.O-O O-O" "d4 d5 c4 dxc4 Nf3 Nf6 e3 g6 
Bxc4 Bg7 O-O O-O")
+ ("D25e" "QGA: Smyslov, 5.Bxc4 Bg7 6.O-O O-O 7.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
g6 Bxc4 Bg7 O-O O-O Nc3")
+ ("D25f" "QGA: Flohr Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Be6")
+ ("D25f" "QGA: Flohr, 5.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Be6 Nc3")
+ ("D25f" "QGA: Flohr, 5.Nc3 c6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Be6 Nc3 c6")
+ ("D25g" "QGA: Janowski-Larsen Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4")
+ ("D25g" "QGA: Janowski-Larsen, 5.h3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 h3")
+ ("D25h" "QGA: Janowski-Larsen, 5.Bxc4 e6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 Bxc4 
e6")
+ ("D25i" "QGA: Janowski-Larsen, 6.Qb3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 
Qb3")
+ ("D25j" "QGA: Janowski-Larsen, 6.O-O" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 
O-O")
+ ("D25k" "QGA: Janowski-Larsen, 6.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 
Nc3")
+ ("D25l" "QGA: Janowski-Larsen, 6.h3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 
h3")
+ ("D25m" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 Bg4 
Bxc4 e6 h3 Bh5 Nc3")
+ ("D25n" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
Bg4 Bxc4 e6 h3 Bh5 Nc3 a6")
+ ("D25o" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 a6 8.g4" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 Bg4 Bxc4 e6 h3 Bh5 Nc3 a6 g4")
+ ("D25p" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
Bg4 Bxc4 e6 h3 Bh5 Nc3 Nbd7")
+ ("D25q" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 Bg4 Bxc4 e6 h3 Bh5 Nc3 Nbd7 O-O")
+ ("D25r" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O Bd6" "d4 d5 c4 dxc4 
Nf3 Nf6 e3 Bg4 Bxc4 e6 h3 Bh5 Nc3 Nbd7 O-O Bd6")
+ ("D25r" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O Bd6 9.Be2" "d4 d5 c4 
dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 h3 Bh5 Nc3 Nbd7 O-O Bd6 Be2")
+ ("D25s" "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O Bd6 9.e4" "d4 d5 c4 
dxc4 Nf3 Nf6 e3 Bg4 Bxc4 e6 h3 Bh5 Nc3 Nbd7 O-O Bd6 e4")
+ ("D26a" "QGA: 4.e3 e6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6")
+ ("D26b" "QGA: 4.e3 e6 5.Bxc4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4")
+ ("D26c" "QGA: 4.e3 e6 5.Bxc4 a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 a6")
+ ("D26d" "QGA: 4.e3 e6 5.Bxc4 a6 6.O-O" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 a6 
O-O")
+ ("D26e" "QGA: 4.e3 e6 5.Bxc4 a6 6.O-O b5" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
a6 O-O b5")
+ ("D26f" "QGA: Classical Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5")
+ ("D26g" "QGA: Classical, Early Queenswap" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 dxc5")
+ ("D26h" "QGA: Classical, 6.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 Nc3")
+ ("D26i" "QGA: Classical, 6.Nc3 a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 Nc3 
a6")
+ ("D26j" "QGA: Classical, Furman Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 Qe2")
+ ("D26k" "QGA: Classical, Furman, 6...cxd4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 Qe2 cxd4")
+ ("D26l" "QGA: Classical, Furman, 6...a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
Qe2 a6")
+ ("D26m" "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 e6 Bxc4 c5 Qe2 a6 dxc5 Bxc5 O-O")
+ ("D26n" "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O Nc6" "d4 d5 c4 dxc4 
Nf3 Nf6 e3 e6 Bxc4 c5 Qe2 a6 dxc5 Bxc5 O-O Nc6")
+ ("D26o" "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O b5" "d4 d5 c4 dxc4 
Nf3 Nf6 e3 e6 Bxc4 c5 Qe2 a6 dxc5 Bxc5 O-O b5")
+ ("D26p" "QGA: Classical, 6.O-O" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O")
+ ("D26q" "QGA: Classical, Steinitz Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O cxd4")
+ ("D26r" "QGA: Classical, 6.O-O Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O 
Nc6")
+ ("D26s" "QGA: Classical, 6.O-O Nc6 7.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O Nc6 Nc3")
+ ("D26t" "QGA: Classical, 6.O-O Nc6 7.Qe2" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O Nc6 Qe2")
+ ("D27a" "QGA: Classical, 6...a6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6")
+ ("D27a" "QGA: Classical, 6...a6 7.a3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 a3")
+ ("D27b" "QGA: Classical, 6...a6 7.b3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 b3")
+ ("D27c" "QGA: Classical, 6...a6 7.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Nc3")
+ ("D27d" "QGA: Classical, 6...a6 7.Bd3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Bd3")
+ ("D27e" "QGA: Classical, 6...a6 7.Bd3 Nbd7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Bd3 Nbd7")
+ ("D27f" "QGA: Classical, 6...a6 7.Bb3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Bb3")
+ ("D27g" "QGA: Classical, 6...a6 7.Bb3 b5" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Bb3 b5")
+ ("D27h" "QGA: Classical, 6...a6 7.Bb3 cxd4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Bb3 cxd4")
+ ("D27i" "QGA: Classical, 6...a6 7.Bb3 Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Bb3 Nc6")
+ ("D27j" "QGA: Classical, 6...a6 7.Bb3 Nc6 8.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 Bb3 Nc6 Nc3")
+ ("D27k" "QGA: Classical, Geller Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 e4")
+ ("D27l" "QGA: Classical, Spassky Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 dxc5")
+ ("D27m" "QGA: Classical, Spassky, 7...Qxd1" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 dxc5 Qxd1")
+ ("D27n" "QGA: Classical, Spassky, 9.Nbd2" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 dxc5 Qxd1 Rxd1 Bxc5 Nbd2")
+ ("D27o" "QGA: Classical, Spassky, 9.b3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 dxc5 Qxd1 Rxd1 Bxc5 b3")
+ ("D27p" "QGA: Classical, Rubinstein Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 a4")
+ ("D27p" "QGA: Classical, Rubinstein, 7...Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 a4 Nc6")
+ ("D27q" "QGA: Classical, Rubinstein, 8.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 a4 Nc6 Nc3")
+ ("D27r" "QGA: Classical, Rubinstein, 8.Nc3 Be7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 a4 Nc6 Nc3 Be7")
+ ("D27s" "QGA: Classical, Rubinstein, 8.Nc3 Be7 9.Qe2" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 a4 Nc6 Nc3 Be7 Qe2")
+ ("D27t" "QGA: Classical, Rubinstein, 8.Qe2" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 a4 Nc6 Qe2")
+ ("D27u" "QGA: Classical, Rubinstein, 8.Qe2 Qc7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 a4 Nc6 Qe2 Qc7")
+ ("D27v" "QGA: Classical, Rubinstein, 8.Qe2 cxd4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 a4 Nc6 Qe2 cxd4")
+ ("D27v" "QGA: Classical, Rubinstein, 8.Qe2 cxd4, 11.Nc3" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 e6 Bxc4 c5 O-O a6 a4 Nc6 Qe2 cxd4 Rd1 Be7 exd4 O-O Nc3")
+ ("D27w" "QGA: Classical, Rubinstein, 8.Qe2 cxd4, 11.Nc3 Nd5" "d4 d5 c4 dxc4 
Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 a4 Nc6 Qe2 cxd4 Rd1 Be7 exd4 O-O Nc3 Nd5")
+ ("D28a" "QGA: Classical, 7.Qe2" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 
Qe2")
+ ("D28b" "QGA: Classical, 7.Qe2 cxd4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O 
a6 Qe2 cxd4")
+ ("D28c" "QGA: Classical, 7.Qe2 Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O 
a6 Qe2 Nc6")
+ ("D28d" "QGA: Classical, 7.Qe2 b5" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O 
a6 Qe2 b5")
+ ("D28e" "QGA: Classical, 7.Qe2 b5 8.Bd3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Qe2 b5 Bd3")
+ ("D28f" "QGA: Classical, 7.Qe2 b5 8.Bd3 cxd4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 Qe2 b5 Bd3 cxd4")
+ ("D28g" "QGA: Classical, 7.Qe2 b5 8.Bd3 cxd4 9.exd4" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bd3 cxd4 exd4")
+ ("D28h" "QGA: Classical, 7.Qe2 b5 8.Bb3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Qe2 b5 Bb3")
+ ("D28i" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6")
+ ("D28j" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Rd1" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6 Rd1")
+ ("D28k" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Rd1 c4" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6 Rd1 c4")
+ ("D28l" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6 Nc3")
+ ("D28m" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3 Bb7" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6 Nc3 Bb7")
+ ("D28n" "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3 Be7" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Nc6 Nc3 Be7")
+ ("D29a" "QGA: Classical, 8...Bb7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 O-O a6 
Qe2 b5 Bb3 Bb7")
+ ("D29b" "QGA: Classical, 8...Bb7 9.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Qe2 b5 Bb3 Bb7 Nc3")
+ ("D29c" "QGA: Classical, 8...Bb7 9.a4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Qe2 b5 Bb3 Bb7 a4")
+ ("D29d" "QGA: Classical, 8...Bb7 9.a4 b4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Qe2 b5 Bb3 Bb7 a4 b4")
+ ("D29e" "QGA: Classical, 8...Bb7 9.a4 Nbd7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Qe2 b5 Bb3 Bb7 a4 Nbd7")
+ ("D29f" "QGA: Classical, 8...Bb7 9.Rd1" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 c5 
O-O a6 Qe2 b5 Bb3 Bb7 Rd1")
+ ("D29g" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 
Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7")
+ ("D29g" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.e4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 e4")
+ ("D29h" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.a4" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 a4")
+ ("D29i" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.a4 b4" "d4 d5 c4 dxc4 Nf3 Nf6 
e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 a4 b4")
+ ("D29j" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3" "d4 d5 c4 dxc4 Nf3 Nf6 e3 
e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 Nc3")
+ ("D29k" "QGA: Classical, Smyslov Variation" "d4 d5 c4 dxc4 Nf3 Nf6 e3 e6 Bxc4 
c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 Nc3 Bd6")
+ ("D29l" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qc7" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 Nc3 Qc7")
+ ("D29m" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qb8" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 Nc3 Qb8")
+ ("D29n" "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qb6" "d4 d5 c4 dxc4 Nf3 
Nf6 e3 e6 Bxc4 c5 O-O a6 Qe2 b5 Bb3 Bb7 Rd1 Nbd7 Nc3 Qb6")
+ ("D30a" "Queen's Gambit Declined (QGD)" "d4 d5 c4 e6")
+ ("D30a" "QGD: 3.e3" "d4 d5 c4 e6 e3")
+ ("D30b" "Diemer-Duhm Gambit (DDG)" "d4 d5 c4 e6 e4")
+ ("D30b" "Diemer-Duhm Gambit (DDG) Accepted" "d4 d5 c4 e6 e4 dxe4")
+ ("D30b" "Diemer-Duhm Gambit (DDG): 4...f5" "e4 e6 d4 d5 c4 dxe4 Nc3 f5")
+ ("D30b" "Diemer-Duhm Gambit (DDG): Alapin Variation" "e4 e6 d4 d5 c4 dxe4 Nc3 
Nf6 Be3")
+ ("D30b" "Diemer-Duhm Gambit (DDG): Duhm Variation" "e4 e6 d4 d5 c4 dxe4 Nc3 
Nf6 a3")
+ ("D30b" "Diemer-Duhm Gambit (DDG): 5.f3" "e4 e6 d4 d5 c4 dxe4 Nc3 Nf6 f3")
+ ("D30b" "Diemer-Duhm Gambit (DDG): Exchange Variation" "e4 e6 d4 d5 c4 dxe4 
Nc3 Nf6 f3 exf3")
+ ("D30b" "Diemer-Duhm Gambit (DDG): Keres Defence" "e4 e6 d4 d5 c4 dxe4 Nc3 
Nf6 f3 c5")
+ ("D30b" "Diemer-Duhm Gambit (DDG): Main Line" "e4 e6 d4 d5 c4 dxe4 Nc3 Nf6 f3 
Bb4")
+ ("D30c" "QGD: 3.g3" "d4 d5 c4 e6 g3")
+ ("D30d" "QGD: 3.cxd5" "d4 d5 c4 e6 cxd5")
+ ("D30d" "QGD: 3.cxd5" "d4 d5 c4 e6 cxd5 exd5")
+ ("D30d" "QGD: 3.cxd5" "d4 d5 c4 e6 cxd5 exd5 Nc3")
+ ("D30e" "QGD: 3.Bf4" "d4 d5 c4 e6 Bf4")
+ ("D30f" "QGD: 3.Nf3" "d4 d5 c4 e6 Nf3")
+ ("D30g" "QGD: 3.Nf3 Nbd7 (Westphalia)" "d4 d5 c4 e6 Nf3 Nbd7")
+ ("D30h" "QGD: Tarrasch without Nc3" "d4 d5 c4 e6 Nf3 c5")
+ ("D30h" "QGD: Tarrasch without Nc3: 4.e3" "d4 d5 c4 e6 Nf3 c5 e3")
+ ("D30h" "QGD: Tarrasch without Nc3: 4.e3 Nf6" "d4 d5 c4 e6 Nf3 c5 e3 Nf6")
+ ("D30h" "QGD: Tarrasch without Nc3" "d4 d5 c4 e6 Nf3 c5 cxd5")
+ ("D30h" "QGD: Tarrasch without Nc3" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5 g3")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5 g3 
Nf6")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5 g3 
Nf6 Bg2")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3 Nc6" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5 
g3 Nc6")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3 Nc6 6.Bg2" "d4 d5 c4 e6 Nf3 c5 cxd5 
exd5 g3 Nc6 Bg2")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3 Nc6 6.Bg2 Nf6" "d4 d5 c4 e6 Nf3 c5 
cxd5 exd5 g3 Nc6 Bg2 Nf6")
+ ("D30i" "QGD: Tarrasch without Nc3: 5.g3 Nc6 6.Bg2 Nf6 7.O-O" "d4 d5 c4 e6 
Nf3 c5 cxd5 exd5 g3 Nc6 Bg2 Nf6 O-O")
+ ("D30i" "QGD: Tarrasch without Nc3: Main Line" "d4 d5 c4 e6 Nf3 c5 cxd5 exd5 
g3 Nc6 Bg2 Nf6 O-O Be7")
+ ("D30j" "QGD: 3.Nf3 c6" "d4 d5 c4 e6 Nf3 c6")
+ ("D30k" "QGD: 3.Nf3 c6 4.e3" "d4 d5 c4 e6 Nf3 c6 e3")
+ ("D30l" "QGD: 3.Nf3 c6 4.Nbd2" "d4 d5 c4 e6 Nf3 c6 Nbd2")
+ ("D30m" "QGD: 3.Nf3 c6 4.Qc2" "d4 d5 c4 e6 Nf3 c6 Qc2")
+ ("D30n" "QGD: 3.Nf3 c6 4.Qc2 Nf6" "d4 d5 c4 e6 Nf3 c6 Qc2 Nf6")
+ ("D30o" "QGD: 3.Nf3 c6 4.Qc2 Nf6 5.Bg5" "d4 d5 c4 e6 Nf3 c6 Qc2 Nf6 Bg5")
+ ("D30p" "QGD: 3.Nf3 c6 4.Qc2 Nf6 5.g3" "d4 d5 c4 e6 Nf3 c6 Qc2 Nf6 g3")
+ ("D30q" "QGD: 3.Nf3 Nf6" "d4 d5 c4 e6 Nf3 Nf6")
+ ("D30r" "QGD: 3.Nf3 Nf6 4.e3" "d4 d5 c4 e6 Nf3 Nf6 e3")
+ ("D30s" "QGD: 3.Nf3 Nf6 4.e3 c6" "d4 d5 c4 e6 Nf3 Nf6 e3 c6")
+ ("D30t" "QGD: 3.Nf3 Nf6 4.e3 c6 5.Nbd2" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 Nbd2")
+ ("D30t" "QGD: Spielmann Variation" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 Nbd2 g6")
+ ("D30t" "QGD: Stonewall Formation" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 Nbd2 Ne4 Bd3 
f5")
+ ("D30t" "QGD: 3.Nf3 Nf6 4.e3 c6 5.Nbd2 Nbd7" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 Nbd2 
Nbd7")
+ ("D30u" "QGD: 3.Nf3 Nf6 4.e3 c6 5.Nbd2 Nbd7 6.Bd3" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 
Nbd2 Nbd7 Bd3")
+ ("D30u" "QGD: Semmering Variation" "d4 d5 c4 e6 Nf3 Nf6 e3 c6 Nbd2 Nbd7 Bd3 
c5")
+ ("D30v" "QGD: 3.Nf3 Nf6 4.Bg5" "d4 d5 c4 e6 Nf3 Nf6 Bg5")
+ ("D30v" "QGD: 3.Nf3 Nf6 4.Bg5 dxc4" "d4 d5 c4 e6 Nf3 Nf6 Bg5 dxc4")
+ ("D30v" "QGD: Vienna Variation" "d4 d5 c4 e6 Nf3 Nf6 Bg5 Bb4+")
+ ("D30v" "QGD: 3.Nf3 Nf6 4.Bg5 Nbd7" "d4 d5 c4 e6 Nf3 Nf6 Bg5 Nbd7")
+ ("D30v" "QGD: 3.Nf3 Nf6 4.Bg5, Capablanca Variation" "d4 d5 c4 e6 Nf3 Nf6 Bg5 
Nbd7 e3 c6 Nbd2")
+ ("D30w" "QGD: Capablanca-Duras Variation" "d4 d5 c4 e6 Nf3 Nf6 Bg5 h6")
+ ("D30x" "QGD: 3.Nf3 Nf6 4.Bg5 Be7" "d4 d5 c4 e6 Nf3 Nf6 Bg5 Be7")
+ ("D30x" "QGD: 3.Nf3 Nf6 4.Bg5 Be7 5.e3" "d4 d5 c4 e6 Nf3 Nf6 Bg5 Be7 e3")
+ ("D31a" "QGD: 3.Nc3" "d4 d5 c4 e6 Nc3")
+ ("D31a" "QGD: 3.Nc3 Nc6" "d4 d5 c4 e6 Nc3 Nc6")
+ ("D31a" "QGD: Alapin Variation" "d4 d5 c4 e6 Nc3 b6")
+ ("D31b" "QGD: Janowski Variation" "d4 d5 c4 e6 Nc3 a6")
+ ("D31c" "QGD: 3.Nc3 Bb4" "d4 d5 c4 e6 Nc3 Bb4")
+ ("D31c" "QGD: 3.Nc3 Bb4 4.a3" "d4 d5 c4 e6 Nc3 Bb4 a3")
+ ("D31d" "QGD: Alatortsev Variation" "d4 d5 c4 e6 Nc3 Be7")
+ ("D31d" "QGD: Alatortsev, 4.Nf3" "d4 d5 c4 e6 Nc3 Be7 Nf3")
+ ("D31d" "QGD: Alatortsev, 4.Bf4" "d4 d5 c4 e6 Nc3 Be7 Bf4")
+ ("D31e" "QGD: Alatortsev, Exchange" "d4 d5 c4 e6 Nc3 Be7 cxd5")
+ ("D31e" "QGD: Alatortsev, Exchange" "d4 d5 c4 e6 Nc3 Be7 cxd5 exd5")
+ ("D31e" "QGD: Alatortsev, 5.Bf4" "d4 d5 c4 e6 Nc3 Be7 cxd5 exd5 Bf4")
+ ("D31f" "QGD: Alatortsev, 5.Bf4 c6" "d4 d5 c4 e6 Nc3 Be7 cxd5 exd5 Bf4 c6")
+ ("D31g" "QGD: Alatortsev, 5.Bf4 c6 6.e3 Bf5" "d4 d5 c4 e6 Nc3 Be7 cxd5 exd5 
Bf4 c6 e3 Bf5")
+ ("D31h" "QGD: Alatortsev, 5.Bf4 c6 6.e3 Bf5 7.g4" "d4 d5 c4 e6 Nc3 Be7 cxd5 
exd5 Bf4 c6 e3 Bf5 g4")
+ ("D31i" "Semi-Slav" "d4 d5 c4 e6 Nc3 c6")
+ ("D31j" "Semi-Slav: 4.cxd5" "d4 d5 c4 e6 Nc3 c6 cxd5")
+ ("D31j" "Semi-Slav: 4.cxd5" "d4 d5 c4 e6 Nc3 c6 cxd5 exd5")
+ ("D31k" "Semi-Slav: 4.cxd5 exd5 5.Nf3" "d4 d5 c4 e6 Nc3 c6 cxd5 exd5 Nf3")
+ ("D31l" "Semi-Slav: 4.cxd5 exd5 5.Nf3 Bf5" "d4 d5 c4 e6 Nc3 c6 cxd5 exd5 Nf3 
Bf5")
+ ("D31m" "Semi-Slav: 4.cxd5 exd5 5.Bf4" "d4 d5 c4 e6 Nc3 c6 cxd5 exd5 Bf4")
+ ("D31n" "Semi-Slav: 4.e3" "d4 d5 c4 e6 Nc3 c6 e3")
+ ("D31o" "Semi-Slav: 4.e3 Nf6" "d4 d5 c4 e6 Nc3 c6 e3 Nf6")
+ ("D31p" "Semi-Slav: 4.Nf3" "d4 d5 c4 e6 Nc3 c6 Nf3")
+ ("D31q" "Semi-Slav: Noteboom Variation" "d4 d5 c4 e6 Nc3 c6 Nf3 dxc4")
+ ("D31r" "Semi-Slav: Noteboom, 5.a4" "d4 d5 c4 e6 Nc3 c6 Nf3 dxc4 a4")
+ ("D31s" "Semi-Slav: Noteboom, 5.a4 Bb4 6.e3 b5" "d4 d5 c4 e6 Nc3 c6 Nf3 dxc4 
a4 Bb4 e3 b5")
+ ("D31s" "Semi-Slav: Noteboom, Koomen Variation" "d4 d5 c4 e6 Nc3 c6 Nf3 dxc4 
a4 Bb4 e3 b5 Bd2 Qe7")
+ ("D31s" "Semi-Slav: Noteboom, Junge Variation" "d4 d5 c4 e6 Nc3 c6 Nf3 dxc4 
a4 Bb4 e3 b5 Bd2 Qb6")
+ ("D31t" "Semi-Slav: Noteboom, Abrahams Variation" "d4 d5 c4 e6 Nc3 c6 Nf3 
dxc4 a4 Bb4 e3 b5 Bd2 a5")
+ ("D31u" "Semi-Slav: Noteboom, Abrahams, Main Line" "d4 d5 c4 e6 Nc3 c6 Nf3 
dxc4 a4 Bb4 e3 b5 Bd2 a5 axb5 Bxc3 Bxc3 cxb5 b3 Bb7")
+ ("D31v" "Semi-Slav: Noteboom, Abrahams, Main Line, 14.O-O O-O" "d4 d5 c4 e6 
Nc3 c6 Nf3 dxc4 a4 Bb4 e3 b5 Bd2 a5 axb5 Bxc3 Bxc3 cxb5 b3 Bb7 bxc4 b4 Bb2 Nf6 
Bd3 Nbd7 O-O O-O")
+ ("D31w" "Semi-Slav: Marshall Gambit" "d4 d5 c4 e6 Nc3 c6 e4")
+ ("D31w" "Semi-Slav: Marshall Gambit, 4...Bb4" "d4 d5 c4 e6 Nc3 c6 e4 Bb4")
+ ("D31w" "Semi-Slav: Marshall Gambit, 4...dxe4" "d4 d5 c4 e6 Nc3 c6 e4 dxe4")
+ ("D31w" "Semi-Slav: Marshall Gambit, Gunderam Gambit" "d4 d5 c4 e6 Nc3 c6 e4 
dxe4 f3")
+ ("D31w" "Semi-Slav: Marshall Gambit, 5.Nxe4" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 
Nxe4")
+ ("D31w" "Semi-Slav: Marshall Gambit, 5.Nxe4 Nf6" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 
Nxe4 Nf6")
+ ("D31x" "Semi-Slav: Marshall Gambit, 5.Nxe4 Bb4+" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 
Nxe4 Bb4+")
+ ("D31x" "Semi-Slav: Marshall Gambit, 5.Nxe4 Bb4+ 6.Nc3" "d4 d5 c4 e6 Nc3 c6 
e4 dxe4 Nxe4 Bb4+ Nc3")
+ ("D31x" "Semi-Slav: Marshall Gambit, 5.Nxe4 Bb4+ 6.Bd2" "d4 d5 c4 e6 Nc3 c6 
e4 dxe4 Nxe4 Bb4+ Bd2")
+ ("D31x" "Semi-Slav: Marshall Gambit, 8.Ne2" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 Nxe4 
Bb4+ Bd2 Qxd4 Bxb4 Qxe4+ Ne2")
+ ("D31y" "Semi-Slav: Marshall Gambit, 8.Be2" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 Nxe4 
Bb4+ Bd2 Qxd4 Bxb4 Qxe4+ Be2")
+ ("D31z" "Semi-Slav: Marshall Gambit, 8.Be2 Na6" "d4 d5 c4 e6 Nc3 c6 e4 dxe4 
Nxe4 Bb4+ Bd2 Qxd4 Bxb4 Qxe4+ Be2 Na6")
+ ("D32a" "QGD Tarrasch" "d4 d5 c4 e6 Nc3 c5")
+ ("D32a" "QGD Tarrasch: 4.e3" "d4 d5 c4 e6 Nc3 c5 e3")
+ ("D32b" "QGD Tarrasch: 4.Nf3" "d4 d5 c4 e6 Nc3 c5 Nf3")
+ ("D32c" "QGD Tarrasch: 4.Nf3 cxd4 5.Nxd4 e5" "d4 d5 c4 e6 Nc3 c5 Nf3 cxd4 
Nxd4 e5")
+ ("D32d" "QGD Tarrasch: 4.cxd5" "d4 d5 c4 e6 Nc3 c5 cxd5")
+ ("D32d" "QGD Tarrasch: von Hennig-Schara Gambit" "d4 d5 c4 e6 Nc3 c5 cxd5 
cxd4")
+ ("D32d" "QGD Tarrasch: von Hennig-Schara Gambit, 5.Qxd4" "d4 d5 c4 e6 Nc3 c5 
cxd5 cxd4 Qxd4")
+ ("D32e" "QGD Tarrasch: von Hennig-Schara Gambit, 5.Qxd4 Nc6 6.Qd1 exd5 7.e3" 
"d4 d5 c4 e6 Nc3 c5 cxd5 cxd4 Qxd4 Nc6 Qd1 exd5 e3")
+ ("D32f" "QGD Tarrasch: von Hennig-Schara Gambit, 5.Qa4+" "d4 d5 c4 e6 Nc3 c5 
cxd5 cxd4 Qa4+")
+ ("D32f" "QGD Tarrasch: von Hennig-Schara Gambit, 7.Qxd5 Nc6" "d4 d5 c4 e6 Nc3 
c5 cxd5 cxd4 Qa4+ Bd7 Qxd4 exd5 Qxd5 Nc6")
+ ("D32g" "QGD Tarrasch: von Hennig-Schara Gambit, 7.Qxd5 Nc6 8.Bg5" "d4 d5 c4 
e6 Nc3 c5 cxd5 cxd4 Qa4+ Bd7 Qxd4 exd5 Qxd5 Nc6 Bg5")
+ ("D32h" "QGD Tarrasch: von Hennig-Schara Gambit, 7.Qxd5 Nc6 8.Nf3" "d4 d5 c4 
e6 Nc3 c5 cxd5 cxd4 Qa4+ Bd7 Qxd4 exd5 Qxd5 Nc6 Nf3")
+ ("D32i" "QGD Tarrasch: von Hennig-Schara Gambit, Main Line (11.Be2 O-O-O)" 
"d4 d5 c4 e6 Nc3 c5 cxd5 cxd4 Qa4+ Bd7 Qxd4 exd5 Qxd5 Nc6 Nf3 Nf6 Qd1 Bc5 e3 
Qe7 Be2 O-O-O")
+ ("D32j" "QGD Tarrasch: 4.cxd5 exd5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5")
+ ("D32j" "QGD Tarrasch: 5.g3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 g3")
+ ("D32k" "QGD Tarrasch: 5.dxc5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 dxc5")
+ ("D32k" "QGD Tarrasch: 5.dxc5, Tarrasch Gambit" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
dxc5 d4 Na4 b5")
+ ("D32l" "QGD Tarrasch: Marshall Gambit" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 e4")
+ ("D32l" "QGD Tarrasch: Marshall Gambit" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 e4 
dxe4")
+ ("D32l" "QGD Tarrasch: Marshall Gambit, Modern 6.Bc4" "d4 d5 c4 e6 Nc3 c5 
cxd5 exd5 e4 dxe4 Bc4")
+ ("D32l" "QGD Tarrasch: Marshall Gambit, 6.d5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
e4 dxe4 d5")
+ ("D32m" "QGD Tarrasch: 5.Nf3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3")
+ ("D32n" "QGD Tarrasch: 5.Nf3 Nc6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6")
+ ("D32o" "QGD Tarrasch: 5.Nf3 Nc6 6.Bf4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
Bf4")
+ ("D32o" "QGD Tarrasch: 5.Nf3 Nc6 6.Bf4 Nf6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 Bf4 Nf6")
+ ("D32p" "QGD Tarrasch: 5.Nf3 Nc6 6.Bg5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
Bg5")
+ ("D32q" "QGD Tarrasch: 5.Nf3 Nc6 6.Bg5 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 Bg5 Be7")
+ ("D32r" "QGD Tarrasch: 5.Nf3 Nc6 6.e3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
e3")
+ ("D32r" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 e3 Nf6")
+ ("D32s" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Bb5" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 e3 Nf6 Bb5")
+ ("D32t" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 e3 Nf6 Be2")
+ ("D32u" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 e3 Nf6 Be2 Be7")
+ ("D32u" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 Be7 8.dxc5 Bxc5" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 Be7 dxc5 Bxc5")
+ ("D32v" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4" "d4 d5 c4 e6 Nc3 c5 
cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 cxd4")
+ ("D32v" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 cxd4 Nxd4 Bd6")
+ ("D32v" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6 9.O-O" "d4 d5 
c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 cxd4 Nxd4 Bd6 O-O")
+ ("D32w" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6 9.O-O O-O" 
"d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 cxd4 Nxd4 Bd6 O-O O-O")
+ ("D32x" "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6 9.O-O O-O 
10.b3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 e3 Nf6 Be2 cxd4 Nxd4 Bd6 O-O O-O 
b3")
+ ("D33a" "QGD Tarrasch: 6.g3 (Schlecter/Rubinstein)" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 g3")
+ ("D33b" "QGD Tarrasch: 6.g3 cxd4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
cxd4")
+ ("D33c" "QGD Tarrasch: Swedish Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 c4")
+ ("D33d" "QGD Tarrasch: Swedish, Rey Ardid Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 g3 c4 e4")
+ ("D33e" "QGD Tarrasch: Swedish, 7.Bg2" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 c4 Bg2")
+ ("D33f" "QGD Tarrasch: Swedish, 7.Bg2 Bb4 8.O-O Nge7" "d4 d5 c4 e6 Nc3 c5 
cxd5 exd5 Nf3 Nc6 g3 c4 Bg2 Bb4 O-O Nge7")
+ ("D33g" "QGD Tarrasch: Swedish, 9.a3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 c4 Bg2 Bb4 O-O Nge7 a3")
+ ("D33h" "QGD Tarrasch: Swedish, 9.Bd2" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 c4 Bg2 Bb4 O-O Nge7 Bd2")
+ ("D33i" "QGD Tarrasch: Swedish, 9.Ne5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 c4 Bg2 Bb4 O-O Nge7 Ne5")
+ ("D33j" "QGD Tarrasch: Swedish, 9.e4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 c4 Bg2 Bb4 O-O Nge7 e4")
+ ("D33k" "QGD Tarrasch: Swedish, 9.e4 dxe4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 c4 Bg2 Bb4 O-O Nge7 e4 dxe4")
+ ("D33l" "QGD Tarrasch: 6.g3 Nf6 (Prague)" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6")
+ ("D33l" "QGD Tarrasch: 6.g3 Nf6 (Prague)" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2")
+ ("D33m" "QGD Tarrasch: 7.Bg2 Be6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be6")
+ ("D33n" "QGD Tarrasch: Wagner Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 Bg4")
+ ("D33o" "QGD Tarrasch: 7.Bg2 cxd4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 cxd4")
+ ("D33o" "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 cxd4 Nxd4")
+ ("D33p" "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 cxd4 Nxd4 Be7")
+ ("D33p" "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 cxd4 Nxd4 Be7 O-O")
+ ("D33p" "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 cxd4 Nxd4 Be7 O-O O-O")
+ ("D33q" "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7 9.O-O O-O 10.Be3" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 cxd4 Nxd4 Be7 O-O O-O Be3")
+ ("D34a" "QGD Tarrasch: 7.Bg2 Be7" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be7")
+ ("D34a" "QGD Tarrasch: 7.Bg2 Be7 8.O-O" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 Nf6 Bg2 Be7 O-O")
+ ("D34b" "QGD Tarrasch: 7.Bg2 Be7 8.O-O Be6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 Be7 O-O Be6")
+ ("D34c" "QGD Tarrasch: 8.O-O O-O (Main Line)" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O")
+ ("D34d" "QGD Tarrasch: 9.b3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 
Be7 O-O O-O b3")
+ ("D34e" "QGD Tarrasch: 9.b3 Ne4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O b3 Ne4")
+ ("D34f" "QGD Tarrasch: 9.Bf4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O Bf4")
+ ("D34g" "QGD Tarrasch: 9.Be3" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O Be3")
+ ("D34h" "QGD Tarrasch: 9.dxc5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O dxc5")
+ ("D34h" "QGD Tarrasch: Tarrasch's Gambit" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 d4")
+ ("D34i" "QGD Tarrasch: 9.dxc5 Bxc5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5")
+ ("D34j" "QGD Tarrasch: Reti Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 
g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Na4")
+ ("D34k" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5")
+ ("D34k" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 Be6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5 Be6")
+ ("D34k" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 Be6 11.Bxf6" "d4 d5 c4 e6 Nc3 c5 
cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5 Be6 Bxf6")
+ ("D34l" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5 d4")
+ ("D34m" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4 11.Bxf6 Qxf6 12.Nd5" "d4 d5 c4 
e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5 d4 Bxf6 Qxf6 
Nd5")
+ ("D34n" "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4 11.Bxf6: Main Line" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O dxc5 Bxc5 Bg5 d4 Bxf6 Qxf6 Nd5 
Qd8 Nd2 Re8")
+ ("D34o" "QGD Tarrasch: 9.Bg5" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O Bg5")
+ ("D34o" "QGD Tarrasch: 9.Bg5 Be6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be7 O-O O-O Bg5 Be6")
+ ("D34o" "QGD Tarrasch: Stoltz Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 
Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 Be6 Rc1 b6")
+ ("D34o" "QGD Tarrasch: Bogoljubow Variation" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 Be6 Rc1 c4")
+ ("D34p" "QGD Tarrasch: 9.Bg5 c4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 
Bg2 Be7 O-O O-O Bg5 c4")
+ ("D34q" "QGD Tarrasch: 9.Bg5 c4 10.Ne5 Be6 11.Nxc6" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 c4 Ne5 Be6 Nxc6")
+ ("D34r" "QGD Tarrasch: 9.Bg5 cxd4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be7 O-O O-O Bg5 cxd4")
+ ("D34r" "QGD Tarrasch: 9.Bg5 cxd4" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 
Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4")
+ ("D34s" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6" "d4 d5 c4 e6 Nc3 c5 cxd5 exd5 
Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6")
+ ("D34t" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3" "d4 d5 c4 e6 Nc3 c5 cxd5 
exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 Be3")
+ ("D34u" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8" "d4 d5 c4 e6 Nc3 c5 
cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 Be3 Re8")
+ ("D34v" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Qb3" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 Be3 Re8 Qb3")
+ ("D34w" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1" "d4 d5 c4 e6 
Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 Be3 Re8 Rc1")
+ ("D34x" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1 Bf8" "d4 d5 c4 
e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 Be3 Re8 Rc1 
Bf8")
+ ("D34y" "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1 Bf8 13.Nxc6" 
"d4 d5 c4 e6 Nc3 c5 cxd5 exd5 Nf3 Nc6 g3 Nf6 Bg2 Be7 O-O O-O Bg5 cxd4 Nxd4 h6 
Be3 Re8 Rc1 Bf8 Nxc6")
+ ("D35a" "QGD: 3.Nc3 Nf6" "d4 d5 c4 e6 Nc3 Nf6")
+ ("D35a" "QGD: 3.Nc3 Nf6 4.e3" "d4 d5 c4 e6 Nc3 Nf6 e3")
+ ("D35a" "QGD: Harrwitz Attack" "d4 d5 c4 e6 Nc3 Nf6 Bf4")
+ ("D35a" "QGD: Catalan without Nf3" "d4 d5 c4 e6 Nc3 Nf6 g3")
+ ("D35b" "QGD: Exchange" "d4 d5 c4 e6 Nc3 Nf6 cxd5")
+ ("D35b" "QGD: Exchange, 4...Nxd5" "d4 d5 c4 e6 Nc3 Nf6 cxd5 Nxd5")
+ ("D35b" "QGD: Exchange" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5")
+ ("D35c" "QGD: Exchange, Sämisch Variation" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bf4")
+ ("D35d" "QGD: Exchange, 5.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3")
+ ("D35d" "QGD: Exchange, 5.Nf3 c6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 c6")
+ ("D35d" "QGD: Exchange, 5.Nf3 c6 6.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 c6 
e3")
+ ("D35e" "QGD: Exchange, 5.Nf3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 Nbd7")
+ ("D35e" "QGD: Exchange, 5.Nf3 Nbd7 6.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 
Nbd7 e3")
+ ("D35e" "QGD: Exchange, 5.Nf3 Nbd7 6.e3 c6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Nf3 Nbd7 e3 c6")
+ ("D35f" "QGD: Exchange, 5.Nf3 Nbd7 6.Bf4" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 
Nbd7 Bf4")
+ ("D35g" "QGD: Exchange, 5.Nf3 Be7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 Be7")
+ ("D35g" "QGD: Exchange, 5.Nf3 Be7 6.Bf4" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Nf3 
Be7 Bf4")
+ ("D35h" "QGD: Exchange, 5.Nf3 Be7 6.Bf4 c6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Nf3 Be7 Bf4 c6")
+ ("D35h" "QGD: Exchange, 5.Nf3 Be7 6.Bf4 c6 7.Qc2" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Nf3 Be7 Bf4 c6 Qc2")
+ ("D35h" "QGD: Exchange, 5.Nf3 Be7 6.Bf4 c6 7.Qc2 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Nf3 Be7 Bf4 c6 Qc2 Nbd7")
+ ("D35i" "QGD: Exchange, 5.Bg5" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5")
+ ("D35i" "QGD: Exchange, 5.Bg5 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 Nbd7")
+ ("D35i" "QGD: Exchange, 5.Bg5 Nbd7 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
Nbd7 Nf3")
+ ("D35i" "QGD: Exchange, 5.Bg5 Nbd7 6.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
Nbd7 e3")
+ ("D35i" "QGD: Exchange, 5.Bg5 Be7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 Be7")
+ ("D35i" "QGD: Exchange, 5.Bg5 Be7 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
Be7 Nf3")
+ ("D35j" "QGD: Exchange, 5.Bg5 Be7 6.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
Be7 e3")
+ ("D35j" "QGD: Exchange, 5.Bg5 Be7 6.e3 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
Be7 e3 h6")
+ ("D35j" "QGD: Exchange, 5.Bg5 Be7 6.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 Be7 e3 Nbd7")
+ ("D35k" "QGD: Exchange, 5.Bg5 Be7 6.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 Be7 e3 O-O")
+ ("D35l" "QGD: Exchange, 5.Bg5 c6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6")
+ ("D35l" "QGD: Exchange, 5.Bg5 c6 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 
Nf3")
+ ("D35m" "QGD: Exchange, 5.Bg5 c6 6.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 
e3")
+ ("D35n" "QGD: Exchange, 5.Bg5 c6 6.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 e3 Nbd7")
+ ("D35o" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 e3 Be7")
+ ("D35o" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 e3 Be7 Nf3")
+ ("D35p" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Nf3 Bf5" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 e3 Be7 Nf3 Bf5")
+ ("D35q" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Nf3 Bf5 8.Bd3" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Nf3 Bf5 Bd3")
+ ("D35r" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 e3 Be7 Bd3")
+ ("D35s" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Ne4" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 e3 Be7 Bd3 Ne4")
+ ("D35t" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 e3 Be7 Bd3 Nbd7")
+ ("D35t" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Nbd7 8.Nge2" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Bd3 Nbd7 Nge2")
+ ("D35u" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Nbd7 8.Nf3" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Bd3 Nbd7 Nf3")
+ ("D35v" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 O-O" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 e3 Be7 Bd3 O-O")
+ ("D35v" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 O-O 8.Nf3" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Bd3 O-O Nf3")
+ ("D35v" "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 O-O 8.Nge2" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 e3 Be7 Bd3 O-O Nge2")
+ ("D36a" "QGD: Exchange, 5.Bg5 c6 6.Qc2" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 
Qc2")
+ ("D36a" "QGD: Exchange, 5.Bg5 c6 6.Qc2 g6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 g6")
+ ("D36b" "QGD: Exchange, 5.Bg5 c6 6.Qc2 Na6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Na6")
+ ("D36c" "QGD: Exchange, 6.Qc2 Be7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 
Be7")
+ ("D36c" "QGD: Exchange, 6.Qc2 Be7 7.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 Nf3")
+ ("D36c" "QGD: Exchange, 6.Qc2 Be7 7.Nf3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 Nf3 Nbd7")
+ ("D36c" "QGD: Exchange, 6.Qc2 Be7 7.Nf3 O-O" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 Nf3 O-O")
+ ("D36d" "QGD: Exchange, 6.Qc2 Be7 7.Nf3 g6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 Nf3 g6")
+ ("D36e" "QGD: Exchange, 6.Qc2 Be7 7.Nf3 g6 8.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 Nf3 g6 e3")
+ ("D36f" "QGD: Exchange, 6.Qc2 Be7 7.e3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 
Qc2 Be7 e3")
+ ("D36f" "QGD: Exchange, 6.Qc2 Be7 7.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 O-O")
+ ("D36f" "QGD: Exchange, 6.Qc2 Be7 7.e3 O-O 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 e3 O-O Bd3")
+ ("D36g" "QGD: Exchange, 6.Qc2 Be7 7.e3 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 e3 h6")
+ ("D36g" "QGD: Exchange, 6.Qc2 Be7 7.e3 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 e3 h6 Bh4 O-O")
+ ("D36g" "QGD: Exchange, 6.Qc2 Be7 7.e3 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 e3 h6 Bh4 O-O Bd3 Re8")
+ ("D36h" "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 Nbd7")
+ ("D36h" "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7 8.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Nf3")
+ ("D36i" "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3")
+ ("D36j" "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7 8.Bd3 Nf8" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 Nf8")
+ ("D36k" "QGD: Exchange, Main Line" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 
Be7 e3 Nbd7 Bd3 O-O")
+ ("D36k" "QGD: Exchange, Main Line, 9.Nge2" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2")
+ ("D36k" "QGD: Exchange, Main Line, 9.Nge2 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 h6")
+ ("D36k" "QGD: Exchange, Main Line, 9.Nge2 h6 10.Bh4" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 h6 Bh4")
+ ("D36l" "QGD: Exchange, Main Line, 9.Nge2 Re8" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 Re8")
+ ("D36m" "QGD: Exchange, Main Line, 9.Nge2 Re8 10.O-O" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 Re8 O-O")
+ ("D36m" "QGD: Exchange, Main Line, 9.Nge2 Re8 10.O-O Nf8" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 Re8 O-O Nf8")
+ ("D36n" "QGD: Exchange, Main Line, 9.Nge2 Re8 10.O-O Nf8 11.f3" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nge2 Re8 O-O Nf8 f3")
+ ("D36o" "QGD: Exchange, Main Line, 9.Nf3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 Bg5 
c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3")
+ ("D36o" "QGD: Exchange, Main Line, 9.Nf3 h6" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 h6")
+ ("D36o" "QGD: Exchange, Main Line, 9.Nf3 h6 10.Bh4" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 h6 Bh4")
+ ("D36p" "QGD: Exchange, Main Line, 9.Nf3 Re8" "d4 d5 c4 e6 Nc3 Nf6 cxd5 exd5 
Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8")
+ ("D36p" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.h3" "d4 d5 c4 e6 Nc3 Nf6 cxd5 
exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 h3")
+ ("D36p" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.h3 Nf8" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 h3 Nf8")
+ ("D36q" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.h3 Nf8 11.Bf4" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 h3 Nf8 Bf4")
+ ("D36r" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O-O" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O-O")
+ ("D36r" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O-O h6" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O-O h6 Bh4")
+ ("D36r" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O-O Nf8" "d4 d5 c4 e6 Nc3 
Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O-O Nf8")
+ ("D36r" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O-O Nf8 11.h3" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O-O Nf8 h3")
+ ("D36s" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O")
+ ("D36t" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O h6" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O h6")
+ ("D36t" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O h6" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O h6 Bf4")
+ ("D36t" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O h6" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O h6 Bh4")
+ ("D36u" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8" "d4 d5 c4 e6 Nc3 Nf6 
cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8")
+ ("D36v" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rae1" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8 Rae1")
+ ("D36w" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.h3" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8 h3")
+ ("D36x" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.h3 g6" "d4 d5 c4 
e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8 h3 g6")
+ ("D36y" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rab1" "d4 d5 c4 e6 
Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8 Rab1")
+ ("D36z" "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rab1 a5" "d4 d5 c4 
e6 Nc3 Nf6 cxd5 exd5 Bg5 c6 Qc2 Be7 e3 Nbd7 Bd3 O-O Nf3 Re8 O-O Nf8 Rab1 a5")
+ ("D37a" "QGD: 4.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Nf3")
+ ("D37b" "QGD: Westphalia without Bg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Nbd7")
+ ("D37c" "QGD: Westphalia: 4.Nf3 Nbd7 5.Bf4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Nbd7 
Bf4")
+ ("D37d" "QGD: 4.Nf3 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7")
+ ("D37d" "QGD: 4.Nf3 Be7 5.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 cxd5 Nxd5")
+ ("D37e" "QGD: 4.Nf3 Be7 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 e3")
+ ("D37f" "QGD: 4.Nf3 Be7 5.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 e3 O-O")
+ ("D37f" "QGD: 4.Nf3 Be7 5.e3 O-O 6.b3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 e3 O-O 
b3")
+ ("D37g" "QGD: 4.Nf3 Be7 5.e3 O-O 6.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 e3 O-O 
Bd3")
+ ("D37h" "QGD: Classical Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4")
+ ("D37i" "QGD: Classical, 5...O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O")
+ ("D37j" "QGD: Classical, 5...O-O 6.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 
O-O e3 Nbd7")
+ ("D37k" "QGD: Classical, 5...O-O 6.e3 b6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 
O-O e3 b6")
+ ("D37l" "QGD: Classical, 5...O-O 6.e3 c6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 
O-O e3 c6")
+ ("D37m" "QGD: Classical, 5...O-O 6.e3 c5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 
O-O e3 c5")
+ ("D37n" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 
Bf4 O-O e3 c5 dxc5")
+ ("D37o" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5")
+ ("D37p" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.a3" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 a3")
+ ("D37q" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.cxd5" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 cxd5")
+ ("D37r" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2")
+ ("D37s" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3" "d4 d5 
c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2 Nc6 a3")
+ ("D37t" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2 Nc6 a3 Qa5")
+ ("D37u" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5 
10.Rd1" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2 Nc6 a3 Qa5 
Rd1")
+ ("D37v" "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5 
10.O-O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Be7 Bf4 O-O e3 c5 dxc5 Bxc5 Qc2 Nc6 a3 Qa5 
O-O-O")
+ ("D38a" "QGD: Ragozin" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4")
+ ("D38b" "QGD: Ragozin, 5.Qa4+" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Qa4+")
+ ("D38c" "QGD: Ragozin, 5.Qa4+ Nc6 6.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Qa4+ 
Nc6 cxd5")
+ ("D38d" "QGD: Ragozin, 5.Qa4+ Nc6 6.cxd5 exd5 7.Bg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
Bb4 Qa4+ Nc6 cxd5 exd5 Bg5")
+ ("D38e" "QGD: Ragozin, 5.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 cxd5")
+ ("D38f" "QGD: Ragozin, 5.cxd5 exd5 6.Bg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 cxd5 
exd5 Bg5")
+ ("D38g" "QGD: Ragozin, 5.cxd5 exd5 6.Bg5 h6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 
cxd5 exd5 Bg5 h6")
+ ("D38g" "QGD: Ragozin, 5.cxd5 exd5 6.Bg5 h6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 
cxd5 exd5 Bg5 h6 Bh4")
+ ("D38h" "QGD: Ragozin, 5.Bg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5")
+ ("D38i" "QGD: Ragozin, Westphalia Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
Nbd7")
+ ("D38j" "QGD: Ragozin, Westphalia, 7.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
Nbd7 cxd5 exd5 Qc2")
+ ("D38k" "QGD: Ragozin, Westphalia, 7.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
Nbd7 cxd5 exd5 e3")
+ ("D38l" "QGD: Ragozin, 5.Bg5 h6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 h6")
+ ("D38m" "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
h6 Bxf6 Qxf6")
+ ("D38n" "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
Bb4 Bg5 h6 Bxf6 Qxf6 cxd5")
+ ("D38n" "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
Bb4 Bg5 h6 Bxf6 Qxf6 cxd5 exd5")
+ ("D38o" "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
Bb4 Bg5 h6 Bxf6 Qxf6 e3")
+ ("D38p" "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.e3 O-O 8.Rc1" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Bb4 Bg5 h6 Bxf6 Qxf6 e3 O-O Rc1")
+ ("D39a" "QGD: Ragozin, Vienna Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
dxc4")
+ ("D39b" "QGD: Ragozin, Vienna, 6.Qa4+" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 dxc4 
Qa4+")
+ ("D39c" "QGD: Ragozin, Vienna, 6.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 dxc4 
e4")
+ ("D39d" "QGD: Ragozin, Vienna, 6.e4 c5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 dxc4 
e4 c5")
+ ("D39e" "QGD: Ragozin, Vienna, 6.e4 c5 7.e5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 
dxc4 e4 c5 e5")
+ ("D39f" "QGD: Ragozin, Vienna, 6.e4 c5 7.e5 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
Bb4 Bg5 dxc4 e4 c5 e5 cxd4")
+ ("D39g" "QGD: Ragozin, Vienna, 6.e4 c5 7.e5 cxd4 8.Qa4+ Nc6 9.O-O-O" "d4 d5 
c4 e6 Nc3 Nf6 Nf3 Bb4 Bg5 dxc4 e4 c5 e5 cxd4 Qa4+ Nc6 O-O-O")
+ ("D39h" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 
Bg5 dxc4 e4 c5 Bxc4")
+ ("D39h" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 
Bg5 dxc4 e4 c5 Bxc4 cxd4")
+ ("D39h" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 Bb4 
Bg5 dxc4 e4 c5 Bxc4 cxd4 Nxd4")
+ ("D39i" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Qa5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 Bb4 Bg5 dxc4 e4 c5 Bxc4 cxd4 Nxd4 Qa5")
+ ("D39j" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Bxc3+" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Bb4 Bg5 dxc4 e4 c5 Bxc4 cxd4 Nxd4 Bxc3+")
+ ("D39j" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Bxc3+" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 Bb4 Bg5 dxc4 e4 c5 Bxc4 cxd4 Nxd4 Bxc3+ bxc3")
+ ("D39k" "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Bxc3+, 10.Bb5+" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 Bb4 Bg5 dxc4 e4 c5 Bxc4 cxd4 Nxd4 Bxc3+ bxc3 Qa5 Bb5+")
+ ("D40a" "QGD: Semi-Tarrasch" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5")
+ ("D40a" "QGD: Semi-Tarrasch, 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3")
+ ("D40b" "QGD: Semi-Tarrasch, 5.e3 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 Be7")
+ ("D40c" "QGD: Semi-Tarrasch, 5.e3 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 cxd4")
+ ("D40d" "QGD: Semi-Tarrasch, 5.e3 a6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 a6")
+ ("D40e" "QGD: Semi-Tarrasch, 5.e3 a6 6.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 
a6 cxd5")
+ ("D40e" "QGD: Semi-Tarrasch, 5.e3 a6 6.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
e3 a6 cxd5 exd5")
+ ("D40f" "QGD: Semi-Tarrasch, 5.e3 Nc6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 Nc6")
+ ("D40g" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 
Nc6 Bd3")
+ ("D40h" "QGD: Semi-Tarrasch, Symmetrical Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 e3 Nc6 Bd3 Bd6 O-O O-O")
+ ("D40i" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 
Nc6 a3")
+ ("D40j" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 Ne4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
e3 Nc6 a3 Ne4")
+ ("D40k" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
e3 Nc6 a3 dxc4")
+ ("D40l" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
e3 Nc6 a3 cxd4")
+ ("D40l" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4 7.exd4 Be7" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 e3 Nc6 a3 cxd4 exd4 Be7")
+ ("D40m" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4 7.exd4 Be7 8.c5" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c5 e3 Nc6 a3 cxd4 exd4 Be7 c5")
+ ("D40n" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4 7.exd4 Be7 8.Bd3" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c5 e3 Nc6 a3 cxd4 exd4 Be7 Bd3")
+ ("D40o" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 e3 
Nc6 a3 a6")
+ ("D40p" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.b3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 e3 Nc6 a3 a6 b3")
+ ("D40q" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.dxc5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 e3 Nc6 a3 a6 dxc5")
+ ("D40q" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.dxc5 Bxc5" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 e3 Nc6 a3 a6 dxc5 Bxc5")
+ ("D40r" "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.dxc5 Bxc5 8.b4 Ba7" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c5 e3 Nc6 a3 a6 dxc5 Bxc5 b4 Ba7")
+ ("D41a" "QGD: Semi-Tarrasch, 5.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5")
+ ("D41b" "QGD: Semi-Tarrasch, Keres Counterattack" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 cxd4")
+ ("D41c" "QGD: Semi-Tarrasch, 5.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5")
+ ("D41c" "QGD: Semi-Tarrasch, 6.g3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 g3")
+ ("D41c" "QGD: Semi-Tarrasch, 6.g3 Nc6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 
g3 Nc6")
+ ("D41c" "QGD: Semi-Tarrasch, 6.g3 Nc6 7.Bg2 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 g3 Nc6 Bg2 Be7")
+ ("D41d" "QGD: Semi-Tarrasch, 6.g3, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O")
+ ("D41e" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O e4")
+ ("D41f" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4 Nb6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O e4 Nb6")
+ ("D41g" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4 Ndb4" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O e4 Ndb4")
+ ("D41h" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O Nxd5")
+ ("D41i" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5 exd5 10.dxc5 Bxc5" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O Nxd5 exd5 dxc5 Bxc5")
+ ("D41j" "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5 exd5 10.dxc5 Bxc5 
11.Bg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 g3 Nc6 Bg2 Be7 O-O O-O Nxd5 exd5 
dxc5 Bxc5 Bg5")
+ ("D41k" "QGD: Semi-Tarrasch, 6.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e4")
+ ("D41k" "QGD: Semi-Tarrasch, 6.e4 Nxc3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 
e4 Nxc3")
+ ("D41k" "QGD: Semi-Tarrasch, 6.e4, 8.cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e4 Nxc3 bxc3 cxd4 cxd4")
+ ("D41l" "QGD: Semi-Tarrasch, 6.e4, 8.cxd4 Nc6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Nc6")
+ ("D41m" "QGD: Semi-Tarrasch, 6.e4, 8.cxd4 Bb4+" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+")
+ ("D41m" "QGD: Semi-Tarrasch, 6.e4, San Sebastian Variation" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Qa5")
+ ("D41m" "QGD: Semi-Tarrasch, 6.e4, Kmoch Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Bxd2+ Qxd2 O-O Bb5")
+ ("D41n" "QGD: Semi-Tarrasch, 6.e4, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Bxd2+ Qxd2 O-O Bc4")
+ ("D41n" "QGD: Semi-Tarrasch, 6.e4, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Bxd2+ Qxd2 O-O Bc4 Nc6 O-O")
+ ("D41o" "QGD: Semi-Tarrasch, 6.e4, Main Line, 12...b6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Bxd2+ Qxd2 O-O Bc4 Nc6 O-O b6")
+ ("D41o" "QGD: Semi-Tarrasch, 6.e4, Main Line, 12...b6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e4 Nxc3 bxc3 cxd4 cxd4 Bb4+ Bd2 Bxd2+ Qxd2 O-O Bc4 Nc6 O-O b6 
Rad1")
+ ("D41p" "QGD: Semi-Tarrasch, 6.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3")
+ ("D41p" "QGD: Semi-Tarrasch, 6.e3 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 
e3 cxd4")
+ ("D41p" "QGD: Semi-Tarrasch, 6.e3 cxd4 7.exd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 cxd4 exd4")
+ ("D41q" "QGD: Semi-Tarrasch, 6.e3 Nc6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 
e3 Nc6")
+ ("D41r" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e3 Nc6 Bc4")
+ ("D41r" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e3 Nc6 Bc4 cxd4 exd4")
+ ("D41r" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7")
+ ("D41s" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7 O-O O-O")
+ ("D41t" "QGD: Semi-Tarrasch, 7.Bc4 Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7 O-O O-O Re1 Nxc3 bxc3")
+ ("D41t" "QGD: Semi-Tarrasch, 7.Bc4 Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7 O-O O-O Re1 Nxc3 bxc3 b6 Bd3 Bb7")
+ ("D41u" "QGD: Semi-Tarrasch, 7.Bc4 Main Line, 13.Qc2" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7 O-O O-O Re1 Nxc3 bxc3 b6 Bd3 Bb7 Qc2")
+ ("D41v" "QGD: Semi-Tarrasch, 7.Bc4 Main Line, 13.h4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 cxd5 Nxd5 e3 Nc6 Bc4 cxd4 exd4 Be7 O-O O-O Re1 Nxc3 bxc3 b6 Bd3 Bb7 h4")
+ ("D42a" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 
Nxd5 e3 Nc6 Bd3")
+ ("D42b" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bd3 Be7")
+ ("D42c" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 Be7 8.O-O O-O" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 Be7 O-O O-O")
+ ("D42d" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bd3 cxd4")
+ ("D42d" "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4")
+ ("D42e" "QGD: Semi-Tarrasch, 7.Bd3 Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 
cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7")
+ ("D42f" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 9.O-O O-O" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O")
+ ("D42g" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O a3")
+ ("D42h" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3 Nf6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O a3 Nf6")
+ ("D42i" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3 Bf6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O a3 Bf6")
+ ("D42j" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1")
+ ("D42k" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Ncb4" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Ncb4")
+ ("D42l" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6")
+ ("D42l" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.Bg5" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 Bg5")
+ ("D42m" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 a3")
+ ("D42m" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 a3 b6")
+ ("D42m" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6 12.Be3" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 a3 
b6 Be3")
+ ("D42n" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6 12.Bg5" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 a3 
b6 Bg5")
+ ("D42o" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6 12.Bc2" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Nf6 a3 
b6 Bc2")
+ ("D42p" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Bf6")
+ ("D42p" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6 11.Be4" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Bf6 Be4")
+ ("D42q" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6 11.Be4 Nce7" "d4 d5 
c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Bf6 Be4 
Nce7")
+ ("D42r" "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6 11.Be4 Nce7 12.Ne5" 
"d4 d5 c4 e6 Nc3 Nf6 Nf3 c5 cxd5 Nxd5 e3 Nc6 Bd3 cxd4 exd4 Be7 O-O O-O Re1 Bf6 
Be4 Nce7 Ne5")
+ ("D43a" "Semi-Slav" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6")
+ ("D43b" "Semi-Slav: 5.g3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 g3")
+ ("D43c" "Semi-Slav: 5.Qd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Qd3")
+ ("D43d" "Semi-Slav: 5.Qb3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Qb3")
+ ("D43e" "Semi-Slav: 5.Qb3 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Qb3 dxc4 Qxc4")
+ ("D43f" "Semi-Slav: Botvinnik (Anti-Meran)" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5")
+ ("D43f" "Semi-Slav: Botvinnik, 5...Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 Be7")
+ ("D43g" "Semi-Slav: Botvinnik, 5...Be7 6.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 
Be7 e3")
+ ("D43h" "Semi-Slav: Botvinnik, 5...Be7 6.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 Be7 e3 O-O")
+ ("D43i" "Semi-Slav: Botvinnik, 5...Be7 6.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 Be7 e3 Nbd7")
+ ("D43j" "Semi-Slav: Botvinnik, 5...Be7 6.e3 Nbd7 7.Bd3" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 Bg5 Be7 e3 Nbd7 Bd3")
+ ("D43k" "Semi-Slav: Moscow Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6")
+ ("D43k" "Semi-Slav: Moscow, 6.Bh4 Gambit" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 
Bh4")
+ ("D43k" "Semi-Slav: Moscow, 6.Bh4 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bh4 
Be7")
+ ("D43k" "Semi-Slav: Moscow, 6.Bh4 Be7 7.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 h6 Bh4 Be7 e3 O-O")
+ ("D43k" "Semi-Slav: Moscow, 6.Bh4 Gambit Accepted" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 h6 Bh4 dxc4")
+ ("D43l" "Semi-Slav: Moscow, 6.Bh4 Gambit, 7.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 h6 Bh4 dxc4 e4")
+ ("D43m" "Semi-Slav: Moscow, 6.Bh4 Gambit, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 h6 Bh4 dxc4 e4 g5 Bg3 b5 Be2")
+ ("D43n" "Semi-Slav: Moscow, 6.Bh4 Gambit, Main Line, 9...Bb7" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 Bg5 h6 Bh4 dxc4 e4 g5 Bg3 b5 Be2 Bb7")
+ ("D43o" "Semi-Slav: Moscow, 6.Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bxf6")
+ ("D43p" "Semi-Slav: Moscow, 7.g3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bxf6 
Qxf6 g3")
+ ("D43q" "Semi-Slav: Moscow, Hastings Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 h6 Bxf6 Qxf6 Qb3")
+ ("D43r" "Semi-Slav: Moscow, 7.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bxf6 
Qxf6 Qc2")
+ ("D43s" "Semi-Slav: Moscow, 7.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bxf6 
Qxf6 e3")
+ ("D43t" "Semi-Slav: Moscow, 7.e3 Nd7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 Bxf6 
Qxf6 e3 Nd7")
+ ("D43u" "Semi-Slav: Moscow, 7.e3 Nd7 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 
h6 Bxf6 Qxf6 e3 Nd7 Bd3")
+ ("D43v" "Semi-Slav: Moscow, 7.e3 Nd7 8.Bd3 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 h6 Bxf6 Qxf6 e3 Nd7 Bd3 dxc4")
+ ("D43v" "Semi-Slav: Moscow, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 
Bxf6 Qxf6 e3 Nd7 Bd3 dxc4 Bxc4 g6")
+ ("D43v" "Semi-Slav: Moscow, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 
Bxf6 Qxf6 e3 Nd7 Bd3 dxc4 Bxc4 g6 O-O")
+ ("D43v" "Semi-Slav: Moscow, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 h6 
Bxf6 Qxf6 e3 Nd7 Bd3 dxc4 Bxc4 g6 O-O Bg7")
+ ("D43w" "Semi-Slav: Moscow, Main Line, 11.b4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 
h6 Bxf6 Qxf6 e3 Nd7 Bd3 dxc4 Bxc4 g6 O-O Bg7 b4")
+ ("D43x" "Semi-Slav: Moscow, Main Line, 11.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 h6 Bxf6 Qxf6 e3 Nd7 Bd3 dxc4 Bxc4 g6 O-O Bg7 Rc1")
+ ("D44a" "Semi-Slav: Botvinnik Accepted" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4")
+ ("D44b" "Semi-Slav: Botvinnik, 6.a4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 a4")
+ ("D44c" "Semi-Slav: Botvinnik, 6.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 e4")
+ ("D44c" "Semi-Slav: Botvinnik, 6.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 e4 
b5")
+ ("D44d" "Semi-Slav: Botvinnik, 7.a4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 e4 
b5 a4")
+ ("D44e" "Semi-Slav: Botvinnik, 7.e5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 e4 
b5 e5")
+ ("D44f" "Semi-Slav: Botvinnik, 9.exf6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 
e4 b5 e5 h6 Bh4 g5 exf6")
+ ("D44g" "Semi-Slav: Botvinnik, Ekstrom Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 exf6 gxh4 Ne5")
+ ("D44h" "Semi-Slav: Botvinnik, 9.Nxg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 
e4 b5 e5 h6 Bh4 g5 Nxg5")
+ ("D44i" "Semi-Slav: Botvinnik, Alatortsev Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 Nd5")
+ ("D44j" "Semi-Slav: Botvinnik, 9.Nxg5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 dxc4 
e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5")
+ ("D44k" "Semi-Slav: Botvinnik, Lilienthal Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 g3")
+ ("D44l" "Semi-Slav: Botvinnik, Lilienthal, 11...Qa5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 g3 Qa5")
+ ("D44m" "Semi-Slav: Botvinnik, Lilienthal, 11...Bb7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 g3 Bb7")
+ ("D44n" "Semi-Slav: Botvinnik, Szabo Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 Qf3")
+ ("D44o" "Semi-Slav: Botvinnik, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 Bg5 
dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 exf6")
+ ("D44p" "Semi-Slav: Botvinnik, Main Line, 12.g3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 exf6 Bb7 g3")
+ ("D44q" "Semi-Slav: Botvinnik, Main Line, 12.g3 c5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 exf6 Bb7 g3 c5")
+ ("D44r" "Semi-Slav: Botvinnik, Main Line, 12.g3 c5 13.d5 Qb6" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 Bg5 dxc4 e4 b5 e5 h6 Bh4 g5 Nxg5 hxg5 Bxg5 Nbd7 exf6 Bb7 g3 c5 
d5 Qb6")
+ ("D45a" "Semi-Slav: 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3")
+ ("D45b" "Semi-Slav: 5.e3 Bd6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Bd6")
+ ("D45c" "Semi-Slav: 5.e3 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Be7")
+ ("D45d" "Semi-Slav: 5.e3 Ne4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Ne4")
+ ("D45d" "Semi-Slav: Stonewall Defence" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Ne4 Bd3 
f5")
+ ("D45e" "Semi-Slav: Accelerated Meran (Alekhine Variation)" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 a6")
+ ("D45f" "Semi-Slav: 5.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7")
+ ("D45f" "Semi-Slav: Rubinstein System" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Ne5")
+ ("D45g" "Semi-Slav: 6.a3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 a3")
+ ("D45h" "Semi-Slav: 6.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2")
+ ("D45i" "Semi-Slav: 6.Qc2 b6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 b6")
+ ("D45j" "Semi-Slav: 6.Qc2 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 Be7")
+ ("D45k" "Semi-Slav: 6.Qc2 Bd6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 Bd6")
+ ("D45k" "Semi-Slav: 6.Qc2 Bd6 7.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 
Bd6 e4")
+ ("D45l" "Semi-Slav: 6.Qc2 Bd6 7.g4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 
Bd6 g4")
+ ("D45l" "Semi-Slav: 6.Qc2 Bd6 7.g4 h6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Qc2 Bd6 g4 h6")
+ ("D45m" "Semi-Slav: 6.Qc2 Bd6 7.g4 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Qc2 Bd6 g4 dxc4")
+ ("D45n" "Semi-Slav: 6.Qc2 Bd6 7.g4 Bb4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Qc2 Bd6 g4 Bb4")
+ ("D45o" "Semi-Slav: 6.Qc2 Bd6 7.g4 Nxg4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Qc2 Bd6 g4 Nxg4")
+ ("D45p" "Semi-Slav: 6.Qc2 Bd6 7.b3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 
Bd6 b3")
+ ("D45p" "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Qc2 Bd6 b3 O-O")
+ ("D45q" "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Bb2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Qc2 Bd6 b3 O-O Bb2")
+ ("D45r" "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Qc2 Bd6 b3 O-O Be2")
+ ("D45s" "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2 b6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Qc2 Bd6 b3 O-O Be2 b6")
+ ("D45t" "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2 Re8" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Qc2 Bd6 b3 O-O Be2 Re8")
+ ("D45u" "Semi-Slav: 6.Qc2 Bd6 7.Bd2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 
Bd6 Bd2")
+ ("D45v" "Semi-Slav: 6.Qc2 Bd6 7.Be2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Qc2 
Bd6 Be2")
+ ("D45v" "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Qc2 Bd6 Be2 O-O O-O")
+ ("D45w" "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O e5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Qc2 Bd6 Be2 O-O O-O e5")
+ ("D45x" "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O Qe7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Qc2 Bd6 Be2 O-O O-O Qe7")
+ ("D45y" "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O Re8" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Qc2 Bd6 Be2 O-O O-O Re8")
+ ("D46a" "Semi-Slav: 6.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3")
+ ("D46a" "Semi-Slav: 6.Bd3 a6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 a6")
+ ("D46b" "Semi-Slav: Romih Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bb4")
+ ("D46b" "Semi-Slav: Romih, 7.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bb4 
O-O")
+ ("D46b" "Semi-Slav: Romih, 7.O-O O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bb4 O-O O-O")
+ ("D46c" "Semi-Slav: Bogoljubow Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Be7")
+ ("D46c" "Semi-Slav: Bogoljubow, 7.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Be7 O-O")
+ ("D46c" "Semi-Slav: Bogoljubow, 7.O-O O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 Be7 O-O O-O")
+ ("D46d" "Semi-Slav: Bogoljubow, 7.O-O O-O 8.b3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 Be7 O-O O-O b3")
+ ("D46e" "Semi-Slav: Chigorin Defence" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bd6")
+ ("D46e" "Semi-Slav: Chigorin, 7.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bd6 e4")
+ ("D46e" "Semi-Slav: Chigorin, 7.e4 dxe4 8.Nxe4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 Bd6 e4 dxe4 Nxe4")
+ ("D46f" "Semi-Slav: Chigorin, 7.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bd6 Qc2")
+ ("D46g" "Semi-Slav: Chigorin, 7.Qc2 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 Qc2 dxc4")
+ ("D46g" "Semi-Slav: Chigorin, 7.Qc2 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 Qc2 dxc4 Bxc4")
+ ("D46h" "Semi-Slav: Chigorin, 7.Qc2 O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 Qc2 O-O")
+ ("D46i" "Semi-Slav: Chigorin, 7.Qc2 Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4")
+ ("D46i" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...e5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 e5")
+ ("D46j" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...Qe7" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 Qe7")
+ ("D46j" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...Qe7 10.Bd2" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 Qe7 Bd2")
+ ("D46j" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...Qe7 10.a3" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 Qe7 a3")
+ ("D46j" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...Qe7 10.h3" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 Qe7 h3")
+ ("D46k" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...a6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 a6")
+ ("D46k" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...a6 10.Rd1" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 a6 Rd1")
+ ("D46k" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...a6 10.Rd1 b5" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 a6 Rd1 b5")
+ ("D46l" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 b5")
+ ("D46m" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5 10.Be2" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 b5 Be2")
+ ("D46m" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5 10.Be2 Bb7" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 b5 Be2 Bb7")
+ ("D46m" "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5 10.Be2 Bb7 11.Rd1" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 Qc2 O-O O-O dxc4 Bxc4 b5 Be2 Bb7 Rd1")
+ ("D46n" "Semi-Slav: Chigorin, 7.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
Bd6 O-O")
+ ("D46o" "Semi-Slav: Chigorin, 7.O-O O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 O-O O-O")
+ ("D46p" "Semi-Slav: Chigorin, 7.O-O O-O 8.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 Bd6 O-O O-O e4")
+ ("D46p" "Semi-Slav: Chigorin, 7.O-O O-O 8.e4 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxc4")
+ ("D46p" "Semi-Slav: Chigorin, 7.O-O O-O 8.e4 dxc4 9.Bxc4" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxc4 Bxc4")
+ ("D46p" "Semi-Slav: Chigorin, 7.O-O O-O 8.e4 dxc4 9.Bxc4 e5" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxc4 Bxc4 e5")
+ ("D46q" "Semi-Slav: Chigorin, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 O-O O-O e4 dxe4")
+ ("D46q" "Semi-Slav: Chigorin, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 O-O O-O e4 dxe4 Nxe4")
+ ("D46q" "Semi-Slav: Chigorin, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 Bd6 O-O O-O e4 dxe4 Nxe4 Nxe4 Bxe4")
+ ("D46r" "Semi-Slav: Chigorin, Main Line, 10...h6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxe4 Nxe4 Nxe4 Bxe4 h6")
+ ("D46r" "Semi-Slav: Chigorin, Main Line, 10...h6 11.Bc2" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxe4 Nxe4 Nxe4 Bxe4 h6 Bc2")
+ ("D46r" "Semi-Slav: Chigorin, Main Line, 10...h6 11.Bc2 e5" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 Bd6 O-O O-O e4 dxe4 Nxe4 Nxe4 Bxe4 h6 Bc2 e5")
+ ("D47a" "Semi-Slav: Meran Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4")
+ ("D47a" "Semi-Slav: Meran Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4 Bxc4")
+ ("D47a" "Semi-Slav: Meran, 7...b5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4 Bxc4 b5")
+ ("D47b" "Semi-Slav: Meran, Freymann Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bb3")
+ ("D47c" "Semi-Slav: Meran, Freymann, 8...b4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bb3 b4")
+ ("D47d" "Semi-Slav: Meran, Capablanca Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Be2")
+ ("D47d" "Semi-Slav: Meran, Capablanca, 8...b4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Be2 b4")
+ ("D47e" "Semi-Slav: Meran, Capablanca, 8...a6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Be2 a6")
+ ("D47f" "Semi-Slav: Meran, Capablanca, 8...Bb7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Be2 Bb7")
+ ("D47f" "Semi-Slav: Meran, Capablanca, 8...Bb7 9.O-O" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Be2 Bb7 O-O")
+ ("D47g" "Semi-Slav: Meran, Capablanca, 8...Bb7 9.O-O a6" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Be2 Bb7 O-O a6")
+ ("D47h" "Semi-Slav: Meran, 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4 Bxc4 b5 Bd3")
+ ("D47h" "Semi-Slav: Meran, 8.Bd3 Bd6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4 Bxc4 b5 Bd3 Bd6")
+ ("D47i" "Semi-Slav: Meran, Lundin Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 b4")
+ ("D47i" "Semi-Slav: Meran, Lundin, 9.Na4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 b4 Na4")
+ ("D47j" "Semi-Slav: Meran, Lundin, 9.Ne4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 b4 Ne4")
+ ("D47k" "Semi-Slav: Meran, Lundin, 9.Ne4 Nxe4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 b4 Ne4 Nxe4")
+ ("D47l" "Semi-Slav: Meran, Lundin, 9.Ne4 Be7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 b4 Ne4 Be7")
+ ("D47l" "Semi-Slav: Meran, Lundin, 9.Ne4 Be7 10.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 b4 Ne4 Be7 O-O")
+ ("D47m" "Semi-Slav: Meran, Wade Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7")
+ ("D47m" "Semi-Slav: Meran, Wade, 9.a3" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 Bb7 a3")
+ ("D47n" "Semi-Slav: Meran, Wade, 9.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O")
+ ("D47n" "Semi-Slav: Meran, Wade, 9.O-O b4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4")
+ ("D47o" "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4 Ne4")
+ ("D47o" "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4 Be7" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4 Ne4 Be7")
+ ("D47p" "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4 Be7 11.Nxf6+" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4 Ne4 Be7 Nxf6+")
+ ("D47p" "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4 Be7 11.Nxf6+ Nxf6" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4 Ne4 Be7 Nxf6+ Nxf6")
+ ("D47p" "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4 Be7 11.Nxf6+ Nxf6 12.e4" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 O-O b4 Ne4 Be7 Nxf6+ 
Nxf6 e4")
+ ("D47q" "Semi-Slav: Meran, Wade, 9.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 Bb7 e4")
+ ("D47r" "Semi-Slav: Meran, Wade, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 e4 b4 Na4 c5 e5 Nd5")
+ ("D47s" "Semi-Slav: Meran, Wade, Main Line, 12.Nxc5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 e4 b4 Na4 c5 e5 Nd5 Nxc5")
+ ("D47t" "Semi-Slav: Meran, Wade, Main Line, 12.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 Bb7 e4 b4 Na4 c5 e5 Nd5 O-O")
+ ("D48a" "Semi-Slav: Meran, 8...a6" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 
dxc4 Bxc4 b5 Bd3 a6")
+ ("D48b" "Semi-Slav: Meran, 8...a6 9.a4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 a6 a4")
+ ("D48c" "Semi-Slav: Meran, 8...a6 9.O-O" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O")
+ ("D48c" "Semi-Slav: Meran, 8...a6 9.O-O c5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O c5")
+ ("D48d" "Semi-Slav: Meran, 8...a6 9.O-O c5 10.Qe2" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O c5 Qe2")
+ ("D48e" "Semi-Slav: Meran, 8...a6 9.O-O Bb7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7")
+ ("D48f" "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7 e4")
+ ("D48f" "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4 c5 11.d5" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7 e4 c5 d5")
+ ("D48g" "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4 c5 11.d5 Qc7" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7 e4 c5 d5 Qc7")
+ ("D48g" "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4 c5 11.d5 Qc7 12.dxe6" "d4 
d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7 e4 c5 d5 Qc7 
dxe6")
+ ("D48g" "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4 c5 11.d5 Qc7 12.dxe6 fxe6" 
"d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O Bb7 e4 c5 d5 
Qc7 dxe6 fxe6")
+ ("D48h" "Semi-Slav: Meran, 8...a6 9.e4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 a6 e4")
+ ("D48i" "Semi-Slav: Meran, 8...a6 9.e4 Bb7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 Bb7")
+ ("D48j" "Semi-Slav: Meran, Pirc Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 b4")
+ ("D48k" "Semi-Slav: Meran, 8...a6 9.e4 c5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5")
+ ("D48l" "Semi-Slav: Meran, Reynolds Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5")
+ ("D48m" "Semi-Slav: Meran, Reynolds, 10...e5" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 e5")
+ ("D48n" "Semi-Slav: Meran, Reynolds, 10...Qc7" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 Qc7")
+ ("D48o" "Semi-Slav: Meran, Reynolds, 10...c4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 c4")
+ ("D48p" "Semi-Slav: Meran, Reynolds, 10...c4 11.dxe6 fxe6" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 c4 dxe6 fxe6")
+ ("D48p" "Semi-Slav: Meran, Reynolds, 10...c4 11.dxe6 fxe6 12.Bc2" "d4 d5 c4 
e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 c4 dxe6 fxe6 Bc2")
+ ("D48p" "Semi-Slav: Meran, Reynolds, 10...c4 11.dxe6 fxe6 12.Bc2 Qc7" "d4 d5 
c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 c4 dxe6 fxe6 Bc2 
Qc7")
+ ("D48p" "Semi-Slav: Meran, Reynolds, 10...c4 11.dxe6 fxe6 12.Bc2 Qc7 13.O-O" 
"d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 d5 c4 dxe6 
fxe6 Bc2 Qc7 O-O")
+ ("D48q" "Semi-Slav: Meran, Old Main Line" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 
Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5")
+ ("D48r" "Semi-Slav: Meran, Rabinovich Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 Ng4")
+ ("D48s" "Semi-Slav: Meran, Old Main Line, 10...cxd4" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4")
+ ("D49a" "Semi-Slav: Meran, Blumenfeld Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5")
+ ("D49b" "Semi-Slav: Meran, Old Main Line, Gligoric Variation" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Ng4")
+ ("D49c" "Semi-Slav: Meran, Old Main Line, Gligoric, 12.Qa4" "d4 d5 c4 e6 Nc3 
Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Ng4 Qa4")
+ ("D49d" "Semi-Slav: Meran, Trifunovic Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 
e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Ng4 Qa4 Ngxe5")
+ ("D49e" "Semi-Slav: Meran, Sozin Variation" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Nxe5")
+ ("D49f" "Semi-Slav: Meran, Sozin, Rellstab Attack" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Nxe5 Nxe5 axb5 O-O")
+ ("D49g" "Semi-Slav: Meran, Sozin, Stahlberg Attack" "d4 d5 c4 e6 Nc3 Nf6 Nf3 
c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Nxe5 Nxe5 axb5 Qf3")
+ ("D49g" "Semi-Slav: Meran, Sozin, Stahlberg Attack, 13...Bb4" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Nxe5 Nxe5 
axb5 Qf3 Bb4")
+ ("D49h" "Semi-Slav: Meran, Sozin, 13.Bxb5+" "d4 d5 c4 e6 Nc3 Nf6 Nf3 c6 e3 
Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 Nxe5 Nxe5 axb5 Bxb5+")
+ ("D49i" "Semi-Slav: Meran, Old Main Line, 11.Nxb5 axb5" "d4 d5 c4 e6 Nc3 Nf6 
Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 axb5")
+ ("D49j" "Semi-Slav: Meran, Old Main Line, Botvinnik Variation" "d4 d5 c4 e6 
Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 axb5 exf6 
Qb6")
+ ("D49k" "Semi-Slav: Meran, Old Main Line, 11.Nxb5 axb5 12.exf6 gxf6" "d4 d5 
c4 e6 Nc3 Nf6 Nf3 c6 e3 Nbd7 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4 c5 e5 cxd4 Nxb5 axb5 
exf6 gxf6")
+ ("D50" "QGD: 4.Bg5" "d4 d5 c4 e6 Nc3 Nf6 Bg5")
+ ("D50" "QGD: 4.Bg5 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c6")
+ ("D50" "QGD: 4.Bg5 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 dxc4")
+ ("D50" "QGD: 4.Bg5 Bb4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Bb4")
+ ("D50" "QGD: Dutch-Peruvian Gambit" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5")
+ ("D50" "QGD: Dutch-Peruvian, 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 e3")
+ ("D50" "QGD: Semi-Tarrasch, Pillsbury Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 
Nf3")
+ ("D50" "QGD: Semi-Tarrasch, Old Pillsbury Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
c5 Nf3 cxd4 Qxd4")
+ ("D50" "QGD: Semi-Tarrasch, Pillsbury, 6.Nxd4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 
Nf3 cxd4 Nxd4")
+ ("D50" "QGD: Semi-Tarrasch, Pillsbury, 6.Nxd4 e5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 
Nf3 cxd4 Nxd4 e5")
+ ("D50" "QGD: Semi-Tarrasch, Pillsbury, Krause Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 c5 Nf3 cxd4 Nxd4 e5 Ndb5 a6 Qa4")
+ ("D50" "QGD: Dutch-Peruvian, 5.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 cxd5")
+ ("D50" "QGD: Dutch-Peruvian, Canal (Venice) Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 c5 cxd5 Qb6")
+ ("D50" "QGD: Dutch-Peruvian, Prins Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 c5 
cxd5 cxd4")
+ ("D50" "QGD: Dutch-Peruvian, Prins, 6.Qxd4 Be7 7.e4 Nc6" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 c5 cxd5 cxd4 Qxd4 Be7 e4 Nc6")
+ ("D50" "QGD: Dutch-Peruvian, Prins, 6.Qxd4 Be7 7.e4 Nc6 8.Qd2" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 c5 cxd5 cxd4 Qxd4 Be7 e4 Nc6 Qd2")
+ ("D51" "QGD: 4.Bg5 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 Nf3")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.Nf3 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 Nf3 c6")
+ ("D51" "QGD: Rochlin Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 Nf3 c6 Rc1 Qa5 
Bd2")
+ ("D51" "QGD: Alekhine 4.Bg5 Nbd7 5.Nf3 c6 6.e4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 
Nf3 c6 e4")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3")
+ ("D51" "QGD: Manhattan Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 Bb4")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.e3 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6")
+ ("D51" "QGD: Capablanca's Anti-Cambridge Springs" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 a3")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.e3 c6 6.cxd5 cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 
c6 cxd5 cxd5")
+ ("D51" "QGD: 4.Bg5 Nbd7 5.e3 c6 6.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6 
Qc2")
+ ("D52a" "QGD: 4.Bg5 Nbd7 5.e3 c6 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6 
Nf3")
+ ("D52b" "QGD: Cambridge Springs Defence" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6 
Nf3 Qa5")
+ ("D52c" "QGD: Cambridge Springs, Capablanca Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Nbd7 e3 c6 Nf3 Qa5 Bxf6")
+ ("D52d" "QGD: Cambridge Springs, 7.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6 
Nf3 Qa5 cxd5")
+ ("D52e" "QGD: Cambridge Springs, Yugoslav Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 Nf3 Qa5 cxd5 Nxd5")
+ ("D52f" "QGD: Cambridge Springs, Yugoslav, 8.Qd2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 Nf3 Qa5 cxd5 Nxd5 Qd2")
+ ("D52g" "QGD: Cambridge Springs, 7.Nd2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 c6 
Nf3 Qa5 Nd2")
+ ("D52h" "QGD: Cambridge Springs, Rubinstein Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Nbd7 e3 c6 Nf3 Qa5 Nd2 dxc4")
+ ("D52i" "QGD: Cambridge Springs, Bogoljubow Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Nbd7 e3 c6 Nf3 Qa5 Nd2 Bb4")
+ ("D52j" "QGD: Cambridge Springs, Bogoljubow, 8.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 Nf3 Qa5 Nd2 Bb4 Qc2")
+ ("D52k" "QGD: Cambridge Springs, 8.Qc2 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 
c6 Nf3 Qa5 Nd2 Bb4 Qc2 dxc4")
+ ("D52l" "QGD: Cambridge Springs, 8.Qc2 O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Nbd7 e3 
c6 Nf3 Qa5 Nd2 Bb4 Qc2 O-O")
+ ("D52m" "QGD: Cambridge Springs, Argentine Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Nbd7 e3 c6 Nf3 Qa5 Nd2 Bb4 Qc2 O-O Bh4")
+ ("D52n" "QGD: Cambridge Springs, 8.Qc2 O-O 9.Be2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 Nf3 Qa5 Nd2 Bb4 Qc2 O-O Be2")
+ ("D52o" "QGD: Cambridge Springs, 8.Qc2 O-O 9.Be2 e5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Nbd7 e3 c6 Nf3 Qa5 Nd2 Bb4 Qc2 O-O Be2 e5")
+ ("D53a" "QGD: 4.Bg5 Be7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7")
+ ("D53b" "QGD: 4.Bg5 Be7 5.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 cxd5 Nxd5")
+ ("D53c" "QGD: 4.Bg5 Be7 5.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3")
+ ("D53d" "QGD: 4.Bg5 Be7 5.Nf3 h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 h6")
+ ("D53e" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 h6 
Bxf6")
+ ("D53f" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6 Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
Nf3 h6 Bxf6 Bxf6")
+ ("D53g" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6 Bxf6 7.e3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 Nf3 h6 Bxf6 Bxf6 e3")
+ ("D53h" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 h6 
Bh4")
+ ("D53i" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 
h6 Bh4 O-O")
+ ("D53j" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O 7.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 Nf3 h6 Bh4 O-O Qc2")
+ ("D53k" "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O 7.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 Nf3 h6 Bh4 O-O Rc1")
+ ("D53l" "QGD: 4.Bg5 Be7 5.Nf3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 O-O")
+ ("D53m" "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 O-O 
Qc2")
+ ("D53n" "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
Nf3 O-O Qc2 Nbd7")
+ ("D53o" "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 Nf3 
O-O Qc2 c5")
+ ("D53p" "QGD: 4.Bg5 Be7 5.e3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3")
+ ("D53q" "QGD: Early Lasker Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 Ne4")
+ ("D53r" "QGD: 4.Bg5 Be7 5.e3 Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 Nbd7")
+ ("D53s" "QGD: 4.Bg5 Be7 5.e3 Nbd7 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 Nbd7 
Nf3")
+ ("D53t" "QGD: 4.Bg5 Be7 5.e3 h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 h6")
+ ("D53u" "QGD: 4.Bg5 Be7 5.e3 O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O")
+ ("D53v" "QGD: 4.Bg5 Be7 5.e3 O-O 6.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Qc2")
+ ("D53v" "QGD: 4.Bg5 Be7 5.e3 O-O 6.Qc2 c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Qc2 c5")
+ ("D54a" "QGD: Anti-Neo-Orthodox Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Rc1")
+ ("D54b" "QGD: Anti-Neo-Orthodox Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Rc1 h6 Bh4")
+ ("D54c" "QGD: Anti-Neo-Orthodox, 7.Bh4 b6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Rc1 h6 Bh4 b6")
+ ("D54c" "QGD: Anti-Neo-Orthodox, 8.cxd5 Nxd5 9.Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Rc1 h6 Bh4 b6 cxd5 Nxd5 Nxd5")
+ ("D54d" "QGD: Anti-Neo-Orthodox, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Rc1 h6 Bh4 b6 cxd5 Nxd5 Nxd5 exd5 Bxe7 Qxe7")
+ ("D54e" "QGD: Anti-Neo-Orthodox, Main Line, 11.Be2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Rc1 h6 Bh4 b6 cxd5 Nxd5 Nxd5 exd5 Bxe7 Qxe7 Be2")
+ ("D55a" "QGD: 6.Nf3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3")
+ ("D55b" "QGD: Lasker without ...h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Ne4")
+ ("D55c" "QGD: 6.Nf3 b6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 b6")
+ ("D55d" "QGD: 6.Nf3 b6 7.Be2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 b6 Be2")
+ ("D55e" "QGD: 6.Nf3 b6 7.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
b6 cxd5 exd5")
+ ("D55f" "QGD: 6.Nf3 b6 7.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
b6 cxd5 Nxd5")
+ ("D55g" "QGD: Neo-Orthodox Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6")
+ ("D55h" "QGD: Neo-Orthodox, 7.Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bxf6")
+ ("D55i" "QGD: Neo-Orthodox, 7.Bxf6 Bxf6 8.Qb3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bxf6 Bxf6 Qb3")
+ ("D55j" "QGD: Neo-Orthodox, Gligoric Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bxf6 Bxf6 Rc1")
+ ("D55k" "QGD: Neo-Orthodox, Petrosian Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bxf6 Bxf6 Rc1 c6 Bd3 Nd7 O-O dxc4 Bxc4")
+ ("D56" "QGD: Neo-Orthodox, 7.Bh4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4")
+ ("D56" "QGD: Lasker Defence" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 
Ne4")
+ ("D56" "QGD: Lasker Defence, 9.Nxe4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bh4 Ne4 Bxe7 Qxe7 Nxe4")
+ ("D56" "QGD: Lasker Defence, Teichmann Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 Qc2")
+ ("D56" "QGD: Lasker Defence, Teichmann, 9...c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 Qc2 c6")
+ ("D56" "QGD: Lasker Defence, Teichmann, 9...Nxc3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 Qc2 Nxc3")
+ ("D56" "QGD: Lasker Defence, 9.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bh4 Ne4 Bxe7 Qxe7 Rc1")
+ ("D56" "QGD: Lasker Defence, 9.Rc1 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 Rc1 c6")
+ ("D56" "QGD: Lasker Defence, 9.Rc1 c6 10.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 Rc1 c6 Bd3")
+ ("D57" "QGD: Lasker Defence, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5")
+ ("D57" "QGD: Lasker Defence, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3")
+ ("D57" "QGD: Lasker Defence, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3")
+ ("D57" "QGD: Lasker Defence, Main Line" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3 exd5")
+ ("D57" "QGD: Lasker Defence, Main Line, 11.Qb3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3 exd5 Qb3")
+ ("D57" "QGD: Lasker Defence, Main Line, Bernstein Variation" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3 exd5 Qb3 Qd6")
+ ("D57" "QGD: Lasker Defence, Main Line, Bernstein, 12.c4 dxc4 13.Bxc4" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3 exd5 Qb3 
Qd6 c4 dxc4 Bxc4")
+ ("D57" "QGD: Lasker Defence, Main Line, 11.Qb3 Rd8" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 h6 Bh4 Ne4 Bxe7 Qxe7 cxd5 Nxc3 bxc3 exd5 Qb3 Rd8")
+ ("D58a" "QGD: Tartakower System" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6")
+ ("D58b" "QGD: Tartakower, 8.Qb3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Qb3")
+ ("D58c" "QGD: Tartakower, 8.Qc2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Qc2")
+ ("D58d" "QGD: Tartakower, 8.Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Bxf6")
+ ("D58e" "QGD: Tartakower, 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Bd3")
+ ("D58f" "QGD: Tartakower, 8.Bd3 Bb7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bh4 b6 Bd3 Bb7")
+ ("D58g" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O")
+ ("D58h" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7")
+ ("D58h" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Bg3" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Bg3")
+ ("D58h" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Rc1" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Rc1")
+ ("D58h" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Rc1 c5" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Rc1 c5")
+ ("D58i" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Qe2")
+ ("D58j" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2 c5" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Qe2 c5")
+ ("D58j" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2 c5 11.Bg3" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Qe2 c5 Bg3")
+ ("D58j" "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2 c5 11.Rfd1" "d4 d5 c4 
e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Bd3 Bb7 O-O Nbd7 Qe2 c5 Rfd1")
+ ("D58k" "QGD: Tartakower, 8.Be2" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Be2")
+ ("D58k" "QGD: Tartakower, 8.Be2 Bb7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bh4 b6 Be2 Bb7")
+ ("D58l" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5")
+ ("D58l" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5")
+ ("D58m" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.O-O" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5 O-O")
+ ("D58n" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4" "d4 d5 c4 
e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5 b4")
+ ("D58n" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4 c5" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5 b4 c5")
+ ("D58o" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4 c6" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5 b4 c6")
+ ("D58o" "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4 c6 12.O-O" 
"d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Be2 Bb7 Bxf6 Bxf6 cxd5 exd5 
b4 c6 O-O")
+ ("D58p" "QGD: Tartakower, 8.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 Rc1")
+ ("D58p" "QGD: Tartakower, 8.Rc1 Bb7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
h6 Bh4 b6 Rc1 Bb7")
+ ("D58q" "QGD: Tartakower, 8.Rc1 Bb7 9.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 Rc1 Bb7 cxd5")
+ ("D58q" "QGD: Tartakower, 8.Rc1 Bb7 9.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 b6 Rc1 Bb7 cxd5 exd5")
+ ("D58r" "QGD: Tartakower, 8.Rc1 Bb7 9.Bxf6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 Rc1 Bb7 Bxf6")
+ ("D58r" "QGD: Tartakower, 8.Rc1 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 Rc1 Bb7 Bxf6 Bxf6 cxd5 exd5")
+ ("D58s" "QGD: Tartakower, 8.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 
Bh4 b6 cxd5")
+ ("D58s" "QGD: Tartakower, 8.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 b6 cxd5 exd5")
+ ("D58t" "QGD: Tartakower, 8.cxd5 exd5 9.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 exd5 Bd3")
+ ("D59a" "QGD: Tartakower, 8.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 h6 Bh4 b6 cxd5 Nxd5")
+ ("D59b" "QGD: Tartakower, 8.cxd5 Nxd5 9.Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Nxd5")
+ ("D59c" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7")
+ ("D59d" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7")
+ ("D59e" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1")
+ ("D59e" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1 Bb7")
+ ("D59f" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Nxd5" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1 Bb7 Nxd5")
+ ("D59f" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Nxd5 Bxd5" 
"d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1 Bb7 
Nxd5 Bxd5")
+ ("D59g" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Bd3" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1 Bb7 Bd3")
+ ("D59h" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Be2" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Rc1 Bb7 Be2")
+ ("D59i" "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Nxd5" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5")
+ ("D59j" "QGD: Tartakower, Main Line, 11.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Be2")
+ ("D59k" "QGD: Tartakower, Main Line, 11.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Rc1")
+ ("D59l" "QGD: Tartakower, Main Line, 11.Rc1 Be6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Rc1 Be6")
+ ("D59m" "QGD: Tartakower, Main Line, 12.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Rc1 Be6 Bd3")
+ ("D59n" "QGD: Tartakower, Main Line, 12.Qa4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Rc1 Be6 Qa4")
+ ("D59n" "QGD: Tartakower, Main Line, 12.Qa4 c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 h6 Bh4 b6 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Rc1 Be6 Qa4 c5")
+ ("D60" "QGD: Orthodox Defence" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7")
+ ("D60" "QGD: Orthodox, 7.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 cxd5 Nxd5")
+ ("D60" "QGD: Orthodox, Rauzer Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Qb3")
+ ("D60" "QGD: Orthodox, Rauzer Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Qb3 c6")
+ ("D60" "QGD: Orthodox, Botvinnik Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Bd3")
+ ("D60" "QGD: Orthodox, Botvinnik, 7...b6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Bd3 b6")
+ ("D60" "QGD: Orthodox, Botvinnik, 7...c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Bd3 c6")
+ ("D60" "QGD: Orthodox, Botvinnik, 7...dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Bd3 dxc4")
+ ("D60" "QGD: Orthodox, Botvinnik, 7...dxc4 8.Bxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Bd3 dxc4 Bxc4")
+ ("D60" "QGD: Orthodox, Botvinnik, 8...a6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Bd3 dxc4 Bxc4 a6")
+ ("D60" "QGD: Orthodox, Botvinnik, 8...c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Bd3 dxc4 Bxc4 c5")
+ ("D60" "QGD: Orthodox, Botvinnik, 8...c5 9.O-O a6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Bd3 dxc4 Bxc4 c5 O-O a6")
+ ("D61" "QGD: Orthodox, Rubinstein Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Qc2")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Qc2 h6")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 h6 8.Bh4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 h6 Bh4")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 h6 8.Bh4 c5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 h6 Bh4 c5")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 a6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Qc2 a6")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Qc2 c6")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c6 8.a3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c6 a3")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c6 8.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c6 Bd3")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c6 8.Bd3 dxc4 9.Bxc4" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c6 Bd3 dxc4 Bxc4")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c6 8.Rd1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c6 Rd1")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Qc2 c5")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.Rd1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c5 Rd1")
+ ("D61" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.O-O-O" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c5 O-O-O")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 cxd4" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 cxd4")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 exd5")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 exd5 9.Bd3" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 exd5 Bd3")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 Nxd5")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 Nxd5 9.Bxe7 Qxe7" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 Nxd5 Bxe7 Qxe7")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5, Main Line" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5, Main Line, 11.Bd3" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 Bd3")
+ ("D62" "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5, Main Line, 11.Bd3 g6" "d4 
d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Qc2 c5 cxd5 Nxd5 Bxe7 Qxe7 Nxd5 exd5 
Bd3 g6")
+ ("D63" "QGD: Orthodox, 7.Rc1" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 
Rc1")
+ ("D63" "QGD: Orthodox, 7.Rc1 Re8" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 Rc1 Re8")
+ ("D63" "QGD: Orthodox, 7.Rc1 h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 
Rc1 h6")
+ ("D63" "QGD: Orthodox, 7.Rc1 h6 8.Bh4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 h6 Bh4")
+ ("D63" "QGD: Orthodox, 7.Rc1 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 Rc1 dxc4")
+ ("D63" "QGD: Orthodox, 7.Rc1 dxc4 8.Bxc4 a6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 dxc4 Bxc4 a6")
+ ("D63" "QGD: Orthodox, 7.Rc1 b6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 
Rc1 b6")
+ ("D63" "QGD: Orthodox, 7.Rc1 b6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 
Rc1 b6 cxd5 exd5")
+ ("D63" "QGD: Orthodox, 7.Rc1 b6, Duras Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 b6 cxd5 exd5 Qa4")
+ ("D63" "QGD: Orthodox, 7.Rc1 b6, Pillsbury Attack" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 b6 cxd5 exd5 Bd3")
+ ("D63" "QGD: Orthodox, 7.Rc1 b6, Capablanca Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 b6 cxd5 exd5 Bb5")
+ ("D63" "QGD: Orthodox, Swiss Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 a6")
+ ("D63" "QGD: Orthodox, Swiss, 8.a3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 Rc1 a6 a3")
+ ("D63" "QGD: Orthodox, Swiss, 8.c5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 Rc1 a6 c5")
+ ("D63" "QGD: Orthodox, Swiss, 8.c5 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 a6 c5 c6")
+ ("D63" "QGD: Orthodox, Swiss, Karlsbad Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 a6 cxd5")
+ ("D63" "QGD: Orthodox, Swiss, Karlsbad Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 a6 cxd5 exd5")
+ ("D63" "QGD: Orthodox, Swiss, Karlsbad, 9.Bd3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 Nbd7 Rc1 a6 cxd5 exd5 Bd3")
+ ("D63" "QGD: Orthodox, Swiss, Karlsbad, 9.Bd3 Re8" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 a6 cxd5 exd5 Bd3 Re8")
+ ("D63" "QGD: Orthodox, Swiss, Karlsbad, 9.Bd3 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 a6 cxd5 exd5 Bd3 c6")
+ ("D63" "QGD: Orthodox, 7.Rc1 c6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 
Rc1 c6")
+ ("D63" "QGD: Orthodox, 7.Rc1 c6 8.a3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 
Nbd7 Rc1 c6 a3")
+ ("D64" "QGD: Orthodox, Rubinstein Attack" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 c6 Qc2")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, 8...dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 dxc4")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, Wolf Variation" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 Ne4")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, 8...Re8" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 Re8")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, 8...Re8 9.a3" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 Re8 a3")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, 8...Re8 9.a3 a6" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 Re8 a3 a6")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, 8...h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 h6")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, Carlsbad Variation" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, Grünfeld Variation" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 a3")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, Grünfeld Variation, 9...h6" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 a3 h6")
+ ("D64" "QGD: Orthodox, Rubinstein Attack, Grünfeld Variation, 9...h6 10.Bh4" 
"d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 a3 h6 Bh4")
+ ("D65" "QGD: Orthodox, Rubinstein Attack, 9.cxd5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5")
+ ("D65" "QGD: Orthodox, Rubinstein Attack, 9.cxd5 Nxd5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 Nxd5")
+ ("D65" "QGD: Orthodox, Rubinstein Attack, 9.cxd5 exd5" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 h6" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 h6")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 h6 11.Bh4" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 h6 Bh4")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 Re8" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 Re8")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 Re8 11.O-O Nf8" "d4 d5 
c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 Re8 O-O Nf8")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 Re8 11.O-O Nf8 12.Ne5" 
"d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 Re8 
O-O Nf8 Ne5")
+ ("D65" "QGD: Orthodox, Rubinstein, 9.cxd5 exd5 10.Bd3 Re8 11.O-O Nf8 12.h3"
+  "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Qc2 a6 cxd5 exd5 Bd3 Re8 
O-O Nf8 h3")
+ ("D66" "QGD: Orthodox, Main Line"
+  "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3")
+ ("D66" "QGD: Orthodox, Main Line, 8...a6"
+  "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 a6")
+ ("D66" "QGD: Orthodox, Main Line, 8...h6" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 c6 Bd3 h6")
+ ("D66" "QGD: Orthodox, Main Line, 8...h6 9.Bh4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 
e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 h6 Bh4")
+ ("D66" "QGD: Orthodox, Main Line, 8...h6 9.Bh4 dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 h6 Bh4 dxc4")
+ ("D66" "QGD: Orthodox, Main Line, 8...h6 9.Bh4 dxc4 10.Bxc4" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 h6 Bh4 dxc4 Bxc4")
+ ("D66" "QGD: Orthodox, Main Line, 8...h6 9.Bh4 dxc4 10.Bxc4 b5" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 h6 Bh4 dxc4 Bxc4 b5")
+ ("D66" "QGD: Orthodox, Main Line, 8...Re8" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 Re8")
+ ("D66" "QGD: Orthodox, Main Line, 8...dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4")
+ ("D66" "QGD: Orthodox, Main Line, 8...dxc4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4")
+ ("D66" "QGD: Orthodox, Main Line, Fianchetto Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 b5")
+ ("D66" "QGD: Orthodox, Main Line, Fianchetto Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 b5 Bd3 a6")
+ ("D66" "QGD: Orthodox, Main Line, Fianchetto, 11.O-O" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 b5 Bd3 a6 O-O")
+ ("D66" "QGD: Orthodox, Main Line, Fianchetto, 11.e4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 b5 Bd3 a6 e4")
+ ("D67" "QGD: Orthodox, Main Line, Capablanca Freeing Manoevure" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5")
+ ("D67" "QGD: Orthodox, Main Line, Janowski Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 h4")
+ ("D67" "QGD: Orthodox, Main Line, Capablanca Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7")
+ ("D67" "QGD: Orthodox, Main Line, Alekhine Variation" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 Ne4")
+ ("D67" "QGD: Orthodox, Main Line, Alekhine, 11...e5 (Lasker)" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 Ne4 e5")
+ ("D67" "QGD: Orthodox, Main Line, Alekhine, 11...N5f6" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 Ne4 N5f6")
+ ("D67" "QGD: Orthodox, Main Line, Capablanca, 11.O-O" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O")
+ ("D67" "QGD: Orthodox, Main Line, Capablanca, 11.O-O Nxc3" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3")
+ ("D68" "QGD: Orthodox, Classical Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5")
+ ("D68" "QGD: Orthodox, Classical, 13.Bb3" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 O-O 
Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Bb3")
+ ("D68" "QGD: Orthodox, Classical, Maroczy Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Qb1")
+ ("D68" "QGD: Orthodox, Classical, Maroczy, 13...exd4" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Qb1 
exd4")
+ ("D68" "QGD: Orthodox, Classical, Vidmar Variation" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Qc2")
+ ("D68" "QGD: Orthodox, Classical, Vidmar, 13...e4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Qc2 e4")
+ ("D68" "QGD: Orthodox, Classical, Vidmar, 13...exd4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 Qc2 
exd4")
+ ("D68" "QGD: Orthodox, Classical, Vidmar, 13...exd4 14.exd4 Nb6" "d4 d5 c4 e6 
Nc3 Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 
Rxc3 e5 Qc2 exd4 exd4 Nb6")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 dxe5")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5" "d4 d5 c4 e6 Nc3 Nf6 Bg5 Be7 e3 
O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 dxe5 Nxe5 Nxe5 
Qxe5")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5: 15.f4" "d4 d5 c4 e6 Nc3 Nf6 Bg5 
Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 dxe5 
Nxe5 Nxe5 Qxe5 f4")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5: 15.f4 Qe4" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 
dxe5 Nxe5 Nxe5 Qxe5 f4 Qe4")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5: 15.f4 Qf6" "d4 d5 c4 e6 Nc3 Nf6 
Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 
dxe5 Nxe5 Nxe5 Qxe5 f4 Qf6")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5: 15.f4 Qf6 16.f5" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 
dxe5 Nxe5 Nxe5 Qxe5 f4 Qf6 f5")
+ ("D69" "QGD: Orthodox, Classical, 13.dxe5: 15.f4 Qf6 16.e4" "d4 d5 c4 e6 Nc3 
Nf6 Bg5 Be7 e3 O-O Nf3 Nbd7 Rc1 c6 Bd3 dxc4 Bxc4 Nd5 Bxe7 Qxe7 O-O Nxc3 Rxc3 e5 
dxe5 Nxe5 Nxe5 Qxe5 f4 Qf6 e4")
+ ("D70" "Neo-Grünfeld: 3.Nf3 d5" "d4 Nf6 c4 g6 Nf3 d5")
+ ("D70" "Neo-Grünfeld: Alekhine's Anti-Grünfeld" "d4 Nf6 c4 g6 f3 d5")
+ ("D70" "Neo-Grünfeld: Alekhine's, 5.e4 Nb6" "d4 Nf6 c4 g6 f3 d5 cxd5 Nxd5 e4 
Nb6")
+ ("D70" "Neo-Grünfeld: Alekhine's, 7.Be3 O-O" "d4 Nf6 c4 g6 f3 d5 cxd5 Nxd5 e4 
Nb6 Nc3 Bg7 Be3 O-O")
+ ("D70" "Neo-Grünfeld: 3.g3 d5" "d4 Nf6 c4 g6 g3 d5")
+ ("D70" "Neo-Grünfeld: 4.cxd5" "d4 Nf6 c4 g6 g3 d5 cxd5")
+ ("D70" "Neo-Grünfeld: 4.Bg2" "d4 Nf6 c4 g6 g3 d5 Bg2")
+ ("D70" "Neo-Grünfeld: 4.Bg2 c6" "d4 Nf6 c4 g6 g3 d5 Bg2 c6")
+ ("D70" "Neo-Grünfeld: 4.Bg2 Bg7" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 Nxd5")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 
Nxd5 Nc3")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.Nc3 Nxc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
cxd5 Nxd5 Nc3 Nxc3")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.Nc3 Nxc3 7.bxc3 c5" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 cxd5 Nxd5 Nc3 Nxc3 bxc3 c5")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.Nc3 Nb6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 
Nxd5 Nc3 Nb6")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 Nxd5 
e4")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 
Nxd5 e4 Nb6")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 cxd5 
Nxd5 e4 Nb4")
+ ("D71" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb4 7.d5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
cxd5 Nxd5 e4 Nb4 d5")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
cxd5 Nxd5 e4 Nb6 Ne2")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2 Nc6" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 cxd5 Nxd5 e4 Nb6 Ne2 Nc6")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2 e5" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 cxd5 Nxd5 e4 Nb6 Ne2 e5")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2 c5" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 cxd5 Nxd5 e4 Nb6 Ne2 c5")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2 O-O" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 cxd5 Nxd5 e4 Nb6 Ne2 O-O")
+ ("D72" "Neo-Grünfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2 O-O 8.O-O" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 cxd5 Nxd5 e4 Nb6 Ne2 O-O O-O")
+ ("D73" "Neo-Grünfeld, 5.Nf3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3")
+ ("D73" "Neo-Grünfeld, 5.Nf3 c6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 c6")
+ ("D73" "Neo-Grünfeld, 5.Nf3 c6 6.cxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 c6 
cxd5")
+ ("D73" "Neo-Grünfeld, 5.Nf3 c6 6.cxd5 cxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
c6 cxd5 cxd5")
+ ("D73" "Neo-Grünfeld, 5.Nf3 c6 6.cxd5 cxd5 7.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
Nf3 c6 cxd5 cxd5 Nc3")
+ ("D73" "Neo-Grünfeld, 5.Nf3 c5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 c5")
+ ("D73" "Neo-Grünfeld, 5.Nf3 dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 dxc4")
+ ("D73" "Neo-Grünfeld, 5.Nf3 dxc4 6.Na3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 dxc4 
Na3")
+ ("D73" "Neo-Grünfeld, 5.Nf3 O-O" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O")
+ ("D73" "Neo-Grünfeld, 6.Qb3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O Qb3")
+ ("D73" "Neo-Grünfeld, 6.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O Nc3")
+ ("D73" "Neo-Grünfeld, 6.cxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5")
+ ("D73" "Neo-Grünfeld, 6.cxd5 Nxd5 7.e4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
cxd5 Nxd5 e4")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
cxd5 Nxd5 O-O")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Na6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O cxd5 Nxd5 O-O Na6")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nc6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O cxd5 Nxd5 O-O Nc6")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O cxd5 Nxd5 O-O c6")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O cxd5 Nxd5 O-O c5")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.e4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
Nf3 O-O cxd5 Nxd5 O-O c5 e4")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.e4 Nf6" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 e4 Nf6")
+ ("D74" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.e4 Nf6 9.e5 Nd5" "d4 Nf6 c4 g6 
g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 e4 Nf6 e5 Nd5")
+ ("D75" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 
Nf3 O-O cxd5 Nxd5 O-O c5 Nc3")
+ ("D75" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.Nc3 Nxc3" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 Nc3 Nxc3")
+ ("D75" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.Nc3 Nxc3 9.bxc3 cxd4" "d4 Nf6 c4 
g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 Nc3 Nxc3 bxc3 cxd4")
+ ("D75" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.dxc5" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 dxc5")
+ ("D75" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O c5 8.dxc5 Na6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O c5 dxc5 Na6")
+ ("D76a" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O cxd5 Nxd5 O-O Nb6")
+ ("D76b" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3")
+ ("D76c" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6")
+ ("D76d" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3")
+ ("D76e" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 e5" "d4 Nf6 c4 g6 
g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3 e5")
+ ("D76e" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 e5 10.d5" "d4 Nf6 
c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3 e5 d5")
+ ("D76f" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 e5 10.d5 Na5" "d4 
Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3 e5 d5 Na5")
+ ("D76g" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 Re8" "d4 Nf6 c4 
g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3 Re8")
+ ("D76h" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 Re8 10.d5" "d4 
Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 e3 Re8 d5")
+ ("D76i" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5")
+ ("D76j" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5" "d4 Nf6 c4 
g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5 Na5")
+ ("D76k" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5 10.e4" "d4 
Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5 Na5 e4")
+ ("D76k" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5 10.e4 c6" "d4 
Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5 Na5 e4 c6")
+ ("D76l" "Neo-Grünfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5 10.e4 c6 
11.Bg5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O cxd5 Nxd5 O-O Nb6 Nc3 Nc6 d5 Na5 e4 
c6 Bg5")
+ ("D77a" "Neo-Grünfeld, 6.O-O" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O")
+ ("D77b" "Neo-Grünfeld, 6.O-O e6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O e6")
+ ("D77c" "Neo-Grünfeld, 6.O-O c5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O c5")
+ ("D77c" "Neo-Grünfeld, 6.O-O c5 7.dxc5 dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c5 dxc5 dxc4")
+ ("D77d" "Neo-Grünfeld, 6.O-O Nc6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O 
Nc6")
+ ("D77e" "Neo-Grünfeld, 6.O-O dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O 
dxc4")
+ ("D77f" "Neo-Grünfeld, 6.O-O dxc4 7.Na3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O dxc4 Na3")
+ ("D77g" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Na6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O dxc4 Na3 Na6")
+ ("D77h" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 c3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O dxc4 Na3 c3")
+ ("D77h" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 c3 8.bxc3 c5" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O dxc4 Na3 c3 bxc3 c5")
+ ("D77i" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 c3 8.bxc3 c5 9.e3" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O O-O dxc4 Na3 c3 bxc3 c5 e3")
+ ("D77j" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Nc6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O dxc4 Na3 Nc6")
+ ("D77j" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O dxc4 Na3 Nc6 Nxc4")
+ ("D77j" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4 Be6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O O-O dxc4 Na3 Nc6 Nxc4 Be6")
+ ("D77k" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4 Be6 9.b3" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O O-O dxc4 Na3 Nc6 Nxc4 Be6 b3")
+ ("D77l" "Neo-Grünfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4 Be6 9.b3 Bd5" "d4 Nf6 c4 
g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O dxc4 Na3 Nc6 Nxc4 Be6 b3 Bd5")
+ ("D78a" "Neo-Grünfeld, 6.O-O c6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O c6")
+ ("D78b" "Neo-Grünfeld, 6.O-O c6 7.Na3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Na3")
+ ("D78c" "Neo-Grünfeld, 6.O-O c6 7.Ne5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Ne5")
+ ("D78d" "Neo-Grünfeld, 6.O-O c6 7.Qa4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Qa4")
+ ("D78e" "Neo-Grünfeld, 6.O-O c6 7.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Nc3")
+ ("D78f" "Neo-Grünfeld, 6.O-O c6 7.Nc3 dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Nc3 dxc4")
+ ("D78g" "Neo-Grünfeld, 6.O-O c6 7.Qb3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Qb3")
+ ("D78h" "Neo-Grünfeld, 6.O-O c6 7.Qb3 Qb6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Qb3 Qb6")
+ ("D78i" "Neo-Grünfeld, 6.O-O c6 7.Qb3 dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Qb3 dxc4")
+ ("D78j" "Neo-Grünfeld, 6.O-O c6 7.Qb3 dxc4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Qb3 dxc4 Qxc4")
+ ("D78k" "Neo-Grünfeld, 6.O-O c6 7.Nbd2" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 Nbd2")
+ ("D78l" "Neo-Grünfeld, 6.O-O c6 7.Nbd2 Nbd7" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Nbd2 Nbd7")
+ ("D78m" "Neo-Grünfeld, 6.O-O c6 7.Nbd2 Ne4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Nbd2 Ne4")
+ ("D78n" "Neo-Grünfeld, 6.O-O c6 7.Nbd2 Bf5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 Nbd2 Bf5")
+ ("D78o" "Neo-Grünfeld, 6.O-O c6 7.b3" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O 
c6 b3")
+ ("D78p" "Neo-Grünfeld, 6.O-O c6 7.b3 Bf5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 b3 Bf5")
+ ("D78q" "Neo-Grünfeld, 6.O-O c6 7.b3 Ne4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 b3 Ne4")
+ ("D79a" "Neo-Grünfeld, 6.O-O c6 7.cxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 cxd5")
+ ("D79a" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 cxd5 cxd5")
+ ("D79b" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3")
+ ("D79c" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 e6" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 e6")
+ ("D79d" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Ne4" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Ne4")
+ ("D79d" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Ne4 9.Ne5" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Ne4 Ne5")
+ ("D79e" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Ne4 9.Nxe4" "d4 Nf6 c4 g6 
g3 d5 Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Ne4 Nxe4")
+ ("D79f" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Nc6")
+ ("D79g" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6 9.Ne5" "d4 Nf6 c4 g6 g3 
d5 Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Nc6 Ne5")
+ ("D79h" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6 9.Ne5 e6" "d4 Nf6 c4 g6 
g3 d5 Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Nc3 Nc6 Ne5 e6")
+ ("D79i" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Ne5" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5")
+ ("D79i" "Neo-Grünfeld, 6.O-O c6 7.cxd5 cxd5 8.Ne5 e6" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5 e6")
+ ("D79j" "Neo-Grünfeld, Main Line" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O O-O c6 
cxd5 cxd5 Ne5 e6 Nc3")
+ ("D79k" "Neo-Grünfeld, Main Line, 10.f4" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 O-O 
O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4")
+ ("D79l" "Neo-Grünfeld, Main Line, 10.f4 Nc6" "d4 Nf6 c4 g6 g3 d5 Bg2 Bg7 Nf3 
O-O O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4 Nc6")
+ ("D79m" "Neo-Grünfeld, Main Line, 10.f4 Nc6 11.Be3" "d4 Nf6 c4 g6 g3 d5 Bg2 
Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4 Nc6 Be3")
+ ("D79m" "Neo-Grünfeld, Main Line, 10.f4 Nc6 11.Be3 f6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4 Nc6 Be3 f6")
+ ("D79n" "Neo-Grünfeld, Main Line, 10.f4 Nc6 11.Be3 Nb6" "d4 Nf6 c4 g6 g3 d5 
Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4 Nc6 Be3 Nb6")
+ ("D79n" "Neo-Grünfeld, Main Line, 10.f4 Nc6 11.Be3 Nb6 12.Bf2" "d4 Nf6 c4 g6 
g3 d5 Bg2 Bg7 Nf3 O-O O-O c6 cxd5 cxd5 Ne5 e6 Nc3 Nfd7 f4 Nc6 Be3 Nb6 Bf2")
+ ("D80" "Grünfeld Defence" "d4 Nf6 c4 g6 Nc3 d5")
+ ("D80" "Grünfeld: Spike/Gibbon Gambit" "d4 Nf6 c4 g6 Nc3 d5 g4")
+ ("D80" "Grünfeld: 4.h4" "d4 Nf6 c4 g6 Nc3 d5 h4")
+ ("D80" "Grünfeld: 4.g3" "d4 Nf6 c4 g6 Nc3 d5 g3")
+ ("D80" "Grünfeld: 4.f3" "d4 Nf6 c4 g6 Nc3 d5 f3")
+ ("D80" "Grünfeld: 4.e3" "d4 Nf6 c4 g6 Nc3 d5 e3")
+ ("D80" "Grünfeld: 4.e3 Bg7" "d4 Nf6 c4 g6 Nc3 d5 e3 Bg7")
+ ("D80" "Grünfeld: 4.e3 Bg7 5.Qb3" "d4 Nf6 c4 g6 Nc3 d5 e3 Bg7 Qb3")
+ ("D80" "Grünfeld: Stockholm Variation" "d4 Nf6 c4 g6 Nc3 d5 Bg5")
+ ("D80" "Grünfeld: Stockholm, 4...Ne4" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4")
+ ("D80" "Grünfeld: Stockholm, 4...Ne4 5.Nxe4" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4 
Nxe4")
+ ("D80" "Grünfeld: Stockholm, Lundin Variation" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4 
Nxe4 dxe4 Qd2 c5")
+ ("D80" "Grünfeld: Stockholm, 4...Ne4 5.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4 Bf4")
+ ("D80" "Grünfeld: Stockholm, Taimanov Variation" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4 
Bh4")
+ ("D80" "Grünfeld: Stockholm, Taimanov, 5...Nxc3" "d4 Nf6 c4 g6 Nc3 d5 Bg5 Ne4 
Bh4 Nxc3")
+ ("D80" "Grünfeld: Stockholm, Taimanov, 5...Nxc3 6.bxc3 Bg7" "d4 Nf6 c4 g6 Nc3 
d5 Bg5 Ne4 Bh4 Nxc3 bxc3 Bg7")
+ ("D81" "Grünfeld: Early Russian Variation" "d4 Nf6 c4 g6 Nc3 d5 Qb3")
+ ("D81" "Grünfeld: Early Russian Variation" "d4 Nf6 c4 g6 Nc3 d5 Qb3 dxc4 
Qxc4")
+ ("D81" "Grünfeld: Early Russian, 5...Be6" "d4 Nf6 c4 g6 Nc3 d5 Qb3 dxc4 Qxc4 
Be6")
+ ("D81" "Grünfeld: Early Russian, 5...Be6 6.Qb5+" "d4 Nf6 c4 g6 Nc3 d5 Qb3 
dxc4 Qxc4 Be6 Qb5+")
+ ("D81" "Grünfeld: Early Russian, Adorjan Gambit" "d4 Nf6 c4 g6 Nc3 d5 Qb3 
dxc4 Qxc4 Be6 Qb5+ Bd7")
+ ("D81" "Grünfeld: Early Russian, 5...Bg7" "d4 Nf6 c4 g6 Nc3 d5 Qb3 dxc4 Qxc4 
Bg7")
+ ("D81" "Grünfeld: Early Russian, 5...Bg7 6.e4" "d4 Nf6 c4 g6 Nc3 d5 Qb3 dxc4 
Qxc4 Bg7 e4")
+ ("D81" "Grünfeld: Early Russian, 5...Bg7 6.e4 O-O" "d4 Nf6 c4 g6 Nc3 d5 Qb3 
dxc4 Qxc4 Bg7 e4 O-O")
+ ("D82" "Grünfeld: 4.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Bf4")
+ ("D82" "Grünfeld: 4.Bf4 Bg7" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7")
+ ("D82" "Grünfeld: 4.Bf4 Bg7 5.e3" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3")
+ ("D82" "Grünfeld: 4.Bf4 Bg7 5.e3 c5" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3 c5")
+ ("D82" "Grünfeld: 4.Bf4 Bg7 5.e3 c5 6.dxc5 Qa5" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 
e3 c5 dxc5 Qa5")
+ ("D82" "Grünfeld: 4.Bf4 Bg7 5.e3 c5 6.dxc5 Qa5 7.Qa4+" "d4 Nf6 c4 g6 Nc3 d5 
Bf4 Bg7 e3 c5 dxc5 Qa5 Qa4+")
+ ("D82" "Grünfeld: 4.Bf4 Bg7 5.e3 c5 6.dxc5 Qa5 7.Rc1" "d4 Nf6 c4 g6 Nc3 d5 
Bf4 Bg7 e3 c5 dxc5 Qa5 Rc1")
+ ("D83" "Grünfeld: Grünfeld Gambit" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3 O-O")
+ ("D83" "Grünfeld: Grünfeld Gambit, 6.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3 O-O 
Qb3")
+ ("D83" "Grünfeld: Grünfeld Gambit, Capablanca Variation" "d4 Nf6 c4 g6 Nc3 d5 
Bf4 Bg7 e3 O-O Rc1")
+ ("D83" "Grünfeld: Grünfeld Gambit, Capablanca Variation" "d4 Nf6 c4 g6 Nc3 d5 
Bf4 Bg7 e3 O-O Rc1 c5")
+ ("D83" "Grünfeld: Grünfeld Gambit, Botvinnik Variation" "d4 Nf6 c4 g6 Nc3 d5 
Bf4 Bg7 e3 O-O Rc1 c5 dxc5 Be6")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3 
O-O cxd5")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted" "d4 Nf6 c4 g6 Nc3 d5 Bf4 Bg7 e3 
O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...b6" "d4 Nf6 c4 g6 Nc3 d5 Bf4 
Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 b6")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Bf5" "d4 Nf6 c4 g6 Nc3 d5 Bf4 
Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Bf5")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Na6" "d4 Nf6 c4 g6 Nc3 d5 Bf4 
Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Na6")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Na6 9.Bxa6 Qxg2" "d4 Nf6 c4 
g6 Nc3 d5 Bf4 Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Na6 Bxa6 Qxg2")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Nc6" "d4 Nf6 c4 g6 Nc3 d5 Bf4 
Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Nc6")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Nc6 9.Ne2" "d4 Nf6 c4 g6 Nc3 
d5 Bf4 Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Nc6 Ne2")
+ ("D84" "Grünfeld: Grünfeld Gambit Accepted, 8...Nc6 9.Ne2 Bg4" "d4 Nf6 c4 g6 
Nc3 d5 Bf4 Bg7 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Bxc7 Nc6 Ne2 Bg4")
+ ("D85a" "Grünfeld: Exchange Variation" "d4 Nf6 c4 g6 Nc3 d5 cxd5")
+ ("D85a" "Grünfeld: Exchange Variation" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5")
+ ("D85a" "Grünfeld: Exchange, 5.g3" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 g3")
+ ("D85a" "Grünfeld: Exchange, 5.Na4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 Na4")
+ ("D85b" "Grünfeld: Exchange, 5.Bd2" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 Bd2")
+ ("D85c" "Grünfeld: Exchange, 5.Bd2 Bg7 6.e4 Nb6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 Bd2 Bg7 e4 Nb6")
+ ("D85c" "Grünfeld: Exchange, 5.Bd2 Bg7 6.e4 Nb6 7.Be3" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 Bd2 Bg7 e4 Nb6 Be3")
+ ("D85d" "Grünfeld: Exchange, 5.e4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4")
+ ("D85d" "Grünfeld: Exchange, 5.e4 Nb6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nb6")
+ ("D85d" "Grünfeld: Exchange, 5.e4 Nxc3" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3")
+ ("D85d" "Grünfeld: Exchange, 5.e4 Nxc3 6.bxc3 c5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 c5")
+ ("D85d" "Grünfeld: Exchange, 5.e4 Nxc3 6.bxc3 Bg7" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7")
+ ("D85d" "Grünfeld: Exchange, 7.Ba3" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Ba3")
+ ("D85e" "Grünfeld: Exchange, 7.Bb5+" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Bb5+")
+ ("D85e" "Grünfeld: Exchange, 7.Bb5+ c6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Bb5+ c6")
+ ("D85e" "Grünfeld: Exchange, 7.Bb5+ c6 8.Ba4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bb5+ c6 Ba4")
+ ("D85f" "Grünfeld: Exchange, 7.Bb5+ c6 8.Ba4 O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bb5+ c6 Ba4 O-O")
+ ("D85g" "Grünfeld: Exchange, 7.Be3" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Be3")
+ ("D85g" "Grünfeld: Exchange, 7.Be3 c5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Be3 c5")
+ ("D85g" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2")
+ ("D85g" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 O-O")
+ ("D85g" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 O-O 9.Rc1" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 O-O Rc1")
+ ("D85h" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 Qa5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 Qa5")
+ ("D85h" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 Qa5 9.Rc1" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 Qa5 Rc1")
+ ("D85h" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 Qa5 9.Rb1" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 Qa5 Rb1")
+ ("D85h" "Grünfeld: Exchange, 7.Be3 c5 8.Qd2 Qa5 9.Rb1 b6" "d4 Nf6 c4 g6 Nc3 
d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Be3 c5 Qd2 Qa5 Rb1 b6")
+ ("D85i" "Grünfeld: Modern Exchange" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Nf3")
+ ("D85i" "Grünfeld: Modern Exchange, 7...O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 O-O")
+ ("D85j" "Grünfeld: Modern Exchange, 7...c5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Nf3 c5")
+ ("D85k" "Grünfeld: Modern Exchange, 8.Bb5+" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Nf3 c5 Bb5+")
+ ("D85l" "Grünfeld: Modern Exchange, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Nf3 c5 Be2")
+ ("D85l" "Grünfeld: Modern Exchange, 8.Be2 O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Be2 O-O")
+ ("D85l" "Grünfeld: Modern Exchange, 8.Be2 O-O 9.O-O" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be2 O-O O-O")
+ ("D85l" "Grünfeld: Modern Exchange, 8.Be2 O-O 9.O-O b6" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be2 O-O O-O b6")
+ ("D85l" "Grünfeld: Modern Exchange, 8.Be2 O-O 9.O-O Nc6" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be2 O-O O-O Nc6")
+ ("D85m" "Grünfeld: Modern Exchange, 8.Rb1" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Nf3 c5 Rb1")
+ ("D85m" "Grünfeld: Modern Exchange, 8.Rb1 O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O")
+ ("D85m" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2")
+ ("D85m" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Qa5" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 Qa5")
+ ("D85n" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 b6" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 b6")
+ ("D85o" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Nc6" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 Nc6")
+ ("D85p" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Nc6, Main Line" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 Nc6 d5 Ne5 Nxe5 Bxe5 
Qd2")
+ ("D85p" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Nc6, Main Line, 12...e6" 
"d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 Nc6 d5 Ne5 
Nxe5 Bxe5 Qd2 e6")
+ ("D85q" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4")
+ ("D85q" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd 10.cd" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 cxd4")
+ ("D85q" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd 10.cd Qa5+" "d4 Nf6 c4 
g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 cxd4 Qa5+")
+ ("D85q" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd 10.cd Qa5+ 11.Qd2" "d4 
Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 cxd4 Qa5+ 
Qd2")
+ ("D85r" "Grünfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd 10.cd Qa5+ 11.Bd2" "d4 
Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 cxd4 Qa5+ 
Bd2")
+ ("D85s" "Grünfeld: Modern Exchange, 8.Rb1, 10...Qa5+ 11.Bd2 Qxa2 12.O-O Bg4" 
"d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 cxd4 
Qa5+ Bd2 Qxa2 O-O Bg4")
+ ("D85s" "Grünfeld: Modern Exchange, 8.Rb1, 10...Qa5+ 11.Bd2 Qxa2 12.O-O Bg4 
13.Bg5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Rb1 O-O Be2 cxd4 
cxd4 Qa5+ Bd2 Qxa2 O-O Bg4 Bg5")
+ ("D85t" "Grünfeld: Modern Exchange, 8.Be3" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 
Nxc3 bxc3 Bg7 Nf3 c5 Be3")
+ ("D85t" "Grünfeld: Modern Exchange, 8.Be3 Bg4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 Bg4")
+ ("D85t" "Grünfeld: Modern Exchange, 8.Be3 Nc6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 Nc6")
+ ("D85u" "Grünfeld: Modern Exchange, 8.Be3 Qa5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 Qa5")
+ ("D85u" "Grünfeld: Modern Exchange, 8.Be3 Qa5 9.Qd2" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 Qa5 Qd2")
+ ("D85v" "Grünfeld: Modern Exchange, 8.Be3 Qa5 9.Qd2 Nc6 10.Rc1" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 Qa5 Qd2 Nc6 Rc1")
+ ("D85w" "Grünfeld: Modern Exchange, 8.Be3 O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 O-O")
+ ("D85x" "Grünfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 O-O Rc1 Qa5")
+ ("D85x" "Grünfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5 10.Qd2" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 O-O Rc1 Qa5 Qd2")
+ ("D85x" "Grünfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5 Queenswap, 12.Kxd2" 
"d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 O-O Rc1 Qa5 Qd2 cxd4 
cxd4 Qxd2+ Kxd2")
+ ("D85y" "Grünfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5 Queenswap, 12.Nxd2" 
"d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Nf3 c5 Be3 O-O Rc1 Qa5 Qd2 cxd4 
cxd4 Qxd2+ Nxd2")
+ ("D86" "Grünfeld: Classical Exchange" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 
bxc3 Bg7 Bc4")
+ ("D86" "Grünfeld: Classical Exchange, 7...b6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 b6")
+ ("D86" "Grünfeld: Classical Exchange, 7...c5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 c5")
+ ("D86" "Grünfeld: Classical Exchange, 7...O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 O-O")
+ ("D86" "Grünfeld: Classical Exchange, 8.Ne2" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2")
+ ("D86" "Grünfeld: Classical Exchange, Larsen Variation" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Qd7 O-O b6")
+ ("D86" "Grünfeld: Classical Exchange, Simagin" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 b6")
+ ("D86" "Grünfeld: Classical Exchange, Simagin, 9.h4" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 b6 h4")
+ ("D86" "Grünfeld: Classical Exchange, Simagin, 9.O-O" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 b6 O-O")
+ ("D86" "Grünfeld: Classical Exchange, Simagin Improved" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Nc6")
+ ("D86" "Grünfeld: Classical Exchange, Simagin Improved, 9.Be3" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Nc6 Be3")
+ ("D86" "Grünfeld: Classical Exchange, Simagin Improved, 9.O-O" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Nc6 O-O")
+ ("D86" "Grünfeld: Classical Exchange, Simagin Improved, 9.O-O e5" "d4 Nf6 c4 
g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Nc6 O-O e5")
+ ("D86" "Grünfeld: Classical Exchange, Simagin Improved, 9.O-O b6" "d4 Nf6 c4 
g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 Nc6 O-O b6")
+ ("D87a" "Grünfeld: Classical Exchange, 8...c5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5")
+ ("D87b" "Grünfeld: Classical Exchange, 8...c5 9.Be3" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 Be3")
+ ("D87c" "Grünfeld: Classical Exchange, 8...c5 9.Be3 Qa5" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 Be3 Qa5")
+ ("D87c" "Grünfeld: Classical Exchange, 8...c5 9.Be3 Qa5" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 Be3 Qa5 O-O Nd7")
+ ("D87d" "Grünfeld: Classical Exchange, 8...c5 9.Be3 Nc6" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 Be3 Nc6")
+ ("D87e" "Grünfeld: Classical Exchange, 9.O-O" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 
e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O")
+ ("D87f" "Grünfeld: Classical Exchange, 9.O-O Nc6" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6")
+ ("D87g" "Grünfeld: Classical Exchange, 9.O-O Nc6 10.Be3" "d4 Nf6 c4 g6 Nc3 d5 
cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3")
+ ("D87h" "Grünfeld: Classical Exchange, 10.Be3 Qa5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Qa5")
+ ("D87i" "Grünfeld: Classical Exchange, 10.Be3 Na5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Na5")
+ ("D87j" "Grünfeld: Classical Exchange, 10.Be3 Qc7" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Qc7")
+ ("D87k" "Grünfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Qc7 Rc1 Rd8")
+ ("D87l" "Grünfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8 12.Qd2" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Qc7 Rc1 Rd8 
Qd2")
+ ("D87m" "Grünfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8 12.Bf4" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Qc7 Rc1 Rd8 
Bf4")
+ ("D87n" "Grünfeld: Classical Exchange, 10.Be3 Bg4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Bg4")
+ ("D87o" "Grünfeld: Classical Exchange, 10.Be3 Bg4 11.f3 Na5 12.Bd5" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Bg4 f3 Na5 
Bd5")
+ ("D87p" "Grünfeld: Classical Exchange, Seville Variation" "d4 Nf6 c4 g6 Nc3 
d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 Bg4 f3 Na5 Bxf7+")
+ ("D88" "Grünfeld: Classical Exchange, Main Line" "d4 Nf6 c4 g6 Nc3 d5 cxd5 
Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4" "d4 Nf6 c4 g6 Nc3 
d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Na5" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 Na5")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Na5 12.Bd3" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Na5 Bd3")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Bg4" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 Bg4")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Bg4 12.f3" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Bg4 f3")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Bg4 12.f3 Na5" "d4 
Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 
cxd4 Bg4 f3 Na5")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, Neo-Seville" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 Bg4 f3 
Na5 Bxf7+")
+ ("D88" "Grünfeld: Classical Exchange, Main Line, 11.cxd4 Bg4 12.f3 Na5 
13.Bd5" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 
Be3 cxd4 cxd4 Bg4 f3 Na5 Bd5")
+ ("D89a" "Grünfeld: Classical Exchange, Main Line, 13.Bd3" "d4 Nf6 c4 g6 Nc3 
d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 Bg4 f3 Na5 
Bd3")
+ ("D89b" "Grünfeld: Classical Exchange, Main Line, 13.Bd3 Be6" "d4 Nf6 c4 g6 
Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 Bg4 f3 
Na5 Bd3 Be6")
+ ("D89c" "Grünfeld: Classical Exchange, Main Line, 13.Bd3 Be6 14.Rc1" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Bg4 f3 Na5 Bd3 Be6 Rc1")
+ ("D89d" "Grünfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 Be6 16.d5 Be7 
17.Qb4" "d4 Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 
Be3 cxd4 cxd4 Bg4 f3 Na5 Bd3 Be6 Rc1 Bxa2 Qa4 Be6 d5 Bd7 Qb4")
+ ("D89e" "Grünfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 with 17.Qb4 b6" "d4 
Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 
cxd4 Bg4 f3 Na5 Bd3 Be6 Rc1 Bxa2 Qa4 Be6 d5 Bd7 Qb4 b6")
+ ("D89f" "Grünfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 with 17.Qb4 e6" "d4 
Nf6 c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 
cxd4 Bg4 f3 Na5 Bd3 Be6 Rc1 Bxa2 Qa4 Be6 d5 Bd7 Qb4 e6")
+ ("D89g" "Grünfeld: Classical Exchange, Main Line, Sokolsky Variation" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Bg4 f3 Na5 Bd3 Be6 d5")
+ ("D89h" "Grünfeld: Classical Exchange, Main Line, Sokolsky, 16.Rb1" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Bg4 f3 Na5 Bd3 Be6 d5 Bxa1 Qxa1 f6 Rb1")
+ ("D89i" "Grünfeld: Classical Exchange, Main Line, Sokolsky, 16.Bh6" "d4 Nf6 
c4 g6 Nc3 d5 cxd5 Nxd5 e4 Nxc3 bxc3 Bg7 Bc4 O-O Ne2 c5 O-O Nc6 Be3 cxd4 cxd4 
Bg4 f3 Na5 Bd3 Be6 d5 Bxa1 Qxa1 f6 Bh6")
+ ("D90" "Grünfeld: Three Knights Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3")
+ ("D90" "Grünfeld: Schlechter Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 c6")
+ ("D90" "Grünfeld: Schlechter, 5.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 c6 Qb3")
+ ("D90" "Grünfeld: Schlechter, Exchange" "d4 Nf6 c4 g6 Nc3 d5 Nf3 c6 cxd5")
+ ("D90" "Grünfeld: Schlechter, Exchange" "d4 Nf6 c4 g6 Nc3 d5 Nf3 c6 cxd5 
cxd5")
+ ("D90" "Grünfeld: Three Knights Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7")
+ ("D90" "Grünfeld: Three Knights, 5.g3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 g3")
+ ("D90" "Grünfeld: Flohr Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qa4+")
+ ("D90" "Grünfeld: Three Knights Exchange" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 cxd5")
+ ("D90" "Grünfeld: Three Knights Exchange" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 cxd5 
Nxd5")
+ ("D90" "Grünfeld: Three Knights Exchange, Romanishin Variation" "d4 Nf6 c4 g6 
Nc3 d5 Nf3 Bg7 cxd5 Nxd5 Qb3")
+ ("D90" "Grünfeld: Three Knights Exchange, 6.Bd2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
cxd5 Nxd5 Bd2")
+ ("D90" "Grünfeld: Three Knights Exchange, 6.Bd2 O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 cxd5 Nxd5 Bd2 O-O")
+ ("D90" "Grünfeld: Three Knights Exchange, 6.Bd2 O-O 7.Rc1" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 cxd5 Nxd5 Bd2 O-O Rc1")
+ ("D91a" "Grünfeld: 5.Bg5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5")
+ ("D91a" "Grünfeld: 5.Bg5 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 c6")
+ ("D91b" "Grünfeld: 5.Bg5 dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 dxc4")
+ ("D91c" "Grünfeld: 5.Bg5 dxc4 6.e4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 dxc4 e4")
+ ("D91d" "Grünfeld: 5.Bg5 Ne4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4")
+ ("D91d" "Grünfeld: 5.Bg5 Ne4 6.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 Bf4")
+ ("D91e" "Grünfeld: 5.Bg5 Ne4 6.Bh4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 Bh4")
+ ("D91f" "Grünfeld: 5.Bg5 Ne4 6.Bh4 Nxc3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 
Bh4 Nxc3")
+ ("D91g" "Grünfeld: 5.Bg5 Ne4 6.Bh4 Nxc3 7.bxc3 dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Bg5 Ne4 Bh4 Nxc3 bxc3 dxc4")
+ ("D91h" "Grünfeld: 5.Bg5 Ne4 6.cxd5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 
cxd5")
+ ("D91i" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 
Ne4 cxd5 Nxg5")
+ ("D91j" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 c6")
+ ("D91k" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6")
+ ("D91l" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Qd2")
+ ("D91m" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2 exd5" "d4 Nf6 c4 g6 
Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Qd2 exd5")
+ ("D91n" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2 exd5: 11.h4 h6" "d4 
Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Qd2 exd5 Qe3+ Kf8 Qf4 Bf6 h4 
h6")
+ ("D91o" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3")
+ ("D91p" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3" "d4 Nf6 
c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3")
+ ("D91q" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O" "d4 
Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O")
+ ("D91r" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 
10.Bd3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O 
Bd3")
+ ("D91r" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 
10.Bd3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O 
Bd3 c6")
+ ("D91s" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 
10.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O 
Be2")
+ ("D91s" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 
10.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O 
Be2 c6")
+ ("D91t" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 10.b4" 
"d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O b4")
+ ("D91t" "Grünfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 10.b4 
c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bg5 Ne4 cxd5 Nxg5 Nxg5 e6 Nf3 exd5 e3 O-O b4 
c6")
+ ("D92" "Grünfeld: 5.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4")
+ ("D92" "Grünfeld: 5.Bf4 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 c6")
+ ("D92" "Grünfeld: 5.Bf4 O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O")
+ ("D92" "Grünfeld: 5.Bf4 O-O 6.Rc1" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O Rc1")
+ ("D92" "Grünfeld: 5.Bf4 O-O 6.Rc1 dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O 
Rc1 dxc4")
+ ("D92" "Grünfeld: 5.Bf4 O-O 6.Rc1 c5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O 
Rc1 c5")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O e3")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O e3 
c5")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c5 7.dxc5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 
O-O e3 c5 dxc5")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c5 7.dxc5 Qa5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Bf4 O-O e3 c5 dxc5 Qa5")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c5 7.dxc5 Qa5 8.Rc1" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Bf4 O-O e3 c5 dxc5 Qa5 Rc1")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c5 7.dxc5 Qa5 8.Rc1 dxc4 9.Bxc4" "d4 Nf6 c4 
g6 Nc3 d5 Nf3 Bg7 Bf4 O-O e3 c5 dxc5 Qa5 Rc1 dxc4 Bxc4")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 O-O e3 
c6")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c6 7.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 
O-O e3 c6 Qb3")
+ ("D93" "Grünfeld: 5.Bf4 O-O 6.e3 c6 7.Rc1" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Bf4 
O-O e3 c6 Rc1")
+ ("D94" "Grünfeld: 5.e3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3")
+ ("D94" "Grünfeld: Slav/Schlecter" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 c6")
+ ("D94" "Grünfeld: Slav/Schlecter, 6.Bd3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 c6 
Bd3")
+ ("D94" "Grünfeld: Slav/Schlecter, 6.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 c6 
Be2")
+ ("D94" "Grünfeld: Slav/Schlecter, 6.Be2 O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 
c6 Be2 O-O")
+ ("D94" "Grünfeld: Slav/Schlecter, 6.Be2 O-O 7.O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 e3 c6 Be2 O-O O-O")
+ ("D94" "Grünfeld: 5.e3 O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O")
+ ("D94" "Grünfeld: Makogonov Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O 
b4")
+ ("D94" "Grünfeld: Opovcensky Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O 
Bd2")
+ ("D94" "Grünfeld: 5.e3 O-O 6.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Be2")
+ ("D94" "Grünfeld: 5.e3 O-O 6.Be2 c5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Be2 
c5")
+ ("D94" "Grünfeld: 5.e3 O-O 6.Bd3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Bd3")
+ ("D94" "Grünfeld: 5.e3 O-O 6.Bd3 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Bd3 
c6")
+ ("D94" "Grünfeld: Smyslov Defence" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Bd3 c6 
O-O Bg4")
+ ("D94" "Grünfeld: Flohr Defence" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Bd3 c6 
O-O Bf5")
+ ("D94" "Grünfeld: 5.e3 O-O 6.cxd5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O cxd5")
+ ("D94" "Grünfeld: 5.e3 O-O 6.cxd5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O cxd5 
Nxd5")
+ ("D94" "Grünfeld: 5.e3 O-O 6.cxd5 Nxd5 7.Bc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 
O-O cxd5 Nxd5 Bc4")
+ ("D95a" "Grünfeld: 5.e3 O-O 6.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Qb3")
+ ("D95b" "Grünfeld: 5.e3 O-O 6.Qb3 b6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Qb3 
b6")
+ ("D95c" "Grünfeld: 5.e3 O-O 6.Qb3 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Qb3 
c6")
+ ("D95d" "Grünfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 
O-O Qb3 c6 Bd2")
+ ("D95e" "Grünfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2 e6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
e3 O-O Qb3 c6 Bd2 e6")
+ ("D95f" "Grünfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2 e6 8.Bd3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 e3 O-O Qb3 c6 Bd2 e6 Bd3")
+ ("D95g" "Grünfeld: Botvinnik Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O 
Qb3 e6")
+ ("D95h" "Grünfeld: Botvinnik, 7.Bd2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Qb3 
e6 Bd2")
+ ("D95i" "Grünfeld: 5.e3 O-O 6.Qb3 dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O 
Qb3 dxc4")
+ ("D95i" "Grünfeld: 5.e3 O-O 6.Qb3 dxc4 7.Bxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
e3 O-O Qb3 dxc4 Bxc4")
+ ("D95i" "Grünfeld: Pachman Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 e3 O-O Qb3 
dxc4 Bxc4 Nbd7 Ng5")
+ ("D95j" "Grünfeld: 5.e3 O-O 6.Qb3 dxc4 7.Bxc4 Nc6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 e3 O-O Qb3 dxc4 Bxc4 Nc6")
+ ("D96" "Grünfeld: Russian Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3")
+ ("D96" "Grünfeld: Russian, 5...c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 c6")
+ ("D96" "Grünfeld: Russian, 5...c6 6.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 c6 
Bf4")
+ ("D96" "Grünfeld: Russian, 5...c6 6.cxd5 cxd5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 c6 cxd5 cxd5")
+ ("D96" "Grünfeld: Russian, 5...c6 6.cxd5 Nxd5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 c6 cxd5 Nxd5")
+ ("D96" "Grünfeld: Russian, 5...dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4")
+ ("D96" "Grünfeld: Russian, 5...dxc4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 
Qxc4")
+ ("D96" "Grünfeld: Russian, 6...O-O" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 
Qxc4 a6")
+ ("D96" "Grünfeld: Russian, 6...a6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 
O-O")
+ ("D96" "Grünfeld: Russian, 7.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 
O-O Bf4")
+ ("D96" "Grünfeld: Russian, 7.Bf4 c6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 
Qxc4 O-O Bf4 c6")
+ ("D97a" "Grünfeld: Russian, 7.e4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 
O-O e4")
+ ("D97a" "Grünfeld: Russian, 7.e4 Nfd7" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 
Qxc4 O-O e4 Nfd7")
+ ("D97b" "Grünfeld: Russian, Levenfish Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 b6")
+ ("D97c" "Grünfeld: Russian, Szabo Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 c6")
+ ("D97c" "Grünfeld: Russian, Szabo, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 c6 Be2")
+ ("D97d" "Grünfeld: Russian, Alekhine (Hungarian) Variation" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 a6")
+ ("D97e" "Grünfeld: Russian, Alekhine, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 a6 Be2")
+ ("D97f" "Grünfeld: Russian, Alekhine, 8.Be2 b5 9.Qb3" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 a6 Be2 b5 Qb3")
+ ("D97g" "Grünfeld: Russian, Alekhine, 8.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 a6 Qb3")
+ ("D97h" "Grünfeld: Russian, Alekhine, 8.e5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 a6 e5")
+ ("D97i" "Grünfeld: Russian, Alekhine, 8.e5 b5 9.Qb3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Qb3 dxc4 Qxc4 O-O e4 a6 e5 b5 Qb3")
+ ("D97j" "Grünfeld: Russian, Alekhine, 8.e5 b5 9.Qb3 Nfd7" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 a6 e5 b5 Qb3 Nfd7")
+ ("D97k" "Grünfeld: Russian, Alekhine, 8.e5 b5 9.Qb3 Nfd7 10.Be3" "d4 Nf6 c4 
g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 a6 e5 b5 Qb3 Nfd7 Be3")
+ ("D97l" "Grünfeld: Russian, Simagin Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Nc6")
+ ("D97l" "Grünfeld: Russian, Simagin, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Nc6 Be2")
+ ("D97m" "Grünfeld: Russian, Prins Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Na6")
+ ("D97n" "Grünfeld: Russian, Prins, 8.Bf4" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Na6 Bf4")
+ ("D97o" "Grünfeld: Russian, Prins, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Na6 Be2")
+ ("D97p" "Grünfeld: Russian, Prins, 8.Be2, Main Line" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Qb3 dxc4 Qxc4 O-O e4 Na6 Be2 c5 d5 e6 O-O exd5 exd5 Bf5")
+ ("D98" "Grünfeld: Russian, Smyslov Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Bg4")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be2" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Bg4 Be2")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be2 Nc6" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Bg4 Be2 Nc6")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be2 Nc6 9.d5" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be2 Nc6 d5")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 
dxc4 Qxc4 O-O e4 Bg4 Be3")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3 Nfd7" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Be2" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Be2")
+ ("D98" "Grünfeld: Russian, Smyslov, Keres Variation" "d4 Nf6 c4 g6 Nc3 d5 Nf3 
Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Be2 Nb6 Qd3 Nc6 O-O-O")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3 Nfd7 9.O-O-O" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 O-O-O")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Rd1" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Rd1")
+ ("D98" "Grünfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Rd1 Nc6" "d4 Nf6 c4 g6 Nc3 
d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Rd1 Nc6")
+ ("D99a" "Grünfeld: Russian, Smyslov, Main Line" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3")
+ ("D99b" "Grünfeld: Russian, Smyslov, Yugoslav" "d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 
Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 c5")
+ ("D99c" "Grünfeld: Russian, Smyslov, Main Line, 9...Nb6" "d4 Nf6 c4 g6 Nc3 d5 
Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 Nb6")
+ ("D99d" "Grünfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1" "d4 Nf6 c4 g6 
Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 Nb6 Rd1")
+ ("D99e" "Grünfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 e6" "d4 Nf6 c4 
g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 Nb6 Rd1 e6")
+ ("D99f" "Grünfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 Nc6" "d4 Nf6 
c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 Nb6 Rd1 Nc6")
+ ("D99g" "Grünfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 Nc6 11.d5 Ne5" 
"d4 Nf6 c4 g6 Nc3 d5 Nf3 Bg7 Qb3 dxc4 Qxc4 O-O e4 Bg4 Be3 Nfd7 Qb3 Nb6 Rd1 Nc6 
d5 Ne5")
+ ("E00a" "Queen's Pawn: Neo-Indian" "d4 Nf6 c4 e6")
+ ("E00a" "Queen's Pawn: Neo-Indian, Devin Gambit" "d4 Nf6 c4 e6 g4")
+ ("E00b" "Queen's Pawn: Anti-Nimzo-Indian" "d4 Nf6 c4 e6 a3")
+ ("E00b" "Queen's Pawn: Anti-Nimzo-Indian, 3...d5" "d4 Nf6 c4 e6 a3 d5")
+ ("E00c" "Neo-Indian (Seirawan) Attack" "d4 Nf6 c4 e6 Bg5")
+ ("E00d" "Queen's Pawn: Neo-Indian" "d4 Nf6 c4 e6 Nc3")
+ ("E00e" "Queen's Pawn: Neo-Indian, 3...b6" "d4 Nf6 c4 e6 Nc3 b6")
+ ("E00e" "Queen's Pawn: Neo-Indian, 3...b6" "d4 Nf6 c4 e6 Nc3 b6 e4")
+ ("E00f" "Queen's Pawn: Neo-Indian, 3...c5" "d4 Nf6 c4 e6 Nc3 c5")
+ ("E00g" "Catalan" "d4 Nf6 c4 e6 g3")
+ ("E00g" "Catalan: Hungarian Gambit" "d4 Nf6 c4 e6 g3 e5")
+ ("E00g" "Catalan: 3...c6" "d4 Nf6 c4 e6 g3 c6")
+ ("E00h" "Catalan: 3...c5" "d4 Nf6 c4 e6 g3 c5")
+ ("E00h" "Catalan: 3...c5 4.Nf3" "d4 Nf6 c4 e6 g3 c5 Nf3")
+ ("E00i" "Catalan: 3...Bb4+" "d4 Nf6 c4 e6 g3 Bb4+")
+ ("E00i" "Catalan: 3...Bb4+ 4.Nd2" "d4 Nf6 c4 e6 g3 Bb4+ Nd2")
+ ("E00j" "Catalan: 3...Bb4+ 4.Bd2" "d4 Nf6 c4 e6 g3 Bb4+ Bd2")
+ ("E00k" "Catalan: 3...Bb4+ 4.Bd2 Bxd2+" "d4 Nf6 c4 e6 g3 Bb4+ Bd2 Bxd2+")
+ ("E00l" "Catalan: 3...Bb4+ 4.Bd2 Be7" "d4 Nf6 c4 e6 g3 Bb4+ Bd2 Be7")
+ ("E00m" "Catalan: 3...Bb4+ 4.Bd2 Qe7" "d4 Nf6 c4 e6 g3 Bb4+ Bd2 Qe7")
+ ("E00m" "Catalan: 3...Bb4+ 4.Bd2 Qe7" "d4 Nf6 c4 e6 g3 Bb4+ Bd2 Qe7 Bg2")
+ ("E00n" "Catalan: 3...d5" "d4 Nf6 c4 e6 g3 d5")
+ ("E00o" "Catalan: 4.Nf3" "d4 Nf6 c4 e6 g3 d5 Nf3")
+ ("E00p" "Catalan: 4.Nf3 c6" "d4 Nf6 c4 e6 g3 d5 Nf3 c6")
+ ("E00q" "Catalan: 4.Nf3 c5" "d4 Nf6 c4 e6 g3 d5 Nf3 c5")
+ ("E00r" "Catalan: 4.Nf3 Bb4+" "d4 Nf6 c4 e6 g3 d5 Nf3 Bb4+")
+ ("E00r" "Catalan: 4.Nf3 Bb4+ 5.Bd2" "d4 Nf6 c4 e6 g3 d5 Nf3 Bb4+ Bd2")
+ ("E00s" "Catalan: 4.Nf3 Be7" "d4 Nf6 c4 e6 g3 d5 Nf3 Be7")
+ ("E00t" "Catalan: 4.Nf3 dxc4" "d4 Nf6 c4 e6 g3 d5 Nf3 dxc4")
+ ("E00u" "Catalan: 4.Nf3 dxc4 5.Qa4+" "d4 Nf6 c4 e6 g3 d5 Nf3 dxc4 Qa4+")
+ ("E00v" "Catalan: 4.Nf3 dxc4 5.Qa4+ Nbd7" "d4 Nf6 c4 e6 g3 d5 Nf3 dxc4 Qa4+ 
Nbd7")
+ ("E01" "Catalan: 4.Bg2" "d4 Nf6 c4 e6 g3 d5 Bg2")
+ ("E01" "Catalan: 4...Bb4+" "d4 Nf6 c4 e6 g3 d5 Bg2 Bb4+")
+ ("E01" "Catalan: 4...Bb4+ 5.Bd2" "d4 Nf6 c4 e6 g3 d5 Bg2 Bb4+ Bd2")
+ ("E01" "Catalan: 4...Bb4+ 5.Nd2" "d4 Nf6 c4 e6 g3 d5 Bg2 Bb4+ Nd2")
+ ("E01" "Catalan: 4...Bb4+ 5.Nd2 O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 Bb4+ Nd2 O-O")
+ ("E01" "Catalan: 4...c6" "d4 Nf6 c4 e6 g3 d5 Bg2 c6")
+ ("E01" "Catalan: 4...c6 5.Qc2" "d4 Nf6 c4 e6 g3 d5 Bg2 c6 Qc2")
+ ("E01" "Catalan: 4...c6 5.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 c6 Nf3")
+ ("E01" "Catalan: 4...c6 5.Nf3 Nbd7" "d4 Nf6 c4 e6 g3 d5 Bg2 c6 Nf3 Nbd7")
+ ("E01" "Catalan: 4...c5" "d4 Nf6 c4 e6 g3 d5 Bg2 c5")
+ ("E01" "Catalan: 4...c5 5.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 c5 Nf3")
+ ("E01" "Catalan: Open" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4")
+ ("E02" "Catalan: Open, 5.Qa4+" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+")
+ ("E02" "Catalan: Open, 5.Qa4+ Bd7" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ Bd7")
+ ("E02" "Catalan: Open, 5.Qa4+ Bd7 6.Qxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ 
Bd7 Qxc4")
+ ("E02" "Catalan: Open, 5.Qa4+ Nbd7" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ Nbd7")
+ ("E02" "Catalan: Open, 5.Qa4+ Nbd7 6.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ 
Nbd7 Nf3")
+ ("E02" "Catalan: Open, 5.Qa4+ Nbd7 6.Nf3 a6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Qa4+ Nbd7 Nf3 a6")
+ ("E02" "Catalan: Open, 5.Qa4+ Nbd7 6.Nf3 a6 7.Nc3" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Qa4+ Nbd7 Nf3 a6 Nc3")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ 
Nbd7 Qxc4")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 a6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Qa4+ Nbd7 Qxc4 a6")
+ ("E03" "Catalan: Open, Alekhine Variation" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Qa4+ 
Nbd7 Qxc4 a6 Qc2")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 a6 7.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Qa4+ Nbd7 Qxc4 a6 Nf3")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 a6 7.Nf3 b5" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Qa4+ Nbd7 Qxc4 a6 Nf3 b5")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 a6 7.Nf3 b5 8.Qc2" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Qa4+ Nbd7 Qxc4 a6 Nf3 b5 Qc2")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 a6 7.Nf3 b5 8.Qc6" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Qa4+ Nbd7 Qxc4 a6 Nf3 b5 Qc6")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Qa4+ Nbd7 Qxc4 c5")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5 7.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Qa4+ Nbd7 Qxc4 c5 Nf3")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5 7.Nf3 a6" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Qa4+ Nbd7 Qxc4 c5 Nf3 a6")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5 7.Nf3 a6 8.O-O" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Qa4+ Nbd7 Qxc4 c5 Nf3 a6 O-O")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5 7.Nf3 a6 8.Qc2" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Qa4+ Nbd7 Qxc4 c5 Nf3 a6 Qc2")
+ ("E03" "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4 c5 7.Nf3 a6 8.Qc2 b6" "d4 Nf6 c4 e6 
g3 d5 Bg2 dxc4 Qa4+ Nbd7 Qxc4 c5 Nf3 a6 Qc2 b6")
+ ("E04a" "Catalan: Open, 5.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3")
+ ("E04a" "Catalan: Open, 5.Nf3 Bd7" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Bd7")
+ ("E04b" "Catalan: Open, 5.Nf3 Bb4+" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Bb4+")
+ ("E04c" "Catalan: Open, 5.Nf3 Nbd7" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Nbd7")
+ ("E04d" "Catalan: Open, 5.Nf3 b5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 b5")
+ ("E04e" "Catalan: Open, 5.Nf3 a6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 a6")
+ ("E04f" "Catalan: Open, 5.Nf3 a6 6.O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 a6 
O-O")
+ ("E04g" "Catalan: Open, 5.Nf3 a6 6.O-O b5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
a6 O-O b5")
+ ("E04g" "Catalan: Open, 5.Nf3 a6 6.O-O b5 7.Ne5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Nf3 a6 O-O b5 Ne5")
+ ("E04h" "Catalan: Open, 5.Nf3 a6 6.O-O b5 7.Ne5 Nd5 8.a4" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 a6 O-O b5 Ne5 Nd5 a4")
+ ("E04i" "Catalan: Open, 5.Nf3 a6 6.O-O Nc6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
a6 O-O Nc6")
+ ("E04j" "Catalan: Open, 5.Nf3 a6 6.O-O Nc6 7.e3" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Nf3 a6 O-O Nc6 e3")
+ ("E04k" "Catalan: Open, 5.Nf3 c5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 c5")
+ ("E04k" "Catalan: Open, 5.Nf3 c5 6.O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 c5 
O-O")
+ ("E04l" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
c5 O-O Nc6")
+ ("E04m" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Ne5" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 c5 O-O Nc6 Ne5")
+ ("E04n" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Ne5 Bd7 8.Na3" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Nf3 c5 O-O Nc6 Ne5 Bd7 Na3")
+ ("E04n" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Ne5 Bd7 8.Na3" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Nf3 c5 O-O Nc6 Ne5 Bd7 Na3 cxd4 Naxc4")
+ ("E04o" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 c5 O-O Nc6 Qa4")
+ ("E04o" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 cxd4" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 c5 O-O Nc6 Qa4 cxd4")
+ ("E04p" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 Bd7" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 c5 O-O Nc6 Qa4 Bd7")
+ ("E04q" "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 Bd7 8.Qxc4" "d4 Nf6 c4 e6 g3 
d5 Bg2 dxc4 Nf3 c5 O-O Nc6 Qa4 Bd7 Qxc4")
+ ("E04r" "Catalan: Open, 5.Nf3 Nc6" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Nc6")
+ ("E04r" "Catalan: Open, 5.Nf3 Nc6 6.O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Nc6 
O-O")
+ ("E04s" "Catalan: Open, 5.Nf3 Nc6 6.O-O Rb8" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Nc6 O-O Rb8")
+ ("E04t" "Catalan: Open, 5.Nf3 Nc6 6.O-O Rb8 7.Nc3" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Nc6 O-O Rb8 Nc3")
+ ("E04u" "Catalan: Open, 5.Nf3 Nc6 6.Qa4" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Nc6 
Qa4")
+ ("E04v" "Catalan: Open, 5.Nf3 Nc6 6.Qa4 Bb4+" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Nf3 Nc6 Qa4 Bb4+")
+ ("E04w" "Catalan: Open, 5.Nf3 Nc6 6.Qa4 Bb4+ 7.Bd2 Nd5" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 Nc6 Qa4 Bb4+ Bd2 Nd5")
+ ("E05a" "Catalan: Open, Classical" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Be7")
+ ("E05b" "Catalan: Open, Classical, 6.Nc3" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 Nc3")
+ ("E05c" "Catalan: Open, Classical, 6.Nc3 O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Nf3 Be7 Nc3 O-O")
+ ("E05d" "Catalan: Open, Classical, 6.Nc3 O-O 7.Ne5" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 Nc3 O-O Ne5")
+ ("E05e" "Catalan: Open, Classical, 6.O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O")
+ ("E05f" "Catalan: Open, Classical, 6.O-O O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 
Nf3 Be7 O-O O-O")
+ ("E05g" "Catalan: Open, Classical, 7.Ne5" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O O-O Ne5")
+ ("E05h" "Catalan: Open, Classical, 7.Ne5 Nc6 8.Nxc6" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Ne5 Nc6 Nxc6")
+ ("E05i" "Catalan: Open, Classical, 7.Qc2" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O O-O Qc2")
+ ("E05j" "Catalan: Open, Classical Main Line" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O O-O Qc2 a6")
+ ("E05k" "Catalan: Open, Classical, 8.a4" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 Be7 
O-O O-O Qc2 a6 a4")
+ ("E05l" "Catalan: Open, Classical, 8.a4 Bd7" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O O-O Qc2 a6 a4 Bd7")
+ ("E05m" "Catalan: Open, Classical, 8.a4 Bd7 9.Qxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 a4 Bd7 Qxc4")
+ ("E05m" "Catalan: Open, Classical, 8.a4 Bd7 9.Qxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 a4 Bd7 Qxc4 Bc6")
+ ("E05n" "Catalan: Open, Classical, 8.a4, 10.Bg5 Bd5" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 a4 Bd7 Qxc4 Bc6 Bg5 Bd5")
+ ("E05o" "Catalan: Open, Classical, 8.a4, 10.Bg5 a5" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 a4 Bd7 Qxc4 Bc6 Bg5 a5")
+ ("E05p" "Catalan: Open, Classical, 8.Qxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 dxc4 Nf3 
Be7 O-O O-O Qc2 a6 Qxc4")
+ ("E05q" "Catalan: Open, Classical, 8.Qxc4 b5 9.Qc2 Bb7" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7")
+ ("E05r" "Catalan: Open, Classical, 8.Qxc4, 10.Bg5" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bg5")
+ ("E05s" "Catalan: Open, Classical, 8.Qxc4, 10.Bd2" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bd2")
+ ("E05t" "Catalan: Open, Classical, 8.Qxc4, 10.Bd2 Be4" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bd2 Be4")
+ ("E05u" "Catalan: Open, Classical, 8.Qxc4, 10.Bf4" "d4 Nf6 c4 e6 g3 d5 Bg2 
dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bf4")
+ ("E05v" "Catalan: Open, Classical, 8.Qxc4, 10.Bf4 Nc6" "d4 Nf6 c4 e6 g3 d5 
Bg2 dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bf4 Nc6")
+ ("E05v" "Catalan: Open, Classical, 8.Qxc4, 10.Bf4 Nc6 11.Rd1" "d4 Nf6 c4 e6 
g3 d5 Bg2 dxc4 Nf3 Be7 O-O O-O Qc2 a6 Qxc4 b5 Qc2 Bb7 Bf4 Nc6 Rd1")
+ ("E06" "Catalan: Closed" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7")
+ ("E06" "Catalan: Closed, 5.Nf3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3")
+ ("E06" "Catalan: Closed, 5.Nf3 O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O")
+ ("E06" "Catalan: Closed, 6.Qc2" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O Qc2")
+ ("E06" "Catalan: Closed, 6.O-O" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O")
+ ("E06" "Catalan: Closed, 6.O-O c5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
c5")
+ ("E06" "Catalan: Closed, 6.O-O c5 7.cxd5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O c5 cxd5")
+ ("E06" "Catalan: Closed, 6.O-O c6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
c6")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O c6 b3")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Nbd2" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O c6 Nbd2")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Nc3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O c6 Nc3")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Nc3 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O c6 Nc3 b6")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Nc3 b6 8.Ne5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O c6 Nc3 b6 Ne5")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Qc2" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O c6 Qc2")
+ ("E06" "Catalan: Closed, 6.O-O c6 7.Qc2 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O c6 Qc2 b6")
+ ("E07" "Catalan: Closed, 6...Nbd7" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
Nbd7")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nbd2" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Nbd2")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Qd3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Qd3")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 b3")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 b3 c6")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 b3 c6 Ba3")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 b3 c6 Bb2")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Nc3")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3 dxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Nc3 dxc4")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3 dxc4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Nc3 dxc4 e4")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3 c6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Nc3 c6")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3 c6 8.Qb3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Nc3 c6 Qb3")
+ ("E07" "Catalan: Closed, Botvinnik Variation" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Nc3 c6 Qd3")
+ ("E07" "Catalan: Closed, 6...Nbd7 7.Nc3 c6 8.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Nc3 c6 b3")
+ ("E08a" "Catalan: Closed, 7.Qc2" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 
Qc2")
+ ("E08b" "Catalan: Closed, 7.Qc2 c5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
Nbd7 Qc2 c5")
+ ("E08c" "Catalan: Closed, 7.Qc2 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
Nbd7 Qc2 b6")
+ ("E08d" "Catalan: Closed, 7.Qc2 c6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
Nbd7 Qc2 c6")
+ ("E08e" "Catalan: Closed, 7.Qc2 c6 8.Rd1" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Qc2 c6 Rd1")
+ ("E08f" "Catalan: Closed, 7.Qc2 c6 8.Rd1 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Rd1 b6")
+ ("E08f" "Catalan: Closed, Zagoryansky Variation" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 Rd1 b6 a4")
+ ("E08g" "Catalan: Closed, 7.Qc2 c6 8.Bf4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Qc2 c6 Bf4")
+ ("E08h" "Catalan: Closed, 7.Qc2 c6 8.Bf4 Nh5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Bf4 Nh5")
+ ("E08i" "Catalan: Closed, 7.Qc2 c6 8.Bf4 Ne4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Bf4 Ne4")
+ ("E08j" "Catalan: Closed, 7.Qc2 c6 8.Bf4 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Bf4 b6")
+ ("E08k" "Catalan: Closed, 7.Qc2 c6 8.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Qc2 c6 b3")
+ ("E08l" "Catalan: Closed, 7.Qc2 c6 8.b3 b5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 b3 b5")
+ ("E08m" "Catalan: Closed, 7.Qc2 c6 8.b3 b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 b3 b6")
+ ("E08n" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1")
+ ("E08n" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Ba6" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Ba6")
+ ("E08o" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Ba6 10.Nbd2" "d4 Nf6 c4 e6 
g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Ba6 Nbd2")
+ ("E08p" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7")
+ ("E08p" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3" "d4 Nf6 c4 e6 g3 
d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7 Nc3")
+ ("E08p" "Catalan: Closed, Spassky Gambit" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O 
O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7 Nc3 b5")
+ ("E08q" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3 Rc8" "d4 Nf6 c4 
e6 g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7 Nc3 Rc8")
+ ("E08q" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3 Rc8 11.e4" "d4 
Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7 Nc3 Rc8 e4")
+ ("E08r" "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3 Rc8 11.e4 dxe4" 
"d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 b3 b6 Rd1 Bb7 Nc3 Rc8 e4 
dxe4")
+ ("E09a" "Catalan: Closed, Main Line" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 O-O O-O 
Nbd7 Qc2 c6 Nbd2")
+ ("E09b" "Catalan: Closed, Main Line, 8...b5" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Nbd2 b5")
+ ("E09c" "Catalan: Closed, Main Line, 8...Re8" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Nbd2 Re8")
+ ("E09d" "Catalan: Closed, Main Line, 8...b6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Nbd2 b6")
+ ("E09e" "Catalan: Closed, Main Line, 9.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Nbd2 b6 b3")
+ ("E09e" "Catalan: Closed, Main Line, Sokolsky Variation" "d4 Nf6 c4 e6 g3 d5 
Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 b3 a5 Bb2 Ba6")
+ ("E09e" "Catalan: Closed, Main Line, 9.b3 Bb7" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 b3 Bb7")
+ ("E09f" "Catalan: Closed, Main Line, 9.b3 Bb7 10.Bb2" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 b3 Bb7 Bb2")
+ ("E09g" "Catalan: Closed, Main Line, 9.b3 Bb7 10.Bb2 Rc8" "d4 Nf6 c4 e6 g3 d5 
Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 b3 Bb7 Bb2 Rc8")
+ ("E09h" "Catalan: Closed, Main Line, 9.e4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 Nf3 
O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4")
+ ("E09i" "Catalan: Closed, Main Line, 9.e4 Ba6" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Ba6")
+ ("E09i" "Catalan: Closed, Main Line, 9.e4 Ba6 10.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Ba6 b3")
+ ("E09j" "Catalan: Closed, Main Line, 9.e4 dxe4" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 dxe4")
+ ("E09k" "Catalan: Closed, Main Line, 9.e4 Bb7" "d4 Nf6 c4 e6 g3 d5 Bg2 Be7 
Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Bb7")
+ ("E09l" "Catalan: Closed, Main Line, 9.e4 Bb7 10.e5" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Bb7 e5")
+ ("E09m" "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3" "d4 Nf6 c4 e6 g3 d5 Bg2 
Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Bb7 b3")
+ ("E09n" "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3 Rc8 11.Bb2" "d4 Nf6 c4 e6 
g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Bb7 b3 Rc8 Bb2")
+ ("E09o" "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3 Rc8 11.Bb2 c5" "d4 Nf6 c4 
e6 g3 d5 Bg2 Be7 Nf3 O-O O-O Nbd7 Qc2 c6 Nbd2 b6 e4 Bb7 b3 Rc8 Bb2 c5")
+ ("E10a" "Neo-Indian: 3.Nf3" "d4 Nf6 c4 e6 Nf3")
+ ("E10b" "Neo-Indian: Döry Defence" "d4 Nf6 c4 e6 Nf3 Ne4")
+ ("E10c" "Neo-Indian: 3.Nf3 Be7" "d4 Nf6 c4 e6 Nf3 Be7")
+ ("E10d" "Neo-Indian: 3.Nf3 a6" "d4 Nf6 c4 e6 Nf3 a6")
+ ("E10e" "Neo-Indian: 3.Nf3 a6 4.Nc3" "d4 Nf6 c4 e6 Nf3 a6 Nc3")
+ ("E10f" "Neo-Indian: 3.Nf3 a6 4.Nc3 c5" "d4 Nf6 c4 e6 Nf3 a6 Nc3 c5")
+ ("E10g" "Neo-Indian: Blumenfeld/Benoni" "d4 Nf6 c4 e6 Nf3 c5")
+ ("E10h" "Neo-Indian: Blumenfeld/Benoni, 4.e3" "d4 Nf6 c4 e6 Nf3 c5 e3")
+ ("E10i" "Neo-Indian: Blumenfeld/Benoni, 4.e3 b6" "d4 Nf6 c4 e6 Nf3 c5 e3 b6")
+ ("E10j" "Neo-Indian: Blumenfeld/Benoni, 4.e3 cxd4" "d4 Nf6 c4 e6 Nf3 c5 e3 
cxd4")
+ ("E10k" "Neo-Indian: Blumenfeld/Benoni, 4.d5" "d4 Nf6 c4 e6 Nf3 c5 d5")
+ ("E10k" "Blumenfeld Countergambit" "d4 Nf6 c4 e6 Nf3 c5 d5 b5")
+ ("E10k" "Blumenfeld: 5.dxe6" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 dxe6")
+ ("E10k" "Blumenfeld: 5.dxe6 fxe6 6.cxb5" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 dxe6 fxe6 
cxb5")
+ ("E10l" "Blumenfeld: 5.dxe6 fxe6 6.cxb5 d5" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 dxe6 
fxe6 cxb5 d5")
+ ("E10m" "Blumenfeld: 5.Bg5" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 Bg5")
+ ("E10n" "Blumenfeld: 5.Bg5 h6" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 Bg5 h6")
+ ("E10o" "Blumenfeld: 5.Bg5 Qa5+" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 Bg5 Qa5+")
+ ("E10p" "Blumenfeld: 5.Bg5 exd5" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 Bg5 exd5")
+ ("E10q" "Blumenfeld: Spielmann Variation" "d4 Nf6 c4 e6 Nf3 c5 d5 b5 Bg5 exd5 
cxd5 h6")
+ ("E11a" "Bogo-Indian" "d4 Nf6 c4 e6 Nf3 Bb4+")
+ ("E11a" "Bogo-Indian: 4.Nbd2" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2")
+ ("E11b" "Bogo-Indian: 4.Nbd2 d5" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 d5")
+ ("E11c" "Bogo-Indian: 4.Nbd2 b6" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 b6")
+ ("E11c" "Bogo-Indian: 4.Nbd2 b6 5.a3" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 b6 a3")
+ ("E11c" "Bogo-Indian: 4.Nbd2 b6 5.a3 Bxd2+" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 b6 a3 
Bxd2+")
+ ("E11d" "Bogo-Indian: 4.Nbd2 b6 5.a3 Bxd2+ 6.Bxd2" "d4 Nf6 c4 e6 Nf3 Bb4+ 
Nbd2 b6 a3 Bxd2+ Bxd2")
+ ("E11d" "Bogo-Indian: 4.Nbd2 b6 5.a3 Bxd2+ 6.Bxd2 Bb7" "d4 Nf6 c4 e6 Nf3 Bb4+ 
Nbd2 b6 a3 Bxd2+ Bxd2 Bb7")
+ ("E11e" "Bogo-Indian: 4.Nbd2 O-O" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 O-O")
+ ("E11f" "Bogo-Indian: 4.Nbd2 O-O 5.a3" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 O-O a3")
+ ("E11f" "Bogo-Indian: 4.Nbd2 O-O 5.a3 Bxd2+" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 O-O 
a3 Bxd2+")
+ ("E11f" "Bogo-Indian: 4.Nbd2 O-O 5.a3 Be7" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 O-O a3 
Be7")
+ ("E11f" "Bogo-Indian: Grünfeld Variation" "d4 Nf6 c4 e6 Nf3 Bb4+ Nbd2 O-O a3 
Be7 e4 d5")
+ ("E11g" "Bogo-Indian: 4.Bd2" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2")
+ ("E11g" "Bogo-Indian: 4.Bd2 Be7" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Be7")
+ ("E11g" "Bogo-Indian: 4.Bd2 Be7 5.g3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Be7 g3")
+ ("E11g" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Be7 g3 
d5")
+ ("E11g" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Be7 
g3 d5 Bg2")
+ ("E11h" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 
Be7 g3 d5 Bg2 O-O")
+ ("E11h" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O 7.O-O c6" "d4 Nf6 c4 e6 Nf3 
Bb4+ Bd2 Be7 g3 d5 Bg2 O-O O-O c6")
+ ("E11i" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O 7.O-O c6 8.Qc2" "d4 Nf6 c4 
e6 Nf3 Bb4+ Bd2 Be7 g3 d5 Bg2 O-O O-O c6 Qc2")
+ ("E11i" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O 7.O-O c6 8.Qc2 b6" "d4 Nf6 
c4 e6 Nf3 Bb4+ Bd2 Be7 g3 d5 Bg2 O-O O-O c6 Qc2 b6")
+ ("E11i" "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O 7.O-O c6 8.Qc2 b6 9.Bf4" 
"d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Be7 g3 d5 Bg2 O-O O-O c6 Qc2 b6 Bf4")
+ ("E11j" "Bogo-Indian: Vitolins Variation" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 c5")
+ ("E11k" "Bogo-Indian: Vitolins, 6.g3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 c5 Bxb4 cxb4 
g3")
+ ("E11l" "Bogo-Indian: 4.Bd2 a5" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 a5")
+ ("E11l" "Bogo-Indian: 4.Bd2 a5 5.Nc3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 a5 Nc3")
+ ("E11m" "Bogo-Indian: 4.Bd2 a5 5.g3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 a5 g3")
+ ("E11n" "Bogo-Indian: Nimzowitsch Variation" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7")
+ ("E11o" "Bogo-Indian: Nimzowitsch, 5.Nc3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 Nc3")
+ ("E11p" "Bogo-Indian: Nimzowitsch, 5.g3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 g3")
+ ("E11q" "Bogo-Indian: Nimzowitsch, 5.g3 O-O" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 
g3 O-O")
+ ("E11q" "Bogo-Indian: Nimzowitsch, 5.g3 O-O" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 
g3 O-O Bg2")
+ ("E11r" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 
g3 Nc6")
+ ("E11r" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 
Qe7 g3 Nc6 Nc3")
+ ("E11s" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3 Bxc3" "d4 Nf6 c4 e6 Nf3 
Bb4+ Bd2 Qe7 g3 Nc6 Nc3 Bxc3")
+ ("E11s" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3 Bxc3 7.Bxc3" "d4 Nf6 c4 e6 
Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Nc3 Bxc3 Bxc3")
+ ("E11s" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3 Bxc3 7.Bxc3 Ne4" "d4 Nf6 c4 
e6 Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Nc3 Bxc3 Bxc3 Ne4")
+ ("E11s" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3 Bxc3 7.Bxc3 Ne4 8.Rc1" "d4 
Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Nc3 Bxc3 Bxc3 Ne4 Rc1")
+ ("E11t" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Bg2" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 
Qe7 g3 Nc6 Bg2")
+ ("E11t" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Bg2 Bxd2+" "d4 Nf6 c4 e6 Nf3 
Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+")
+ ("E11u" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Bg2 Bxd2+ 7.Nbxd2" "d4 Nf6 c4 
e6 Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2")
+ ("E11v" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line" "d4 Nf6 c4 e6 Nf3 Bb4+ 
Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2 d6 O-O")
+ ("E11v" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line, 8...O-O" "d4 Nf6 c4 e6 
Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2 d6 O-O O-O")
+ ("E11w" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line, 8...a5" "d4 Nf6 c4 e6 
Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2 d6 O-O a5")
+ ("E11w" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line, 8...a5 9.e4" "d4 Nf6 
c4 e6 Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2 d6 O-O a5 e4")
+ ("E11w" "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line, 8...a5 9.e4 e5 10.d5 
Nb8" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Qe7 g3 Nc6 Bg2 Bxd2+ Nbxd2 d6 O-O a5 e4 e5 d5 
Nb8")
+ ("E11x" "Bogo-Indian: 4.Bd2 Bxd2+" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Bxd2+")
+ ("E11x" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Nbxd2" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Bxd2+ 
Nbxd2")
+ ("E11y" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 Bxd2+ 
Qxd2")
+ ("E11y" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2 O-O" "d4 Nf6 c4 e6 Nf3 Bb4+ Bd2 
Bxd2+ Qxd2 O-O")
+ ("E11y" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2 O-O 6.Nc3" "d4 Nf6 c4 e6 Nf3 Bb4+ 
Bd2 Bxd2+ Qxd2 O-O Nc3")
+ ("E11y" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2 O-O 6.Nc3 d5" "d4 Nf6 c4 e6 Nf3 Bb4+ 
Bd2 Bxd2+ Qxd2 O-O Nc3 d5")
+ ("E11z" "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2 O-O 6.Nc3 d5 7.e3" "d4 Nf6 c4 e6 Nf3 
Bb4+ Bd2 Bxd2+ Qxd2 O-O Nc3 d5 e3")
+ ("E12a" "Queen's Indian" "d4 Nf6 c4 e6 Nf3 b6")
+ ("E12b" "Queen's Indian: Miles Variation" "d4 Nf6 c4 e6 Nf3 b6 Bf4")
+ ("E12b" "Queen's Indian: Miles, 5.e3 Be7" "d4 Nf6 c4 e6 Nf3 b6 Bf4 Bb7 e3 
Be7")
+ ("E12b" "Queen's Indian: Miles, 5.e3 Be7 6.h3" "d4 Nf6 c4 e6 Nf3 b6 Bf4 Bb7 
e3 Be7 h3")
+ ("E12c" "Queen's Indian: Miles, 5.e3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 Bf4 Bb7 e3 
Bb4+")
+ ("E12c" "Queen's Indian: Miles, 5.e3 Bb4+ 6.Nbd2" "d4 Nf6 c4 e6 Nf3 b6 Bf4 
Bb7 e3 Bb4+ Nbd2")
+ ("E12c" "Queen's Indian: Miles, 5.e3 Bb4+ 6.Nfd2" "d4 Nf6 c4 e6 Nf3 b6 Bf4 
Bb7 e3 Bb4+ Nfd2")
+ ("E12d" "Queen's Indian: Petrosian" "d4 Nf6 c4 e6 Nf3 b6 a3")
+ ("E12e" "Queen's Indian: Petrosian, 4...c5" "d4 Nf6 c4 e6 Nf3 b6 a3 c5")
+ ("E12e" "Queen's Indian: Petrosian, 4...c5 5.d5" "d4 Nf6 c4 e6 Nf3 b6 a3 c5 
d5")
+ ("E12e" "Queen's Indian: Petrosian, 4...c5 5.d5 Ba6" "d4 Nf6 c4 e6 Nf3 b6 a3 
c5 d5 Ba6")
+ ("E12f" "Queen's Indian: Petrosian, 4...c5 5.d5 Ba6 6.Qc2" "d4 Nf6 c4 e6 Nf3 
b6 a3 c5 d5 Ba6 Qc2")
+ ("E12f" "Queen's Indian: Petrosian, 4...c5 5.d5 Ba6 6.Qc2 exd5 6.cxd5 g6" "d4 
Nf6 c4 e6 Nf3 b6 a3 c5 d5 Ba6 Qc2 exd5 cxd5 g6")
+ ("E12g" "Queen's Indian: Petrosian, 4...Ba6" "d4 Nf6 c4 e6 Nf3 b6 a3 Ba6")
+ ("E12g" "Queen's Indian: Petrosian, 4...Ba6 5.e3" "d4 Nf6 c4 e6 Nf3 b6 a3 Ba6 
e3")
+ ("E12g" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2" "d4 Nf6 c4 e6 Nf3 b6 a3 
Ba6 Qc2")
+ ("E12g" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 c5" "d4 Nf6 c4 e6 Nf3 b6 a3 
Ba6 Qc2 c5")
+ ("E12h" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7" "d4 Nf6 c4 e6 Nf3 b6 
a3 Ba6 Qc2 Bb7")
+ ("E12h" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7 6.Nc3 c5" "d4 Nf6 c4 e6 
Nf3 b6 a3 Ba6 Qc2 Bb7 Nc3 c5")
+ ("E12i" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7 6.Nc3 c5 7.e4" "d4 Nf6 
c4 e6 Nf3 b6 a3 Ba6 Qc2 Bb7 Nc3 c5 e4")
+ ("E12i" "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7 6.Nc3 c5 7.e4 cd 8.Nxd4 
Nc6" "d4 Nf6 c4 e6 Nf3 b6 a3 Ba6 Qc2 Bb7 Nc3 c5 e4 cxd4 Nxd4 Nc6")
+ ("E12j" "Queen's Indian: Petrosian, 4...Bb7" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7")
+ ("E12j" "Queen's Indian: Petrosian, 5.Nc3" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3")
+ ("E12j" "Queen's Indian: Petrosian, 5.Nc3 Bxf3" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 
Nc3 Bxf3")
+ ("E12j" "Queen's Indian: Petrosian, 5.Nc3 Be7" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 
Nc3 Be7")
+ ("E12k" "Queen's Indian: Petrosian, 5.Nc3 Ne4" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 
Nc3 Ne4")
+ ("E12l" "Queen's Indian: Petrosian, 5.Nc3 g6" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 
g6")
+ ("E12m" "Queen's Indian: Petrosian, 5.Nc3 d5" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 
d5")
+ ("E12n" "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5" "d4 Nf6 c4 e6 Nf3 b6 a3 
Bb7 Nc3 d5 Bg5")
+ ("E12n" "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5 Be7" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 Bg5 Be7")
+ ("E12o" "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5 Be7 7.Qa4+" "d4 Nf6 c4 e6 
Nf3 b6 a3 Bb7 Nc3 d5 Bg5 Be7 Qa4+")
+ ("E12o" "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5 Be7 7.Qa4+ c6" "d4 Nf6 c4 
e6 Nf3 b6 a3 Bb7 Nc3 d5 Bg5 Be7 Qa4+ c6")
+ ("E12o" "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5 Be7 7.Qa4+ c6 8.Bxf6 Bxf6 
9.cxd5 exd5" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 d5 Bg5 Be7 Qa4+ c6 Bxf6 Bxf6 cxd5 
exd5")
+ ("E12p" "Queen's Indian: Petrosian, 6.cxd5 exd5" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 
Nc3 d5 cxd5 exd5")
+ ("E12p" "Queen's Indian: Petrosian, 6.cxd5 exd5 7.g3" "d4 Nf6 c4 e6 Nf3 b6 a3 
Bb7 Nc3 d5 cxd5 exd5 g3")
+ ("E12q" "Queen's Indian: Petrosian, 6.cxd5 exd5 7.Bg5" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 cxd5 exd5 Bg5")
+ ("E12r" "Queen's Indian: Petrosian, 6.cxd5 Nxd5" "d4 Nf6 c4 e6 Nf3 b6 a3 Bb7 
Nc3 d5 cxd5 Nxd5")
+ ("E12r" "Queen's Indian: Petrosian, 6.cxd5 Nxd5 7.e4" "d4 Nf6 c4 e6 Nf3 b6 a3 
Bb7 Nc3 d5 cxd5 Nxd5 e4")
+ ("E12s" "Queen's Indian: Petrosian, 6.cxd5 Nxd5 7.e3" "d4 Nf6 c4 e6 Nf3 b6 a3 
Bb7 Nc3 d5 cxd5 Nxd5 e3")
+ ("E12s" "Queen's Indian: Petrosian, 6.cxd5 Nxd5 7.e3 g6" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 cxd5 Nxd5 e3 g6")
+ ("E12s" "Queen's Indian: Petrosian, 6.cxd5 Nxd5 7.e3 Be7" "d4 Nf6 c4 e6 Nf3 
b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 e3 Be7")
+ ("E12t" "Queen's Indian: Petrosian, Kasparov Variation" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2")
+ ("E12t" "Queen's Indian: Petrosian, Kasparov, 7...Be7" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Be7")
+ ("E12t" "Queen's Indian: Petrosian, Kasparov, 7...c5" "d4 Nf6 c4 e6 Nf3 b6 a3 
Bb7 Nc3 d5 cxd5 Nxd5 Qc2 c5")
+ ("E12t" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3" "d4 Nf6 c4 e6 Nf3 b6 
a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3")
+ ("E12u" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3" "d4 Nf6 c4 e6 
Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3 bxc3")
+ ("E12u" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3 c5" "d4 Nf6 c4 
e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3 bxc3 c5")
+ ("E12u" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3 c5 9.e4" "d4 
Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3 bxc3 c5 e4")
+ ("E12u" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3 Be7" "d4 Nf6 c4 
e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3 bxc3 Be7")
+ ("E12u" "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3 Be7 9.e4" "d4 
Nf6 c4 e6 Nf3 b6 a3 Bb7 Nc3 d5 cxd5 Nxd5 Qc2 Nxc3 bxc3 Be7 e4")
+ ("E12v" "Queen's Indian: 4.Bg5" "d4 Nf6 c4 e6 Nf3 b6 Bg5")
+ ("E12w" "Queen's Indian: 4.Nc3" "d4 Nf6 c4 e6 Nf3 b6 Nc3")
+ ("E12w" "Queen's Indian: 4.Nc3 Bb7" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7")
+ ("E12w" "Queen's Indian: 4.Nc3 Bb7 5.Bg5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5")
+ ("E12x" "Queen's Indian: 5.Bg5 h6 6.Bh4 Be7" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 
h6 Bh4 Be7")
+ ("E12x" "Queen's Indian: 5.Bg5 h6 6.Bh4 Be7 7.e3 Ne4" "d4 Nf6 c4 e6 Nf3 b6 
Nc3 Bb7 Bg5 h6 Bh4 Be7 e3 Ne4")
+ ("E12x" "Queen's Indian: 5.Bg5 h6 6.Bh4 Be7 7.e3 c5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Be7 e3 c5")
+ ("E12y" "Queen's Indian: Botvinnik Variation" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 
Bg5 h6 Bh4 g5")
+ ("E12y" "Queen's Indian: Botvinnik, 8.Qc2" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 
h6 Bh4 g5 Bg3 Nh5 Qc2")
+ ("E12y" "Queen's Indian: Botvinnik, 8.e3" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 
Bh4 g5 Bg3 Nh5 e3")
+ ("E13a" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 
h6 Bh4 Bb4")
+ ("E13b" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Qc2" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 Qc2")
+ ("E13c" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Qc2 g5" "d4 Nf6 c4 e6 Nf3 b6 
Nc3 Bb7 Bg5 h6 Bh4 Bb4 Qc2 g5")
+ ("E13d" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Nd2" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 Nd2")
+ ("E13e" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Nd2 Bxc3" "d4 Nf6 c4 e6 Nf3 b6 
Nc3 Bb7 Bg5 h6 Bh4 Bb4 Nd2 Bxc3")
+ ("E13e" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Nd2 Bxc3 8.bxc3" "d4 Nf6 c4 e6 
Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 Nd2 Bxc3 bxc3")
+ ("E13f" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 e3")
+ ("E13g" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 c5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 e3 c5")
+ ("E13h" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+" "d4 Nf6 c4 e6 Nf3 b6 
Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+")
+ ("E13h" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3" "d4 Nf6 c4 e6 
Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3")
+ ("E13i" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6" "d4 Nf6 c4 
e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3 d6")
+ ("E13j" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2" "d4 
Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3 d6 Nd2")
+ ("E13k" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2 Nbd7" 
"d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3 d6 Nd2 Nbd7")
+ ("E13k" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2 Nbd7 
10.f3" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3 d6 Nd2 Nbd7 
f3")
+ ("E13k" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2 Nbd7 
10.f3 Qe7" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 Bxc3+ bxc3 d6 Nd2 
Nbd7 f3 Qe7")
+ ("E13l" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 e3 g5")
+ ("E13l" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 
Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3")
+ ("E13l" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4" "d4 Nf6 c4 e6 
Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4")
+ ("E13m" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2" "d4 Nf6 
c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 Qc2")
+ ("E13n" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+" 
"d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 Qc2 Bxc3+")
+ ("E13n" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+" 
"d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 Qc2 Bxc3+ bxc3")
+ ("E13o" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+ 
10.bxc3 d6" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 Qc2 Bxc3+ 
bxc3 d6")
+ ("E13o" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+ 
10.bxc3 d6 11.Bd3" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 
Qc2 Bxc3+ bxc3 d6 Bd3")
+ ("E13p" "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+ 
10.bxc3 d6 11.Bd3 f5" "d4 Nf6 c4 e6 Nf3 b6 Nc3 Bb7 Bg5 h6 Bh4 Bb4 e3 g5 Bg3 Ne4 
Qc2 Bxc3+ bxc3 d6 Bd3 f5")
+ ("E14a" "Queen's Indian: 4.e3" "d4 Nf6 c4 e6 Nf3 b6 e3")
+ ("E14a" "Queen's Indian: 4.e3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb4+")
+ ("E14b" "Queen's Indian: 4.e3 Bb7" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7")
+ ("E14c" "Queen's Indian: 4.e3 Bb7 5.Nc3" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Nc3")
+ ("E14d" "Queen's Indian: 4.e3 Bb7 5.Nc3 d5" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Nc3 
d5")
+ ("E14e" "Queen's Indian: 4.e3 Bb7 5.Bd3" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3")
+ ("E14f" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
Bb4+")
+ ("E14g" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2" "d4 Nf6 c4 e6 Nf3 b6 e3 
Bb7 Bd3 Bb4+ Nbd2")
+ ("E14g" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 c5" "d4 Nf6 c4 e6 Nf3 b6 
e3 Bb7 Bd3 Bb4+ Nbd2 c5")
+ ("E14h" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O" "d4 Nf6 c4 e6 Nf3 b6 
e3 Bb7 Bd3 Bb4+ Nbd2 O-O")
+ ("E14i" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O 7.O-O d5" "d4 Nf6 c4 
e6 Nf3 b6 e3 Bb7 Bd3 Bb4+ Nbd2 O-O O-O d5")
+ ("E14i" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O 7.O-O d5 8.a3" "d4 
Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 Bb4+ Nbd2 O-O O-O d5 a3")
+ ("E14i" "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O 7.O-O d5 8.a3 Be7" 
"d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 Bb4+ Nbd2 O-O O-O d5 a3 Be7")
+ ("E14i" "Queen's Indian: Dreev Variation" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
Bb4+ Nbd2 O-O O-O d5 a3 Be7 b4")
+ ("E14j" "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
Be7")
+ ("E14k" "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7 6.O-O" "d4 Nf6 c4 e6 Nf3 b6 e3 
Bb7 Bd3 Be7 O-O")
+ ("E14k" "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7 6.O-O O-O" "d4 Nf6 c4 e6 Nf3 b6 
e3 Bb7 Bd3 Be7 O-O O-O")
+ ("E14l" "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7 6.O-O O-O 7.Nc3" "d4 Nf6 c4 e6 
Nf3 b6 e3 Bb7 Bd3 Be7 O-O O-O Nc3")
+ ("E14m" "Queen's Indian: 4.e3 Bb7 5.Bd3 d5" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
d5")
+ ("E14n" "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 
Bd3 d5 O-O")
+ ("E14n" "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O Bd6" "d4 Nf6 c4 e6 Nf3 b6 e3 
Bb7 Bd3 d5 O-O Bd6")
+ ("E14o" "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O Bd6 7.b3" "d4 Nf6 c4 e6 Nf3 
b6 e3 Bb7 Bd3 d5 O-O Bd6 b3")
+ ("E14p" "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O Bd6 7.Nc3" "d4 Nf6 c4 e6 Nf3 
b6 e3 Bb7 Bd3 d5 O-O Bd6 Nc3")
+ ("E14q" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
c5")
+ ("E14q" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.Nc3" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 
Bd3 c5 Nc3")
+ ("E14r" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 
Bd3 c5 O-O")
+ ("E14s" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O cxd4" "d4 Nf6 c4 e6 Nf3 b6 
e3 Bb7 Bd3 c5 O-O cxd4")
+ ("E14s" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O cxd4 7.exd4" "d4 Nf6 c4 e6 
Nf3 b6 e3 Bb7 Bd3 c5 O-O cxd4 exd4")
+ ("E14t" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7" "d4 Nf6 c4 e6 Nf3 b6 e3 
Bb7 Bd3 c5 O-O Be7")
+ ("E14t" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nbd2" "d4 Nf6 c4 e6 
Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 Nbd2")
+ ("E14u" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3" "d4 Nf6 c4 e6 Nf3 
b6 e3 Bb7 Bd3 c5 O-O Be7 b3")
+ ("E14u" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3" "d4 Nf6 c4 e6 Nf3 
b6 e3 Bb7 Bd3 c5 O-O Be7 b3 O-O Bb2")
+ ("E14v" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 d5" "d4 
Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 b3 O-O Bb2 d5")
+ ("E14w" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 cxd4" "d4 
Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 b3 O-O Bb2 cxd4")
+ ("E14w" "Queen's Indian: Averbakh Variation" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 
c5 O-O Be7 b3 O-O Bb2 cxd4 Nxd4")
+ ("E14w" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 cxd4 
9.exd4" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 b3 O-O Bb2 cxd4 exd4")
+ ("E14w" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 cxd4 
9.exd4 d5" "d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 b3 O-O Bb2 cxd4 exd4 d5")
+ ("E14x" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3" "d4 Nf6 c4 e6 Nf3 
b6 e3 Bb7 Bd3 c5 O-O Be7 Nc3")
+ ("E14x" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 O-O" "d4 Nf6 c4 e6 
Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 Nc3 O-O")
+ ("E14x" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 cxd4" "d4 Nf6 c4 
e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 Nc3 cxd4")
+ ("E14y" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 cxd4 8.exd4" "d4 
Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 Nc3 cxd4 exd4")
+ ("E14z" "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 cxd4 8.exd4 d5" 
"d4 Nf6 c4 e6 Nf3 b6 e3 Bb7 Bd3 c5 O-O Be7 Nc3 cxd4 exd4 d5")
+ ("E15a" "Queen's Indian: 4.g3" "d4 Nf6 c4 e6 Nf3 b6 g3")
+ ("E15b" "Queen's Indian: 4.g3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb4+")
+ ("E15b" "Queen's Indian: 4.g3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb4+ Bd2")
+ ("E15c" "Queen's Indian: 4.g3 Bb4+ 5.Bd2 Bxd2+" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb4+ 
Bd2 Bxd2+")
+ ("E15c" "Queen's Indian: 4.g3 Bb4+ 5.Bd2 Bxd2+ 6.Qxd2 Ba6" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb4+ Bd2 Bxd2+ Qxd2 Ba6")
+ ("E15d" "Queen's Indian: Nimzowitsch Variation (4.g3 Ba6)" "d4 Nf6 c4 e6 Nf3 
b6 g3 Ba6")
+ ("E15d" "Queen's Indian: Nimzowitsch, 5.Qb3" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 Qb3")
+ ("E15d" "Queen's Indian: Nimzowitsch, 5.Qc2" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 Qc2")
+ ("E15e" "Queen's Indian: Nimzowitsch, 5.Nbd2" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Nbd2")
+ ("E15e" "Queen's Indian: Nimzowitsch, 5.Nbd2 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Nbd2 c5")
+ ("E15f" "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb7" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Nbd2 Bb7")
+ ("E15f" "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb7 6.Bg2" "d4 Nf6 c4 e6 Nf3 b6 
g3 Ba6 Nbd2 Bb7 Bg2")
+ ("E15f" "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb7 6.Bg2 c5" "d4 Nf6 c4 e6 Nf3 
b6 g3 Ba6 Nbd2 Bb7 Bg2 c5")
+ ("E15g" "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb4" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Nbd2 Bb4")
+ ("E15h" "Queen's Indian: Nimzowitsch, 5.Qa4" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 Qa4")
+ ("E15h" "Queen's Indian: Nimzowitsch, 5.Qa4 Be7" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Qa4 Be7")
+ ("E15i" "Queen's Indian: Nimzowitsch, 5.Qa4 c6" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Qa4 c6")
+ ("E15i" "Queen's Indian: Nimzowitsch, 5.Qa4 c6 6.Nc3 b5" "d4 Nf6 c4 e6 Nf3 b6 
g3 Ba6 Qa4 c6 Nc3 b5")
+ ("E15j" "Queen's Indian: Nimzowitsch, 5.Qa4 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
Qa4 c5")
+ ("E15j" "Queen's Indian: Nimzowitsch, 5.Qa4 c5 6.Bg2 Bb7" "d4 Nf6 c4 e6 Nf3 
b6 g3 Ba6 Qa4 c5 Bg2 Bb7")
+ ("E15j" "Queen's Indian: Nimzowitsch, 5.Qa4 c5 6.Bg2 Bb7 7.dxc5" "d4 Nf6 c4 
e6 Nf3 b6 g3 Ba6 Qa4 c5 Bg2 Bb7 dxc5")
+ ("E15k" "Queen's Indian: Nimzowitsch, 5.Qa4 c5 6.Bg2 Bb7 7.O-O" "d4 Nf6 c4 e6 
Nf3 b6 g3 Ba6 Qa4 c5 Bg2 Bb7 O-O")
+ ("E15l" "Queen's Indian: Nimzowitsch, 5.b3 " "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 b3")
+ ("E15l" "Queen's Indian: Nimzowitsch, 5.b3 b5" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 b3 
b5")
+ ("E15l" "Queen's Indian: Nimzowitsch, 5.b3 b5 6.cxb5" "d4 Nf6 c4 e6 Nf3 b6 g3 
Ba6 b3 b5 cxb5")
+ ("E15m" "Queen's Indian: Nimzowitsch, 5.b3 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 b3 
d5")
+ ("E15m" "Queen's Indian: Nimzowitsch, 5.b3 d5 6.cxd5" "d4 Nf6 c4 e6 Nf3 b6 g3 
Ba6 b3 d5 cxd5")
+ ("E15m" "Queen's Indian: Nimzowitsch, 5.b3 d5 6.Bg2" "d4 Nf6 c4 e6 Nf3 b6 g3 
Ba6 b3 d5 Bg2")
+ ("E15n" "Queen's Indian: Nimzowitsch, 5.b3 Bb7" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
b3 Bb7")
+ ("E15n" "Queen's Indian: Nimzowitsch, 5.b3 Bb7 6.Bg2" "d4 Nf6 c4 e6 Nf3 b6 g3 
Ba6 b3 Bb7 Bg2")
+ ("E15n" "Queen's Indian: Nimzowitsch, 5.b3 Bb7, 7...a5" "d4 Nf6 c4 e6 Nf3 b6 
g3 Ba6 b3 Bb7 Bg2 Bb4+ Bd2 a5")
+ ("E15n" "Queen's Indian: Nimzowitsch, 5.b3 Bb7, 7...a5 8.O-O O-O" "d4 Nf6 c4 
e6 Nf3 b6 g3 Ba6 b3 Bb7 Bg2 Bb4+ Bd2 a5 O-O O-O")
+ ("E15o" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+" "d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 
b3 Bb4+")
+ ("E15o" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7" "d4 Nf6 c4 e6 Nf3 
b6 g3 Ba6 b3 Bb4+ Bd2 Be7")
+ ("E15o" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Nc3" "d4 Nf6 c4 
e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Nc3")
+ ("E15p" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2" "d4 Nf6 c4 
e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2")
+ ("E15p" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 d5" "d4 Nf6 
c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 d5")
+ ("E15p" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 d5" "d4 Nf6 
c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 d5 cxd5 exd5 O-O O-O")
+ ("E15q" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 c6" "d4 Nf6 
c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6")
+ ("E15q" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 c6 8.O-O" "d4 
Nf6 c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6 O-O")
+ ("E15q" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 c6 8.O-O d5" 
"d4 Nf6 c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6 O-O d5")
+ ("E15r" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+, Main Line" "d4 Nf6 c4 e6 Nf3 
b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6 Bc3")
+ ("E15s" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+, Main Line, 9.Ne5" "d4 Nf6 c4 
e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6 Bc3 d5 Ne5")
+ ("E15s" "Queen's Indian: Nimzowitsch, 5.b3 Bb4+, Main Line, 9.Ne5 Nfd7" "d4 
Nf6 c4 e6 Nf3 b6 g3 Ba6 b3 Bb4+ Bd2 Be7 Bg2 c6 Bc3 d5 Ne5 Nfd7")
+ ("E15t" "Queen's Indian: 4.g3 Bb7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7")
+ ("E15t" "Queen's Indian: 4.g3 Bb7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2")
+ ("E15t" "Queen's Indian: 4.g3 Bb7 5.Bg2 Qc8" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Qc8")
+ ("E15t" "Queen's Indian: 4.g3 Bb7 5.Bg2 Qc8 6.O-O c5 7.d5" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Qc8 O-O c5 d5")
+ ("E15u" "Queen's Indian: 4.g3 Bb7 5.Bg2 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
c5")
+ ("E15u" "Queen's Indian: Buerger Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
c5 d5 exd5 Ng5")
+ ("E15v" "Queen's Indian: Rubinstein Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 c5 d5 exd5 Nh4")
+ ("E16a" "Queen's Indian: Capablanca Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Bb4+")
+ ("E16b" "Queen's Indian: Capablanca, 6.Nbd2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Bb4+ Nbd2")
+ ("E16c" "Queen's Indian: Capablanca, 6.Nbd2 O-O" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Bb4+ Nbd2 O-O")
+ ("E16d" "Queen's Indian: Capablanca, 6.Nbd2 O-O 7.O-O d5" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Bb4+ Nbd2 O-O O-O d5")
+ ("E16e" "Queen's Indian: Capablanca, 6.Bd2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Bb4+ Bd2")
+ ("E16e" "Queen's Indian: Capablanca, 6.Bd2 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Bb4+ Bd2 c5")
+ ("E16f" "Queen's Indian: Capablanca, Yates Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Bb4+ Bd2 a5")
+ ("E16g" "Queen's Indian: Capablanca, Yates, 7.O-O O-O" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Bb4+ Bd2 a5 O-O O-O")
+ ("E16h" "Queen's Indian: Capablanca, Nimzowitsch Variation" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Bb4+ Bd2 Qe7")
+ ("E16i" "Queen's Indian: Capablanca, Nimzowitsch, 7.O-O Bxd2 8.Qxd2" "d4 Nf6 
c4 e6 Nf3 b6 g3 Bb7 Bg2 Bb4+ Bd2 Qe7 O-O Bxd2 Qxd2")
+ ("E16j" "Queen's Indian: Capablanca, Riumin Variation" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Bb4+ Bd2 Be7")
+ ("E16k" "Queen's Indian: Capablanca, Riumin, 7.Nc3" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Bb4+ Bd2 Be7 Nc3")
+ ("E16l" "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Bb4+ Bd2 Be7 Nc3 O-O")
+ ("E16m" "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O 8.O-O" "d4 Nf6 c4 e6 
Nf3 b6 g3 Bb7 Bg2 Bb4+ Bd2 Be7 Nc3 O-O O-O")
+ ("E16n" "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O 8.O-O d5" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Bb4+ Bd2 Be7 Nc3 O-O O-O d5")
+ ("E16o" "Queen's Indian: Capablanca, 6...Bxd2+" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Bb4+ Bd2 Bxd2+")
+ ("E16o" "Queen's Indian: Capablanca, 6...Bxd2+ 7.Nbxd2" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Bb4+ Bd2 Bxd2+ Nbxd2")
+ ("E16p" "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Bb4+ Bd2 Bxd2+ Qxd2")
+ ("E16q" "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2 O-O" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Bb4+ Bd2 Bxd2+ Qxd2 O-O")
+ ("E16q" "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2 O-O 8.O-O" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Bb4+ Bd2 Bxd2+ Qxd2 O-O O-O")
+ ("E16r" "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2 O-O 8.Nc3" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Bb4+ Bd2 Bxd2+ Qxd2 O-O Nc3")
+ ("E17a" "Queen's Indian: 5.Bg2 Be7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7")
+ ("E17b" "Queen's Indian: 6.Nc3" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 Nc3")
+ ("E17b" "Queen's Indian: 6.Nc3 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 Nc3 
d5")
+ ("E17c" "Queen's Indian: 6.Nc3 O-O" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 Nc3 
O-O")
+ ("E17d" "Queen's Indian: 6.Nc3 O-O 7.Qc2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
Nc3 O-O Qc2")
+ ("E17e" "Queen's Indian: 6.Nc3 O-O 7.Qc2 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 Nc3 O-O Qc2 c5")
+ ("E17f" "Queen's Indian: 6.Nc3 O-O 7.Qc2 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 Nc3 O-O Qc2 d5")
+ ("E17g" "Queen's Indian: 6.Nc3 Ne4" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 Nc3 
Ne4")
+ ("E17g" "Queen's Indian: 6.Nc3 Ne4 7.Qc2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
Nc3 Ne4 Qc2")
+ ("E17h" "Queen's Indian: Opovcensky Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Be7 Nc3 Ne4 Bd2")
+ ("E17i" "Queen's Indian: Opovcensky, 7...O-O" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 Nc3 Ne4 Bd2 O-O")
+ ("E17j" "Queen's Indian: Opovcensky, 7...f5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 Nc3 Ne4 Bd2 f5")
+ ("E17k" "Queen's Indian: Opovcensky, 7...Bf6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 Nc3 Ne4 Bd2 Bf6")
+ ("E17l" "Queen's Indian: 6.O-O" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O")
+ ("E17m" "Queen's Indian: 6.O-O d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
d5")
+ ("E17n" "Queen's Indian: 6.O-O O-O" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O")
+ ("E17o" "Queen's Indian: 6.O-O O-O 7.Qc2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O Qc2")
+ ("E17p" "Queen's Indian: 6.O-O O-O 7.Re1" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O Re1")
+ ("E17q" "Queen's Indian: 6.O-O O-O 7.Re1 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Re1 d5")
+ ("E17r" "Queen's Indian: Euwe Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O b3")
+ ("E17s" "Queen's Indian: Euwe, 7...c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O b3 c5")
+ ("E17t" "Queen's Indian: Euwe, 7...d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O b3 d5")
+ ("E17u" "Queen's Indian: Pomar Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O d5")
+ ("E17u" "Queen's Indian: Pomar, 7...exd5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O d5 exd5")
+ ("E17v" "Queen's Indian: Pomar, Taimanov Variation" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O d5 exd5 Nd4")
+ ("E17w" "Queen's Indian: Pomar, Polugaevsky Variation" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O d5 exd5 Nh4")
+ ("E17w" "Queen's Indian: Pomar, Polugaevsky, 8...c6" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O d5 exd5 Nh4 c6")
+ ("E17x" "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O d5 exd5 Nh4 c6 cxd5 Nxd5")
+ ("E17y" "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5 10.Nf5 Nc7" 
"d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O d5 exd5 Nh4 c6 cxd5 Nxd5 Nf5 Nc7")
+ ("E17z" "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5 10.Nf5 Nc7 
11.e4" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O d5 exd5 Nh4 c6 cxd5 Nxd5 Nf5 
Nc7 e4")
+ ("E18a" "Queen's Indian: 7.Nc3" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O 
Nc3")
+ ("E18b" "Queen's Indian: 7.Nc3 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O Nc3 c5")
+ ("E18c" "Queen's Indian: 7.Nc3 d6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O Nc3 d6")
+ ("E18d" "Queen's Indian: 7.Nc3 Na6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O Nc3 Na6")
+ ("E18e" "Queen's Indian: 7.Nc3 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O Nc3 d5")
+ ("E18e" "Queen's Indian: 7.Nc3 d5 8.cxd5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O Nc3 d5 cxd5")
+ ("E18f" "Queen's Indian: 7.Nc3 d5 8.cxd5 exd5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Be7 O-O O-O Nc3 d5 cxd5 exd5")
+ ("E18g" "Queen's Indian: 7.Nc3 d5 8.Ne5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O Nc3 d5 Ne5")
+ ("E18h" "Queen's Indian: 7.Nc3 d5 8.Ne5 c6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 d5 Ne5 c6")
+ ("E18i" "Queen's Indian: 7.Nc3 d5 8.Ne5 Nbd7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 d5 Ne5 Nbd7")
+ ("E18j" "Queen's Indian: 7.Nc3 d5 8.Ne5 Na6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 d5 Ne5 Na6")
+ ("E18k" "Queen's Indian: 7.Nc3 d5 8.Ne5 Na6 9.cxd5 exd5" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O Nc3 d5 Ne5 Na6 cxd5 exd5")
+ ("E18l" "Queen's Indian: 7.Nc3 Ne4" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O 
O-O Nc3 Ne4")
+ ("E18m" "Queen's Indian: 7.Nc3 Ne4 8.Bd2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 
O-O O-O Nc3 Ne4 Bd2")
+ ("E18n" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 Ne4 Bd2 d5")
+ ("E18n" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 d5 9.cxd5 exd5" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Bd2 d5 cxd5 exd5")
+ ("E18o" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 Ne4 Bd2 f5")
+ ("E18p" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5 9.d5" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Be7 O-O O-O Nc3 Ne4 Bd2 f5 d5")
+ ("E18p" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5 9.d5 Bf6" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Bd2 f5 d5 Bf6")
+ ("E18p" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5 9.d5 Bf6 10.Rc1" "d4 Nf6 c4 e6 
Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Bd2 f5 d5 Bf6 Rc1")
+ ("E18q" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 Bf6" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 Ne4 Bd2 Bf6")
+ ("E18r" "Queen's Indian: 7.Nc3 Ne4 8.Bd2 Bf6 9.Rc1" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Bd2 Bf6 Rc1")
+ ("E18s" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 
Be7 O-O O-O Nc3 Ne4 Nxe4")
+ ("E18s" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.d5" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 d5")
+ ("E18s" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Bf4" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Bf4")
+ ("E18s" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Nh4" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Nh4")
+ ("E18t" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1")
+ ("E18u" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1 Bxg2 Nxg2")
+ ("E18u" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5" "d4 Nf6 
c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1 Bxg2 Nxg2 d5")
+ ("E18v" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4" 
"d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1 Bxg2 Nxg2 d5 
Qa4")
+ ("E18w" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4 
Qd7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1 Bxg2 
Nxg2 d5 Qa4 Qd7")
+ ("E18x" "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4 
dxc4" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Nxe4 Bxe4 Ne1 Bxg2 
Nxg2 d5 Qa4 dxc4")
+ ("E18y" "Queen's Indian: Old Main Line, 8.Qc2" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Be7 O-O O-O Nc3 Ne4 Qc2")
+ ("E18y" "Queen's Indian: Old Main Line, 8.Qc2 Nxc3" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3")
+ ("E18z" "Queen's Indian: Old Main Line, 8.Qc2 Nxc3 9.bxc3" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 bxc3")
+ ("E19a" "Queen's Indian: Old Main Line, 9.Qxc3" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 
Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3")
+ ("E19b" "Queen's Indian: Old Main Line, 9.Qxc3 d6" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 d6")
+ ("E19c" "Queen's Indian: Old Main Line, 9.Qxc3 d6 10.b3" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 d6 b3")
+ ("E19d" "Queen's Indian: Old Main Line, 9.Qxc3 Be4" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 Be4")
+ ("E19e" "Queen's Indian: Old Main Line, 9.Qxc3 Be4 10.Ne1" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 Be4 Ne1")
+ ("E19f" "Queen's Indian: Old Main Line, 9.Qxc3 f5" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 f5")
+ ("E19g" "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.Rd1" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 f5 Rd1")
+ ("E19h" "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.b3" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 f5 b3")
+ ("E19i" "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.b3 Bf6 11.Bb2 d6" "d4 
Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 f5 b3 Bf6 Bb2 d6")
+ ("E19j" "Queen's Indian: Old Main Line, 9.Qxc3 c5" "d4 Nf6 c4 e6 Nf3 b6 g3 
Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5")
+ ("E19k" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.b3" "d4 Nf6 c4 e6 Nf3 b6 
g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 b3")
+ ("E19l" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1" "d4 Nf6 c4 e6 Nf3 
b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1")
+ ("E19m" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6" "d4 Nf6 c4 e6 
Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1 d6")
+ ("E19n" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3" "d4 Nf6 c4 
e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1 d6 b3")
+ ("E19o" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3 Bf6" "d4 
Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1 d6 b3 Bf6")
+ ("E19o" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3 Bf6" "d4 
Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1 d6 b3 Bf6 
Bb2")
+ ("E19p" "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3 Bf6 12.Bb2 
Qe7" "d4 Nf6 c4 e6 Nf3 b6 g3 Bb7 Bg2 Be7 O-O O-O Nc3 Ne4 Qc2 Nxc3 Qxc3 c5 Rd1 
d6 b3 Bf6 Bb2 Qe7")
+ ("E20" "Nimzo-Indian Defence" "d4 Nf6 c4 e6 Nc3 Bb4")
+ ("E20" "Nimzo-Indian: Mikenas Attack" "d4 Nf6 c4 e6 Nc3 Bb4 Qd3")
+ ("E20" "Nimzo-Indian: 4.Bd2" "d4 Nf6 c4 e6 Nc3 Bb4 Bd2")
+ ("E20" "Nimzo-Indian: 4.Bd2 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 Bd2 O-O")
+ ("E20" "Nimzo-Indian: 4.Bd2 O-O 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Bd2 O-O Nf3")
+ ("E20" "Nimzo-Indian: Romanishin" "d4 Nf6 c4 e6 Nc3 Bb4 g3")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.d5" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5 
d5")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5 
Nf3")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.Nf3 Ne4" "d4 Nf6 c4 e6 Nc3 Bb4 g3 
c5 Nf3 Ne4")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.Nf3 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 g3 
c5 Nf3 Nc6")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.Nf3 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 g3 
c5 Nf3 O-O")
+ ("E20" "Nimzo-Indian: Romanishin, 4...c5 5.Nf3 cxd4" "d4 Nf6 c4 e6 Nc3 Bb4 g3 
c5 Nf3 cxd4")
+ ("E20" "Nimzo-Indian: Romanishin, 6.Nxd4" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5 Nf3 
cxd4 Nxd4")
+ ("E20" "Nimzo-Indian: Romanishin, 6.Nxd4 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5 Nf3 
cxd4 Nxd4 O-O")
+ ("E20" "Nimzo-Indian: Romanishin, 6.Nxd4 O-O 7.Bg2" "d4 Nf6 c4 e6 Nc3 Bb4 g3 
c5 Nf3 cxd4 Nxd4 O-O Bg2")
+ ("E20" "Nimzo-Indian: Romanishin, 6.Nxd4 O-O 7.Bg2 d5" "d4 Nf6 c4 e6 Nc3 Bb4 
g3 c5 Nf3 cxd4 Nxd4 O-O Bg2 d5")
+ ("E20" "Nimzo-Indian: Romanishin, 8.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 g3 c5 Nf3 
cxd4 Nxd4 O-O Bg2 d5 cxd5")
+ ("E20" "Nimzo-Indian: 4.f3 (Kmoch)" "d4 Nf6 c4 e6 Nc3 Bb4 f3")
+ ("E20" "Nimzo-Indian: 4.f3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 f3 d5")
+ ("E20" "Nimzo-Indian: 4.f3 d5 5.a3 Be7" "d4 Nf6 c4 e6 Nc3 Bb4 f3 d5 a3 Be7")
+ ("E20" "Nimzo-Indian: 4.f3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 f3 c5")
+ ("E20" "Nimzo-Indian: 4.f3 c5 5.d5" "d4 Nf6 c4 e6 Nc3 Bb4 f3 c5 d5")
+ ("E21" "Nimzo-Indian: Three Knights" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 b6")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Qc2" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 
b6 Qc2")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Qc2 Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 
Nf3 b6 Qc2 Bb7")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Qb3" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 
b6 Qb3")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Qb3 a5" "d4 Nf6 c4 e6 Nc3 Bb4 
Nf3 b6 Qb3 a5")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Qb3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 
Nf3 b6 Qb3 c5")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Bg5" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 
b6 Bg5")
+ ("E21" "Nimzo-Indian: Nimzo-Queen's Hybrid, 5.Bg5 Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 
Nf3 b6 Bg5 Bb7")
+ ("E21" "Nimzo-Indian: Three Knights, 4...O-O" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 O-O")
+ ("E21" "Nimzo-Indian: Three Knights, 4...Bxc3+" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 
Bxc3+")
+ ("E21" "Nimzo-Indian: Three Knights, 4...c5" "d4 Nf6 c4 e6 Nc3 Bb4 Nf3 c5")
+ ("E21" "Nimzo-Indian: Three Knights, Euwe Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
Nf3 c5 d5 Ne4")
+ ("E22" "Nimzo-Indian: Spielmann Variation" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3")
+ ("E22" "Nimzo-Indian: Spielmann, 4...Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 Nc6")
+ ("E22" "Nimzo-Indian: Spielmann, 4...c5" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 c5")
+ ("E22" "Nimzo-Indian: Spielmann, 4...c5 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 c5 
Nf3")
+ ("E22" "Nimzo-Indian: Spielmann, 4...c5 5.dxc5" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 c5 
dxc5")
+ ("E22" "Nimzo-Indian: Spielmann, 4...c5 5.dxc5 Na6" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 
c5 dxc5 Na6")
+ ("E23" "Nimzo-Indian: Spielmann, 4...c5 5.dxc5 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 Qb3 
c5 dxc5 Nc6")
+ ("E23" "Nimzo-Indian: Spielmann, Carlsbad Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
Qb3 c5 dxc5 Nc6 Nf3 Ne4 Bd2 Nxd2")
+ ("E23" "Nimzo-Indian: Spielmann, San Remo Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
Qb3 c5 dxc5 Nc6 Nf3 Ne4 Bd2 Nxc5")
+ ("E23" "Nimzo-Indian: Spielmann, Stahlberg Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
Qb3 c5 dxc5 Nc6 Nf3 Ne4 Bd2 Nxc5 Qc2 f5 g3")
+ ("E24" "Nimzo-Indian: Sämisch" "d4 Nf6 c4 e6 Nc3 Bb4 a3")
+ ("E24" "Nimzo-Indian: Sämisch" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ bxc3")
+ ("E24" "Nimzo-Indian: Sämisch, 5...b6" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ bxc3 
b6")
+ ("E24" "Nimzo-Indian: Sämisch, 5...b6 6.f3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 b6 f3")
+ ("E24" "Nimzo-Indian: Sämisch, 5...d5" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ bxc3 
d5")
+ ("E24" "Nimzo-Indian: Sämisch, 5...d5 6.f3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 d5 f3")
+ ("E24" "Nimzo-Indian: Sämisch, 5...c5" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ bxc3 
c5")
+ ("E24" "Nimzo-Indian: Sämisch, 5...c5 6.f3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 c5 f3")
+ ("E24" "Nimzo-Indian: Sämisch, 5...c5 6.f3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 c5 f3 d5")
+ ("E24" "Nimzo-Indian: Sämisch, Botvinnik Variation" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 c5 f3 d5 e3 O-O cxd5 Nxd5")
+ ("E25" "Nimzo-Indian: Sämisch, 5...c5 6.f3 d5 7.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 
a3 Bxc3+ bxc3 c5 f3 d5 cxd5")
+ ("E25" "Nimzo-Indian: Sämisch, 5...c5 6.f3 d5 7.cxd5 Nxd5" "d4 Nf6 c4 e6 Nc3 
Bb4 a3 Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5")
+ ("E25" "Nimzo-Indian: Sämisch, 5...c5 6.f3 d5 7.cxd5 Nxd5 8.Qd3" "d4 Nf6 c4 
e6 Nc3 Bb4 a3 Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5 Qd3")
+ ("E25" "Nimzo-Indian: Sämisch, Keres Variation" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5 dxc5")
+ ("E25" "Nimzo-Indian: Sämisch, Keres, Romanovsky Variation" "d4 Nf6 c4 e6 Nc3 
Bb4 a3 Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5 dxc5 f5")
+ ("E25" "Nimzo-Indian: Sämisch, Keres, Romanovsky, 9.e4" "d4 Nf6 c4 e6 Nc3 Bb4 
a3 Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5 dxc5 f5 e4")
+ ("E25" "Nimzo-Indian: Sämisch, Keres, Romanovsky, 9.Nh3" "d4 Nf6 c4 e6 Nc3 
Bb4 a3 Bxc3+ bxc3 c5 f3 d5 cxd5 Nxd5 dxc5 f5 Nh3")
+ ("E26" "Nimzo-Indian: Sämisch, 5...c5 6.e3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 c5 e3")
+ ("E26" "Nimzo-Indian: Sämisch, 5...c5 6.e3 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 c5 e3 Nc6")
+ ("E26" "Nimzo-Indian: Sämisch, O'Kelly Variation" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 c5 e3 b6")
+ ("E27" "Nimzo-Indian: Sämisch, 5...O-O" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ bxc3 
O-O")
+ ("E27" "Nimzo-Indian: Sämisch, 5...O-O 6.f3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 O-O f3")
+ ("E27" "Nimzo-Indian: Sämisch, 5...O-O 6.f3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 O-O f3 d5")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 O-O e3")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3" "d4 Nf6 c4 e6 Nc3 Bb4 a3 Bxc3+ 
bxc3 O-O e3 b6")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 O-O e3 c5")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 
a3 Bxc3+ bxc3 O-O e3 c5 Ne2")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 
a3 Bxc3+ bxc3 O-O e3 c5 Bd3")
+ ("E28" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 b6" "d4 Nf6 c4 e6 Nc3 
Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 b6")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6" "d4 Nf6 c4 e6 Nc3 
Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6 8.Nf3" "d4 Nf6 c4 e6 
Nc3 Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Nf3")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6 8.Ne2" "d4 Nf6 c4 e6 
Nc3 Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6 8.Ne2 e5" "d4 Nf6 c4 
e6 Nc3 Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2 e5")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6 8.Ne2 d6" "d4 Nf6 c4 
e6 Nc3 Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2 d6")
+ ("E29" "Nimzo-Indian: Sämisch, 5...O-O 6.e3 c5 7.Bd3 Nc6 8.Ne2 b6" "d4 Nf6 c4 
e6 Nc3 Bb4 a3 Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2 b6")
+ ("E29" "Nimzo-Indian: Sämisch, Capablanca Variation" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2 b6 e4 Ne8")
+ ("E29" "Nimzo-Indian: Sämisch, Capablanca, 10.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 a3 
Bxc3+ bxc3 O-O e3 c5 Bd3 Nc6 Ne2 b6 e4 Ne8 O-O")
+ ("E30" "Nimzo-Indian: Leningrad" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5")
+ ("E30" "Nimzo-Indian: Leningrad, 4...O-O" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 O-O")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 c5")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 c5 
d5")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 
c5 d5 exd5")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5 Bxc3+" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 
c5 d5 Bxc3+")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5 d6" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 c5 
d5 d6")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5 d6 6.e3" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 c5 d5 d6 e3")
+ ("E30" "Nimzo-Indian: Leningrad, 4...c5 5.d5 h6" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 c5 
d5 h6")
+ ("E30" "Nimzo-Indian: Leningrad, 4...h6" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6")
+ ("E30" "Nimzo-Indian: Leningrad, 4...h6 5.Bxf6" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 
Bxf6")
+ ("E30" "Nimzo-Indian: Leningrad, 4...h6 5.Bh4" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 
Bh4")
+ ("E30" "Nimzo-Indian: Leningrad, 4...h6 5.Bh4 c5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 
h6 Bh4 c5")
+ ("E30" "Nimzo-Indian: Leningrad, 6.d5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 c5 
d5")
+ ("E30" "Nimzo-Indian: Leningrad, 6.d5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 
c5 d5 exd5")
+ ("E30" "Nimzo-Indian: Leningrad, 6.d5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 
c5 d5 exd5 cxd5")
+ ("E30" "Nimzo-Indian: Leningrad, 6.d5 b5 Gambit" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 
Bh4 c5 d5 b5")
+ ("E30" "Nimzo-Indian: Leningrad, 6.d5 Bxc3+" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 
c5 d5 Bxc3+")
+ ("E31a" "Nimzo-Indian: Leningrad, Main Line" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 h6 Bh4 
c5 d5 d6")
+ ("E31b" "Nimzo-Indian: Leningrad, Main Line, 7.e3" "d4 Nf6 c4 e6 Nc3 Bb4 Bg5 
h6 Bh4 c5 d5 d6 e3")
+ ("E31c" "Nimzo-Indian: Leningrad, Main Line, 7.e3 g5" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 g5")
+ ("E31d" "Nimzo-Indian: Leningrad, Main Line, 7.e3 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 exd5")
+ ("E31e" "Nimzo-Indian: Leningrad, Main Line, 7.e3 e5" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 e5")
+ ("E31f" "Nimzo-Indian: Leningrad, Main Line, 7.e3 Qe7" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 Qe7")
+ ("E31g" "Nimzo-Indian: Leningrad, Main Line, 7.e3 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 O-O")
+ ("E31h" "Nimzo-Indian: Leningrad, Main Line, 7.e3 Bxc3+" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+")
+ ("E31h" "Nimzo-Indian: Leningrad, Main Line, 7.e3 Bxc3+" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3")
+ ("E31i" "Nimzo-Indian: Leningrad, Main Line, 8...Qe7" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 Qe7")
+ ("E31j" "Nimzo-Indian: Leningrad, Main Line, 8...e5" "d4 Nf6 c4 e6 Nc3 Bb4 
Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5")
+ ("E31k" "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Nf3" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5 Nf3")
+ ("E31l" "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Qc2" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5 Qc2")
+ ("E31m" "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Bd3" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5 Bd3")
+ ("E31n" "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.f3" "d4 Nf6 c4 e6 Nc3 
Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5 f3")
+ ("E31o" "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.f3 Nbd7" "d4 Nf6 c4 e6 
Nc3 Bb4 Bg5 h6 Bh4 c5 d5 d6 e3 Bxc3+ bxc3 e5 f3 Nbd7")
+ ("E32a" "Nimzo-Indian: Classical Variation" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2")
+ ("E32b" "Nimzo-Indian: Classical, 4...b6" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 b6")
+ ("E32c" "Nimzo-Indian: Classical, 4...d6" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d6")
+ ("E32d" "Nimzo-Indian: Classical, 4...O-O" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O")
+ ("E32e" "Nimzo-Indian: Classical, 4...O-O 5.Bg5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
O-O Bg5")
+ ("E32f" "Nimzo-Indian: Classical, 4...O-O 5.e4" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O 
e4")
+ ("E32g" "Nimzo-Indian: Classical, 4...O-O 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
O-O Nf3")
+ ("E32h" "Nimzo-Indian: Classical, 4...O-O 5.a3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O 
a3")
+ ("E32h" "Nimzo-Indian: Classical, 4...O-O 5.a3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O 
a3 Bxc3+")
+ ("E32h" "Nimzo-Indian: Classical, 4...O-O 5.a3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O 
a3 Bxc3+ Qxc3")
+ ("E32i" "Nimzo-Indian: Classical, Adorjan Gambit" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
O-O a3 Bxc3+ Qxc3 b5")
+ ("E32j" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...d6" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 O-O a3 Bxc3+ Qxc3 d6")
+ ("E32k" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...Ne4" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 O-O a3 Bxc3+ Qxc3 Ne4")
+ ("E32l" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 O-O a3 Bxc3+ Qxc3 b6")
+ ("E32m" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Nf3" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Nf3")
+ ("E32n" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5")
+ ("E32o" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Ba6" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Ba6")
+ ("E32p" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7")
+ ("E32q" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.f3" "d4 
Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7 f3")
+ ("E32r" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.f3 h6" "d4 
Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7 f3 h6")
+ ("E32r" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.f3 h6 
9.Bh4" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7 f3 h6 Bh4")
+ ("E32s" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.e3" "d4 
Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7 e3")
+ ("E32t" "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.e3 d6" "d4 
Nf6 c4 e6 Nc3 Bb4 Qc2 O-O a3 Bxc3+ Qxc3 b6 Bg5 Bb7 e3 d6")
+ ("E33" "Nimzo-Indian: Classical, 4...Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 Nc6")
+ ("E33" "Nimzo-Indian: Classical, 4...Nc6 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 Nc6 
Nf3")
+ ("E33" "Nimzo-Indian: Classical, 4...Nc6 5.Nf3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
Nc6 Nf3 d5")
+ ("E33" "Nimzo-Indian: Classical, Milner-Barry (Zurich) Variation" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 Nc6 Nf3 d6")
+ ("E33" "Nimzo-Indian: Classical, Milner-Barry (Zurich), 6.a3" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 Nc6 Nf3 d6 a3")
+ ("E33" "Nimzo-Indian: Classical, Milner-Barry (Zurich), 6.a3 Bxc3+ 7.Qxc3" 
"d4 Nf6 c4 e6 Nc3 Bb4 Qc2 Nc6 Nf3 d6 a3 Bxc3+ Qxc3")
+ ("E33" "Nimzo-Indian: Classical, Milner-Barry (Zurich), 6.Bd2" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 Nc6 Nf3 d6 Bd2")
+ ("E33" "Nimzo-Indian: Classical, Milner-Barry (Zurich), 6.Bd2 O-O" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 Nc6 Nf3 d6 Bd2 O-O")
+ ("E34" "Nimzo-Indian: Classical, Noa Variation" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.e3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 e3")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.e3 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
e3 O-O")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
cxd5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
d5 cxd5 Qxd5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.e3" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 d5 cxd5 Qxd5 e3")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.e3 c5" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 cxd5 Qxd5 e3 c5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.Nf3" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 cxd5 Qxd5 Nf3")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.Nf3 c5" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 cxd5 Qxd5 Nf3 c5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.Nf3 Qf5" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 d5 cxd5 Qxd5 Nf3 Qf5")
+ ("E34" "Nimzo-Indian: Classical, Noa, 5.cxd5 Qxd5 6.Nf3 Qf5 7.Qb3" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 d5 cxd5 Qxd5 Nf3 Qf5 Qb3")
+ ("E34" "Nimzo-Indian: Classical, Noa, Queenswap" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
cxd5 Qxd5 Nf3 Qf5 Qxf5")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
cxd5 exd5")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.a3" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 d5 cxd5 exd5 a3")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 d5 cxd5 exd5 Bg5")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5 c5" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 cxd5 exd5 Bg5 c5")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5 h6" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 cxd5 exd5 Bg5 h6")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5 h6 7.Bh4" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 d5 cxd5 exd5 Bg5 h6 Bh4")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5 h6 7.Bh4 c5" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 d5 cxd5 exd5 Bg5 h6 Bh4 c5")
+ ("E35" "Nimzo-Indian: Classical, Noa, Exchange, 6.Bg5 h6 7.Bxf6" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 d5 cxd5 exd5 Bg5 h6 Bxf6")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 a3")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3 Be7" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
a3 Be7")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3 Bxc3+" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
d5 a3 Bxc3+")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3 Bxc3+" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
d5 a3 Bxc3+ Qxc3")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3 Bxc3+ 6.Qxc3 dxc4" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 d5 a3 Bxc3+ Qxc3 dxc4")
+ ("E36" "Nimzo-Indian: Classical, Noa, 5.a3 Bxc3+ 6.Qxc3 O-O" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 d5 a3 Bxc3+ Qxc3 O-O")
+ ("E36" "Nimzo-Indian: Classical, Noa, Botvinnik Variation" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 a3 Bxc3+ Qxc3 Nc6")
+ ("E36" "Nimzo-Indian: Classical, Noa, Main Line" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 d5 
a3 Bxc3+ Qxc3 Ne4")
+ ("E37" "Nimzo-Indian: Classical, Noa, Main Line, 7.Qc2" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 d5 a3 Bxc3+ Qxc3 Ne4 Qc2")
+ ("E37" "Nimzo-Indian: Classical, Noa, Main Line, 7.Qc2 Nc6" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 a3 Bxc3+ Qxc3 Ne4 Qc2 Nc6")
+ ("E37" "Nimzo-Indian: Classical, Noa, San Remo Variation" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 a3 Bxc3+ Qxc3 Ne4 Qc2 Nc6 e3 e5")
+ ("E37" "Nimzo-Indian: Classical, Noa, Main Line, 7.Qc2 c5" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 d5 a3 Bxc3+ Qxc3 Ne4 Qc2 c5")
+ ("E37" "Nimzo-Indian: Classical, Noa, Main Line, 7.Qc2 c5 8.dxc5 Nc6" "d4 Nf6 
c4 e6 Nc3 Bb4 Qc2 d5 a3 Bxc3+ Qxc3 Ne4 Qc2 c5 dxc5 Nc6")
+ ("E38a" "Nimzo-Indian: Classical, 4...c5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5")
+ ("E38b" "Nimzo-Indian: Classical, 4...c5 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
Nf3")
+ ("E38c" "Nimzo-Indian: Classical, 4...c5 5.e3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
e3")
+ ("E38d" "Nimzo-Indian: Classical, 4...c5 5.dxc5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
dxc5")
+ ("E38e" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Bxc5" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 Bxc5")
+ ("E38e" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Bxc5 6.Nf3" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 c5 dxc5 Bxc5 Nf3")
+ ("E38f" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Bxc5 6.Nf3 Qb6" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 c5 dxc5 Bxc5 Nf3 Qb6")
+ ("E38g" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Qc7" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 Qc7")
+ ("E38h" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 Nc6")
+ ("E38i" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 Na6")
+ ("E38j" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6 6.a3 Bxc3+ 7.Qxc3" "d4 
Nf6 c4 e6 Nc3 Bb4 Qc2 c5 dxc5 Na6 a3 Bxc3+ Qxc3")
+ ("E38k" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 c5 dxc5 Na6 a3 Bxc3+ Qxc3 Nxc5 b4")
+ ("E38k" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4 Nce4" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 c5 dxc5 Na6 a3 Bxc3+ Qxc3 Nxc5 b4 Nce4")
+ ("E38l" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4 Nce4 9.Qd4" "d4 Nf6 
c4 e6 Nc3 Bb4 Qc2 c5 dxc5 Na6 a3 Bxc3+ Qxc3 Nxc5 b4 Nce4 Qd4")
+ ("E38l" "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4 Nce4 9.Qd4 d5 
10.c5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 dxc5 Na6 a3 Bxc3+ Qxc3 Nxc5 b4 Nce4 Qd4 d5 
c5")
+ ("E39a" "Nimzo-Indian: Classical, Pirc Variation" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
c5 dxc5 O-O")
+ ("E39b" "Nimzo-Indian: Classical, Pirc, 6.Bf4" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
dxc5 O-O Bf4")
+ ("E39c" "Nimzo-Indian: Classical, Pirc, 6.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
dxc5 O-O Nf3")
+ ("E39d" "Nimzo-Indian: Classical, Pirc, 6.Nf3 Bxc5" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
c5 dxc5 O-O Nf3 Bxc5")
+ ("E39e" "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 
c5 dxc5 O-O Nf3 Na6")
+ ("E39f" "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.Bd2" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 c5 dxc5 O-O Nf3 Na6 Bd2")
+ ("E39g" "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.a3" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 O-O Nf3 Na6 a3")
+ ("E39h" "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.g3" "d4 Nf6 c4 e6 Nc3 Bb4 
Qc2 c5 dxc5 O-O Nf3 Na6 g3")
+ ("E39i" "Nimzo-Indian: Classical, Pirc, 6.a3" "d4 Nf6 c4 e6 Nc3 Bb4 Qc2 c5 
dxc5 O-O a3")
+ ("E39j" "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 c5 dxc5 O-O a3 Bxc5 Nf3")
+ ("E39k" "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 Nc6" "d4 Nf6 c4 e6 
Nc3 Bb4 Qc2 c5 dxc5 O-O a3 Bxc5 Nf3 Nc6")
+ ("E39l" "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 b6" "d4 Nf6 c4 e6 Nc3 
Bb4 Qc2 c5 dxc5 O-O a3 Bxc5 Nf3 b6")
+ ("E39m" "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 b6 8.Bg5" "d4 Nf6 c4 
e6 Nc3 Bb4 Qc2 c5 dxc5 O-O a3 Bxc5 Nf3 b6 Bg5")
+ ("E40" "Nimzo-Indian: Rubinstein" "d4 Nf6 c4 e6 Nc3 Bb4 e3")
+ ("E40" "Nimzo-Indian: Taimanov" "d4 Nf6 c4 e6 Nc3 Bb4 e3 Nc6")
+ ("E40" "Nimzo-Indian: Taimanov, 5.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 Nc6 Ne2")
+ ("E40" "Nimzo-Indian: Taimanov, 5.Ne2 d5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 Nc6 Ne2 
d5")
+ ("E40" "Nimzo-Indian: Taimanov, 5.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 Nc6 Bd3")
+ ("E41" "Nimzo-Indian: 4.e3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5")
+ ("E41" "Nimzo-Indian: 4.e3 c5 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Nf3")
+ ("E41" "Nimzo-Indian: 4.e3 c5 5.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3")
+ ("E41" "Nimzo-Indian: 4.e3 c5 5.Bd3 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6")
+ ("E41" "Nimzo-Indian: 4.e3 c5 5.Bd3 Nc6 6.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 
Bd3 Nc6 Ne2")
+ ("E41" "Nimzo-Indian: 4.e3 c5 5.Bd3 Nc6 6.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 
Bd3 Nc6 Nf3")
+ ("E41" "Nimzo-Indian: 4.e3 c5, Hübner Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 
Bd3 Nc6 Nf3 Bxc3+ bxc3 d6")
+ ("E41" "Nimzo-Indian: Hübner, 8.e4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6 Nf3 
Bxc3+ bxc3 d6 e4")
+ ("E41" "Nimzo-Indian: Hübner, 8.e4 e5 9.d5 Ne7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 
Bd3 Nc6 Nf3 Bxc3+ bxc3 d6 e4 e5 d5 Ne7")
+ ("E41" "Nimzo-Indian: Hübner, 8.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6 Nf3 
Bxc3+ bxc3 d6 O-O")
+ ("E41" "Nimzo-Indian: Hübner, 8.O-O e5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 Nc6 
Nf3 Bxc3+ bxc3 d6 O-O e5")
+ ("E41" "Nimzo-Indian: Hübner, 8.O-O e5 9.Nd2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Bd3 
Nc6 Nf3 Bxc3+ bxc3 d6 O-O e5 Nd2")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Ne2")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2 d5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 Ne2 d5")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2 cxd4 6.exd4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 c5 
Ne2 cxd4 exd4")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2 cxd4 6.exd4 d5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
c5 Ne2 cxd4 exd4 d5")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2 cxd4 6.exd4 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
c5 Ne2 cxd4 exd4 O-O")
+ ("E42" "Nimzo-Indian: 4.e3 c5 5.Ne2 cxd4 6.exd4 O-O 7.a3 Be7" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 c5 Ne2 cxd4 exd4 O-O a3 Be7")
+ ("E43" "Nimzo-Indian: Nimzowitsch (Fischer) Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 b6")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Bd3")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Nf3")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Nf3 
Bb7")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7 6.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Nf3 Bb7 Bd3")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7 6.Bd3 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 b6 Nf3 Bb7 Bd3 O-O")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7 6.Bd3 O-O 7.O-O" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 b6 Nf3 Bb7 Bd3 O-O O-O")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7 6.Bd3 Ne4" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 b6 Nf3 Bb7 Bd3 Ne4")
+ ("E43" "Nimzo-Indian: Nimzowitsch, 5.Nf3 Bb7 6.Bd3 Ne4 7.O-O" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 b6 Nf3 Bb7 Bd3 Ne4 O-O")
+ ("E43" "Nimzo-Indian: Nimzowitsch, Keene Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Nf3 Bb7 Bd3 Ne4 O-O f5")
+ ("E44" "Nimzo-Indian: Nimzowitsch, 5.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Ne2")
+ ("E44" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Ne2 
Bb7")
+ ("E44" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ne4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Ne2 
Ne4")
+ ("E44" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ne4 6.Bd2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Ne2 Ne4 Bd2")
+ ("E44" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ne4 6.Qc2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Ne2 Ne4 Qc2")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 b6 Ne2 
Ba6")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Ne2 Ba6 a3")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.a3 Be7" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 b6 Ne2 Ba6 a3 Be7")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.a3 Bxc3+" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 b6 Ne2 Ba6 a3 Bxc3+")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.Ng3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
b6 Ne2 Ba6 Ng3")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.Ng3 h5" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 b6 Ne2 Ba6 Ng3 h5")
+ ("E45" "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6 6.Ng3 Bxc3+" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 b6 Ne2 Ba6 Ng3 Bxc3+")
+ ("E46" "Nimzo-Indian: 4.e3 O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O")
+ ("E46" "Nimzo-Indian: Reshevsky Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Ne2")
+ ("E46" "Nimzo-Indian: Reshevsky Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Ne2 
b6")
+ ("E46" "Nimzo-Indian: Reshevsky Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Ne2 
Re8")
+ ("E46" "Nimzo-Indian: Reshevsky Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Ne2 
d5")
+ ("E46" "Nimzo-Indian: Reshevsky, Simagin Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Ne2 d5 a3 Bd6")
+ ("E46" "Nimzo-Indian: Reshevsky, 6.a3 Be7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Ne2 
d5 a3 Be7")
+ ("E46" "Nimzo-Indian: Reshevsky, 6.a3 Be7 7.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Ne2 d5 a3 Be7 cxd5")
+ ("E46" "Nimzo-Indian: Reshevsky, 6.a3 Be7 7.cxd5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Ne2 d5 a3 Be7 cxd5 exd5")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3 b6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 b6")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d6")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 c5")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3 c5 6.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Bd3 c5 Ne2")
+ ("E47" "Nimzo-Indian: 4.e3 O-O 5.Bd3 c5 6.Ne2 cxd4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Bd3 c5 Ne2 cxd4")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Bd3 d5 cxd5")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Bd3 d5 Ne2")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Bd3 d5 Ne2 c5")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Bd3 d5 Ne2 c5 O-O")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.O-O cxd4 8.exd4" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 Ne2 c5 O-O cxd4 exd4")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.cxd5" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Bd3 d5 Ne2 c5 cxd5")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.cxd5 cxd4 8.exd4" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 Ne2 c5 cxd5 cxd4 exd4")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.cxd5 cxd4 8.exd4 Nxd5" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 Ne2 c5 cxd5 cxd4 exd4 Nxd5")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.Ne2 c5 7.cxd5 cxd4 8.exd4 Nxd5 
9.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 Ne2 c5 cxd5 cxd4 exd4 Nxd5 O-O")
+ ("E48" "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5 6.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Bd3 d5 a3")
+ ("E49" "Nimzo-Indian: Botvinnik System" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 
a3 Bxc3+ bxc3")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...dxc4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 
d5 a3 Bxc3+ bxc3 dxc4")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...dxc4 8.Bxc4 c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Bd3 d5 a3 Bxc3+ bxc3 dxc4 Bxc4 c5")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...dxc4 8.Bxc4 c5 9.Ne2" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Bd3 d5 a3 Bxc3+ bxc3 dxc4 Bxc4 c5 Ne2")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Bd3 d5 
a3 Bxc3+ bxc3 c5")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...c5 8.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Bd3 d5 a3 Bxc3+ bxc3 c5 cxd5")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...c5 8.cxd5 exd5 9.Ne2" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Bd3 d5 a3 Bxc3+ bxc3 c5 cxd5 exd5 Ne2")
+ ("E49" "Nimzo-Indian: Botvinnik, 7...c5 8.cxd5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Bd3 d5 a3 Bxc3+ bxc3 c5 cxd5 exd5")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 Ne4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
Ne4")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 b6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 b6")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 c5")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 c5 6.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 c5 Be2")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 c5 6.Be2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 c5 Bd3")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 c5 6.Bd3 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 c5 Bd3 Nc6")
+ ("E50" "Nimzo-Indian: 4.e3 O-O 5.Nf3 c5 6.Bd3 Nc6 7.O-O" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 c5 Bd3 Nc6 O-O")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 a3")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Be2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Be2")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Bd3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Bd3 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 Nc6")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Bd3 Nc6 7.O-O" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 Nc6 O-O")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Bd3 Nc6 7.O-O a6" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 Nc6 O-O a6")
+ ("E51" "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5 6.Bd3 Nc6 7.O-O dxc4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 Nc6 O-O dxc4")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 
Bd3 b6")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 b6 O-O")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 b6 O-O Bb7")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.a3" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 a3")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.a3 Bd6" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 a3 Bd6")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.cxd5" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 cxd5")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.cxd5 exd5" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 cxd5 exd5")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.cxd5 exd5 9.Ne5" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 cxd5 exd5 Ne5")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.cxd5 exd5 9.a3" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 cxd5 exd5 a3")
+ ("E52" "Nimzo-Indian: Main Line, 6...b6 7.O-O Bb7 8.cxd5 exd5 9.a3 Bd6" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 b6 O-O Bb7 cxd5 exd5 a3 Bd6")
+ ("E53" "Nimzo-Indian: Main Line, 6...c5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 
Bd3 c5")
+ ("E53" "Nimzo-Indian: Main Line, 6...c5 7.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 a3")
+ ("E53" "Nimzo-Indian: Main Line, 6...c5 7.O-O" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 O-O")
+ ("E53" "Nimzo-Indian: Main Line, 7...Bd7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 
Bd3 c5 O-O Bd7")
+ ("E53" "Nimzo-Indian: Main Line, 7...Nbd7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O Nbd7")
+ ("E53" "Nimzo-Indian: Main Line, Keres Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O b6")
+ ("E53" "Nimzo-Indian: Main Line, Keres, 8.cxd5 exd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O b6 cxd5 exd5")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O dxc4")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4")
+ ("E54" "Nimzo-Indian: Main Line, Smyslov Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Qe7")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4 Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nc6")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4 cxd4" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4 cxd4 9.exd4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4 cxd4 9.exd4 a6" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 a6")
+ ("E54" "Nimzo-Indian: Main Line, 7...dxc4 8.Bxc4 cxd4 9.exd4 a6 10.Bg5" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 a6 Bg5")
+ ("E54" "Nimzo-Indian: Main Line, Karpov Variation" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5 Bb7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5 Bb7")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5 Bb7 11.Ne5" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5 Bb7 Ne5")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5 Bb7 11.Re1" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5 Bb7 Re1")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5 Bb7 11.Rc1" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5 Bb7 Rc1")
+ ("E54" "Nimzo-Indian: Main Line, Karpov, 10.Bg5 Bb7 11.Qe2" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 cxd4 exd4 b6 Bg5 Bb7 Qe2")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein Variation" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.Ne2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 Ne2")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 a3")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.a3 cd4 10.ed4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 a3 cxd4 exd4")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.Qe2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 Qe2")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.Qe2 a6" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 Qe2 a6")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.Qe2 b6" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 Qe2 b6")
+ ("E55" "Nimzo-Indian: Main Line, Bronstein, 9.Qe2 b6 10.Rd1" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O dxc4 Bxc4 Nbd7 Qe2 b6 Rd1")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 
Bd3 c5 O-O Nc6")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 O-O Nc6 cxd5")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 O-O Nc6 a3")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 Ba5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Ba5")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 Ba5 9.cxd5" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Ba5 cxd5")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 cxd4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 cxd4")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 cxd4 9.exd4" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 cxd4 exd4")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 dxc4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 dxc4 9.Bxc4" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4")
+ ("E56" "Nimzo-Indian: Main Line, 7...Nc6 8.a3 dxc4 9.Bxc4 Ba5" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 Ba5")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Be3" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 Be3")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Bf4" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 Bf4")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Bg5" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 Bg5")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Qd3" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 Qd3")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Re1" "d4 
Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 Re1")
+ ("E57" "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4 10.exd4 Be7 11.Re1 a6" 
"d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 dxc4 Bxc4 cxd4 exd4 Be7 
Re1 a6")
+ ("E58" "Nimzo-Indian: Main Line, 8...Bxc3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O Nc6 a3 Bxc3")
+ ("E58" "Nimzo-Indian: Main Line, 8...Bxc3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 b6" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 b6")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 
d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.h3" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 h3")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.Bb2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 Bb2")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.Qc2" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 Qc2")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.cxd5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 
O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 cxd5")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.cxd5 exd5 11.a4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 cxd5 exd5 a4")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.cxd5 exd5 11.a4 Re8" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 cxd5 exd5 a4 Re8")
+ ("E58" "Nimzo-Indian: Main Line, 9.bxc3 Qc7 10.cxd5 exd5 11.Nh4" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 Qc7 cxd5 exd5 Nh4")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O 
Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4" "d4 Nf6 c4 e6 Nc3 Bb4 
e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7" "d4 Nf6 c4 e6 Nc3 
Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.a4" "d4 Nf6 c4 e6 
Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 a4")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Qe2" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Qe2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Qc2" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Qc2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bb2" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Bb2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Be2" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Be2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bb5" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Bb5")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Ba2" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Ba2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Ba2 e5" "d4 Nf6 
c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Ba2 e5")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bd3" "d4 Nf6 c4 
e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 Bd3")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bd3 e5 12.Qc2" 
"d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 Qc7 
Bd3 e5 Qc2")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bd3 e5 12.Qc2 
Re8" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 Bxc4 
Qc7 Bd3 e5 Qc2 Re8")
+ ("E59" "Nimzo-Indian: Main Line, 9.bxc3 dxc4 10.Bxc4 Qc7 11.Bd3 e5 12.Qc2 Re8 
13.de5" "d4 Nf6 c4 e6 Nc3 Bb4 e3 O-O Nf3 d5 Bd3 c5 O-O Nc6 a3 Bxc3 bxc3 dxc4 
Bxc4 Qc7 Bd3 e5 Qc2 Re8 dxe5")
+ ("E60a" "King's Indian" "d4 Nf6 c4 g6")
+ ("E60a" "King's Indian: Mengarini Attack" "d4 Nf6 c4 g6 Qc2")
+ ("E60b" "King's Indian: 3.Bg5" "d4 Nf6 c4 g6 Bg5")
+ ("E60c" "King's Indian: 3.d5" "d4 Nf6 c4 g6 d5")
+ ("E60c" "King's Indian: 3.d5, Danube/Adorjan Gambit" "d4 Nf6 c4 g6 d5 b5")
+ ("E60d" "King's Indian: 3.f3" "d4 Nf6 c4 g6 f3")
+ ("E60e" "King's Indian: 3.g3" "d4 Nf6 c4 g6 g3")
+ ("E60e" "King's Indian: 3.g3" "d4 Nf6 c4 g6 g3 Bg7")
+ ("E60e" "King's Indian: 3.g3" "d4 Nf6 c4 g6 g3 Bg7 Bg2")
+ ("E60e" "King's Indian: 3.g3" "d4 Nf6 c4 g6 g3 Bg7 Bg2 O-O")
+ ("E60f" "King's Indian: 3.Nf3" "d4 Nf6 c4 g6 Nf3")
+ ("E60f" "King's Indian: 3.Nf3 d6" "d4 Nf6 c4 g6 Nf3 d6")
+ ("E60g" "King's Indian: 3.Nf3 Bg7" "d4 Nf6 c4 g6 Nf3 Bg7")
+ ("E60h" "King's Indian: b3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3")
+ ("E60h" "King's Indian: b3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 O-O Bb2")
+ ("E60h" "King's Indian: b3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 d6 Bb2")
+ ("E60h" "King's Indian: b3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 d6 Bb2 O-O")
+ ("E60h" "King's Indian: b3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 d6 Bb2 O-O e3")
+ ("E60i" "King's Indian: b3+g3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 d6 Bb2 O-O g3")
+ ("E60i" "King's Indian: b3+g3 System" "d4 Nf6 c4 g6 Nf3 Bg7 b3 d6 Bb2 O-O g3 
c5 Bg2 Nc6 O-O")
+ ("E60j" "King's Indian: Fianchetto" "d4 Nf6 c4 g6 Nf3 Bg7 g3")
+ ("E60j" "King's Indian: Fianchetto" "d4 Nf6 c4 g6 Nf3 Bg7 g3 O-O")
+ ("E60k" "King's Indian: Fianchetto without Nc3" "d4 Nf6 c4 g6 Nf3 Bg7 g3 O-O 
Bg2")
+ ("E60k" "King's Indian: Fianchetto without Nc3" "d4 Nf6 c4 g6 Nf3 Bg7 g3 O-O 
Bg2 d6")
+ ("E60k" "King's Indian: Fianchetto without Nc3" "d4 Nf6 c4 g6 Nf3 Bg7 g3 O-O 
Bg2 d6 O-O")
+ ("E60l" "King's Indian: Fianchetto, Yugoslav without Nc3" "d4 Nf6 c4 g6 Nf3 
Bg7 g3 O-O Bg2 d6 O-O c5")
+ ("E60l" "King's Indian: Fianchetto, Yugoslav without Nc3, 7.dxc5" "d4 Nf6 c4 
g6 Nf3 Bg7 g3 O-O Bg2 d6 O-O c5 dxc5")
+ ("E60m" "King's Indian: Fianchetto without Nc3, 6...c6" "d4 Nf6 c4 g6 Nf3 Bg7 
g3 O-O Bg2 d6 O-O c6")
+ ("E60n" "King's Indian: Fianchetto without Nc3, 6...Nc6" "d4 Nf6 c4 g6 Nf3 
Bg7 g3 O-O Bg2 d6 O-O Nc6")
+ ("E60o" "King's Indian: Fianchetto without Nc3, 6...Nbd7" "d4 Nf6 c4 g6 Nf3 
Bg7 g3 O-O Bg2 d6 O-O Nbd7")
+ ("E60p" "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2" "d4 Nf6 c4 g6 
Nf3 Bg7 g3 O-O Bg2 d6 O-O Nbd7 Qc2")
+ ("E60q" "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2 e5" "d4 Nf6 c4 
g6 Nf3 Bg7 g3 O-O Bg2 d6 O-O Nbd7 Qc2 e5")
+ ("E60r" "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2 e5 8.Rd1 Re8" 
"d4 Nf6 c4 g6 Nf3 Bg7 g3 O-O Bg2 d6 O-O Nbd7 Qc2 e5 Rd1 Re8")
+ ("E61a" "King's Indian: 3.Nc3" "d4 Nf6 c4 g6 Nc3")
+ ("E61a" "King's Indian: 3.Nc3 c5" "d4 Nf6 c4 g6 Nc3 c5")
+ ("E61a" "King's Indian: 3.Nc3 c6" "d4 Nf6 c4 g6 Nc3 c6")
+ ("E61a" "King's Indian: 3.Nc3 d6" "d4 Nf6 c4 g6 Nc3 d6")
+ ("E61b" "King's Indian: 3.Nc3 Bg7" "d4 Nf6 c4 g6 Nc3 Bg7")
+ ("E61b" "King's Indian: 4.Bf4" "d4 Nf6 c4 g6 Nc3 Bg7 Bf4")
+ ("E61c" "King's Indian: 4.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 Bg5")
+ ("E61d" "King's Indian: 4.Bg5 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 Bg5 O-O")
+ ("E61e" "King's Indian: 4.Bg5 O-O 5.e3 d6" "d4 Nf6 c4 g6 Nc3 Bg7 Bg5 O-O e3 
d6")
+ ("E61f" "King's Indian: 4.g3" "d4 Nf6 c4 g6 Nc3 Bg7 g3")
+ ("E61f" "King's Indian: 4.g3 d6" "d4 Nf6 c4 g6 Nc3 Bg7 g3 d6")
+ ("E61f" "King's Indian: 4.g3 d6 5.Bg2" "d4 Nf6 c4 g6 Nc3 Bg7 g3 d6 Bg2")
+ ("E61g" "King's Indian: 4.g3 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 g3 O-O")
+ ("E61g" "King's Indian: 4.g3 O-O 5.Bg2" "d4 Nf6 c4 g6 Nc3 Bg7 g3 O-O Bg2")
+ ("E61g" "King's Indian: 4.g3 O-O 5.Bg2 d6" "d4 Nf6 c4 g6 Nc3 Bg7 g3 O-O Bg2 
d6")
+ ("E61h" "King's Indian: Fianchetto, Flohr Variation" "d4 Nf6 c4 g6 Nc3 Bg7 g3 
O-O Bg2 d6 e3")
+ ("E61i" "King's Indian: 4.Nf3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3")
+ ("E61i" "King's Indian: 4.Nf3 d6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6")
+ ("E61i" "King's Indian: 4.Nf3 d6 5.e3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 e3")
+ ("E61j" "King's Indian: Smyslov System" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 Bg5")
+ ("E61j" "King's Indian: Smyslov System" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 Bg5 h6")
+ ("E61k" "King's Indian: 4.Nf3 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O")
+ ("E61l" "King's Indian: 4.Nf3 O-O 5.g3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O g3")
+ ("E61m" "King's Indian: 4.Nf3 O-O 5.e3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O e3")
+ ("E61m" "King's Indian: 4.Nf3 O-O 5.e3 d6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O e3 
d6")
+ ("E61n" "King's Indian: 4.Nf3 O-O 5.e3 d6 6.Be2" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
O-O e3 d6 Be2")
+ ("E61o" "King's Indian: 4.Nf3 O-O 5.e3 d6 6.Be2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
O-O e3 d6 Be2 c5")
+ ("E61o" "King's Indian: 4.Nf3 O-O 5.e3 d6 6.Be2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
O-O e3 d6 Be2 c5 O-O")
+ ("E61p" "King's Indian: 4.Nf3 O-O 5.Bf4" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O Bf4")
+ ("E61q" "King's Indian: 4.Nf3 O-O 5.Bf4 d6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O Bf4 
d6")
+ ("E61q" "King's Indian: 4.Nf3 d6 5.Bf4 d6 6.h3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O 
Bf4 d6 h3")
+ ("E61r" "King's Indian: 4.Nf3 d6 5.Bf4 d6 6.e3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O 
Bf4 d6 e3")
+ ("E61s" "King's Indian: Smyslov System" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O Bg5")
+ ("E61t" "King's Indian: Smyslov System, 5...c5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O 
Bg5 c5")
+ ("E61t" "King's Indian: Smyslov System, 5...c5 6.e3" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 O-O Bg5 c5 e3")
+ ("E61u" "King's Indian: Smyslov System, 5...d6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O 
Bg5 d6")
+ ("E61v" "King's Indian: Smyslov System, 6.e3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 O-O 
Bg5 d6 e3")
+ ("E61w" "King's Indian: Smyslov System, 6.e3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
O-O Bg5 d6 e3 c6")
+ ("E61x" "King's Indian: Smyslov System, 6.e3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
O-O Bg5 d6 e3 c5")
+ ("E61y" "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 O-O Bg5 d6 e3 Nbd7")
+ ("E61y" "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7 7.Be2" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 O-O Bg5 d6 e3 Nbd7 Be2")
+ ("E61z" "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7 7.Be2 c6" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 O-O Bg5 d6 e3 Nbd7 Be2 c6")
+ ("E61z" "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7 7.Be2 c6 8.O-O" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 O-O Bg5 d6 e3 Nbd7 Be2 c6 O-O")
+ ("E62a" "King's Indian: Fianchetto Variation" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3")
+ ("E62a" "King's Indian: Fianchetto Variation" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 
O-O")
+ ("E62b" "King's Indian: Fianchetto Variation" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 
O-O Bg2")
+ ("E62c" "King's Indian: Fianchetto, 6...c6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 
O-O Bg2 c6")
+ ("E62d" "King's Indian: Fianchetto, 6...c6 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c6 O-O")
+ ("E62e" "King's Indian: Fianchetto, 6...c6 7.O-O a6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c6 O-O a6")
+ ("E62f" "King's Indian: Fianchetto, Larsen System" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c6 O-O Bf5")
+ ("E62g" "King's Indian: Fianchetto, Larsen System, 8.b3" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c6 O-O Bf5 b3")
+ ("E62h" "King's Indian: Fianchetto, Kavalek/Bronstein Variation" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c6 O-O Qa5")
+ ("E62i" "King's Indian: Fianchetto, Kavalek/Bronstein, 8.h3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c6 O-O Qa5 h3")
+ ("E62j" "King's Indian: Fianchetto, Kavalek/Bronstein, 8.e4" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c6 O-O Qa5 e4")
+ ("E62k" "King's Indian: Fianchetto, Kavalek/Bronstein, 8.e4 Bg4" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c6 O-O Qa5 e4 Bg4")
+ ("E62l" "King's Indian: Fianchetto, 6...Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 
O-O Bg2 Nc6")
+ ("E62m" "King's Indian: Fianchetto, 6...Nc6 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 Nc6 d5")
+ ("E62n" "King's Indian: Fianchetto, 6...Nc6 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 Nc6 O-O")
+ ("E62o" "King's Indian: Fianchetto, 6...Nc6 7.O-O Rb8" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O Rb8")
+ ("E62p" "King's Indian: Fianchetto, Spassky Variation" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O Bf5")
+ ("E62q" "King's Indian: Fianchetto, Spassky, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 Nc6 O-O Bf5 d5")
+ ("E62r" "King's Indian: Fianchetto, Simagin Variation" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O Bg4")
+ ("E62s" "King's Indian: Fianchetto, Simagin, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 Nc6 O-O Bg4 d5")
+ ("E62t" "King's Indian: Fianchetto, Uhlmann/Szabo Variation" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O e5")
+ ("E62u" "King's Indian: Fianchetto, Uhlmann/Szabo Variation" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O e5 d5 Ne7")
+ ("E62v" "King's Indian: Fianchetto, Uhlmann/Szabo, 9.e4" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O e5 d5 Ne7 e4")
+ ("E63a" "King's Indian: Fianchetto, Panno Variation" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O a6")
+ ("E63b" "King's Indian: Fianchetto, Panno, 8.Re1" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 Nc6 O-O a6 Re1")
+ ("E63c" "King's Indian: Fianchetto, Panno, 8.e4" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3 O-O Bg2 Nc6 O-O a6 e4")
+ ("E63d" "King's Indian: Fianchetto, Panno, 8.b3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3 O-O Bg2 Nc6 O-O a6 b3")
+ ("E63e" "King's Indian: Fianchetto, Panno, 8.b3 Rb8" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 b3 Rb8")
+ ("E63f" "King's Indian: Fianchetto, Panno, 8.b3 Rb8 9.Bb2" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 b3 Rb8 Bb2")
+ ("E63g" "King's Indian: Fianchetto, Panno, 8.b3 Rb8 9.Nd5" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 b3 Rb8 Nd5")
+ ("E63h" "King's Indian: Fianchetto, Panno, 8.h3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3 O-O Bg2 Nc6 O-O a6 h3")
+ ("E63i" "King's Indian: Fianchetto, Panno, 8.h3 Rb8" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 h3 Rb8")
+ ("E63j" "King's Indian: Fianchetto, Panno, 8.h3 Rb8 9.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 h3 Rb8 Be3")
+ ("E63k" "King's Indian: Fianchetto, Panno, 8.h3 Rb8 9.e4" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 h3 Rb8 e4")
+ ("E63l" "King's Indian: Fianchetto, Panno, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3 O-O Bg2 Nc6 O-O a6 d5")
+ ("E63m" "King's Indian: Fianchetto, Panno, 8.d5 Na5" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nc6 O-O a6 d5 Na5")
+ ("E64a" "King's Indian: Fianchetto, Yugoslav System" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c5")
+ ("E64b" "King's Indian: Fianchetto, Yugoslav, Early Exchange" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 dxc5")
+ ("E64c" "King's Indian: Fianchetto, Yugoslav, 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c5 d5")
+ ("E64d" "King's Indian: Fianchetto, Yugoslav, 7.d5 e6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c5 d5 e6")
+ ("E64e" "King's Indian: Fianchetto, Yugoslav, 7.d5 Na6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c5 d5 Na6")
+ ("E65a" "King's Indian: Fianchetto, Yugoslav, 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c5 O-O")
+ ("E65b" "King's Indian: Fianchetto, Yugoslav, 7.O-O cxd4" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O cxd4")
+ ("E65c" "King's Indian: Fianchetto, Yugoslav, 7.O-O Nbd7" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nbd7")
+ ("E65d" "King's Indian: Fianchetto, Yugoslav, 7.O-O Nc6" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6")
+ ("E65e" "King's Indian: Fianchetto, Yugoslav, 7.O-O Nc6 8.h3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 h3")
+ ("E65f" "King's Indian: Fianchetto, Yugoslav, Exchange" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 dxc5")
+ ("E65g" "King's Indian: Fianchetto, Yugoslav, Exchange, 9.Be3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 dxc5 dxc5 Be3")
+ ("E65h" "King's Indian: Fianchetto, Yugoslav, Exchange, 9.Bf4" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 dxc5 dxc5 Bf4")
+ ("E66a" "King's Indian: Fianchetto, Yugoslav Panno" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c5 O-O Nc6 d5")
+ ("E66b" "King's Indian: Fianchetto, Yugoslav Panno" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2")
+ ("E66c" "King's Indian: Fianchetto, Yugoslav Panno" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 
d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5")
+ ("E66d" "King's Indian: Fianchetto, Yugoslav Panno, 9...e5" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 e5")
+ ("E66e" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6")
+ ("E66f" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Rb1" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Rb1")
+ ("E66g" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Rb1 Rb8" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Rb1 Rb8")
+ ("E66h" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2")
+ ("E66i" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2 Rb8" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8")
+ ("E66j" "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2 Rb8 11.b3" 
"d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8 b3")
+ ("E66k" "King's Indian: Fianchetto, Yugoslav Panno, Main Line" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8 b3 b5")
+ ("E66l" "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8 b3 b5 Bb2")
+ ("E66m" "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2 e5" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8 b3 b5 Bb2 
e5")
+ ("E66n" "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2 bxc4" 
"d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 c5 O-O Nc6 d5 Na5 Nd2 a6 Qc2 Rb8 b3 b5 
Bb2 bxc4")
+ ("E67a" "King's Indian: Fianchetto with 6...Nd7" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 
g3 O-O Bg2 Nbd7")
+ ("E67b" "King's Indian: Fianchetto with 6...Nd7 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O")
+ ("E67c" "King's Indian: Fianchetto with 6...Nd7 7.O-O c6" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O c6")
+ ("E67d" "King's Indian: Fianchetto, Classical Variation" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5")
+ ("E67e" "King's Indian: Fianchetto, Classical, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 d5")
+ ("E67f" "King's Indian: Fianchetto, Classical, 8.dxe5" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 dxe5")
+ ("E67g" "King's Indian: Fianchetto, Classical, 8.b3" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 b3")
+ ("E67h" "King's Indian: Fianchetto, Classical, 8.Qc2" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 Qc2")
+ ("E67i" "King's Indian: Fianchetto, Classical, 8.Qc2 c6" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 Qc2 c6")
+ ("E67j" "King's Indian: Fianchetto, Classical, 8.h3" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 h3")
+ ("E67k" "King's Indian: Fianchetto, Classical, 8.h3 Re8" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 h3 Re8")
+ ("E67l" "King's Indian: Fianchetto, Classical, 8.h3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 h3 c6")
+ ("E68a" "King's Indian: Fianchetto, Classical, 8.e4" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4")
+ ("E68b" "King's Indian: Fianchetto, Classical, 8.e4 Re8" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 Re8")
+ ("E68c" "King's Indian: Fianchetto, Classical, 8.e4 exd4" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4")
+ ("E68d" "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Nc5" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4 Nxd4 Nc5")
+ ("E68e" "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4 Nxd4 Re8")
+ ("E68f" "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3" 
"d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4 Nxd4 Re8 h3")
+ ("E68g" "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3 
Nc5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4 Nxd4 Re8 h3 
Nc5")
+ ("E68h" "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3 Nc5 
11.Re1 a5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 exd4 Nxd4 Re8 
h3 Nc5 Re1 a5")
+ ("E68i" "King's Indian: Fianchetto, Classical, 8.e4 a6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 a6")
+ ("E68j" "King's Indian: Fianchetto, Classical, 8.e4 c6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6")
+ ("E68k" "King's Indian: Fianchetto, Classical, 8.e4 c6 9.Rb1" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 Rb1")
+ ("E68l" "King's Indian: Fianchetto, Classical, 8.e4 c6 9.b3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 b3")
+ ("E69a" "King's Indian: Fianchetto, Classical, 9.h3" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3")
+ ("E69b" "King's Indian: Fianchetto, Classical, 9.h3 Qe7" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qe7")
+ ("E69c" "King's Indian: Fianchetto, Classical, 9.h3 a6" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 a6")
+ ("E69d" "King's Indian: Fianchetto, Classical, 9.h3 a5" "d4 Nf6 c4 g6 Nc3 Bg7 
Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 a5")
+ ("E69e" "King's Indian: Fianchetto, Classical, 9.h3 exd4" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 exd4")
+ ("E69f" "King's Indian: Fianchetto, Classical, 9.h3 exd4 10.Nxd4 Re8" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 exd4 Nxd4 Re8")
+ ("E69g" "King's Indian: Fianchetto, Classical, 9.h3 Qa5" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qa5")
+ ("E69h" "King's Indian: Fianchetto, Classical, 9.h3 Qa5 10.Re1" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qa5 Re1")
+ ("E69h" "King's Indian: Fianchetto, Classical, 9.h3 Qa5 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qa5 Re1 exd4")
+ ("E69h" "King's Indian: Fianchetto, Classical, 9.h3 Qa5 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qa5 Re1 exd4 Nxd4")
+ ("E69i" "King's Indian: Fianchetto, Classical, 9.h3 Qb6" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6")
+ ("E69i" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.d5" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 d5")
+ ("E69j" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.c5" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 c5")
+ ("E69k" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 Re1")
+ ("E69l" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 Re8" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 Re1 Re8")
+ ("E69m" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 Re1 exd4")
+ ("E69m" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 Re1 exd4 Nxd4")
+ ("E69n" "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 exd4 11.Nxd4 
Re8" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Qb6 Re1 exd4 
Nxd4 Re8")
+ ("E69o" "King's Indian: Fianchetto, Classical, 9.h3 Re8" "d4 Nf6 c4 g6 Nc3 
Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8")
+ ("E69p" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.b3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 b3")
+ ("E69q" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Be3" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Be3")
+ ("E69r" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Be3 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Be3 exd4")
+ ("E69r" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Be3 exd4 11.Nxd4" 
"d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Be3 exd4 Nxd4")
+ ("E69s" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1" "d4 Nf6 c4 g6 
Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1")
+ ("E69t" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 Qc7" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 Qc7")
+ ("E69u" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 a5" "d4 Nf6 c4 
g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 a5")
+ ("E69u" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 a5 11.Be3" "d4 
Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 a5 Be3")
+ ("E69v" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 exd4")
+ ("E69v" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4" "d4 Nf6 
c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 exd4 Nxd4")
+ ("E69w" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...a5" 
"d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 exd4 Nxd4 
a5")
+ ("E69x" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 
11...Nc5" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 
exd4 Nxd4 Nc5")
+ ("E69y" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...Nc5 
12.Rb1" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 
exd4 Nxd4 Nc5 Rb1")
+ ("E69z" "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...Nc5 
12.b3" "d4 Nf6 c4 g6 Nc3 Bg7 Nf3 d6 g3 O-O Bg2 Nbd7 O-O e5 e4 c6 h3 Re8 Re1 
exd4 Nxd4 Nc5 b3")
+ ("E70a" "King's Indian: 4.e4" "d4 Nf6 c4 g6 Nc3 Bg7 e4")
+ ("E70b" "King's Indian: 4.e4 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 O-O")
+ ("E70c" "King's Indian: 4.e4 O-O 5.e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 O-O e5")
+ ("E70d" "King's Indian: 4.e4 O-O 5.Nf3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 O-O Nf3")
+ ("E70e" "King's Indian: 4.e4 d6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6")
+ ("E70f" "King's Indian: Kramer" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nge2")
+ ("E70g" "King's Indian: Kramer, 5...O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nge2 
O-O")
+ ("E70h" "King's Indian: Kramer, 5...O-O 6.Ng3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nge2 O-O Ng3")
+ ("E70i" "King's Indian: Kramer, 5...O-O 6.Ng3 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nge2 O-O Ng3 e5")
+ ("E70i" "King's Indian: Kramer, 5...O-O 6.Ng3 e5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nge2 O-O Ng3 e5 d5")
+ ("E70j" "King's Indian: 4.e4 d6 5.Bd3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Bd3")
+ ("E70k" "King's Indian: 4.e4 d6 5.Bd3 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Bd3 e5")
+ ("E70l" "King's Indian: 4.e4 d6 5.Bd3 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Bd3 
O-O")
+ ("E70m" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Bd3 O-O Nge2")
+ ("E70n" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Bd3 O-O Nge2 Nc6")
+ ("E70n" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 Nc6 7.O-O" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Bd3 O-O Nge2 Nc6 O-O")
+ ("E70n" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 Nc6 7.O-O e5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Bd3 O-O Nge2 Nc6 O-O e5")
+ ("E70o" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Bd3 O-O Nge2 c5")
+ ("E70p" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Bd3 O-O Nge2 c5 d5")
+ ("E70p" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5 7.d5 e6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Bd3 O-O Nge2 c5 d5 e6")
+ ("E70p" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5 7.d5 e6 8.O-O" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Bd3 O-O Nge2 c5 d5 e6 O-O")
+ ("E70q" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Bd3 O-O Nge2 e5")
+ ("E70r" "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 e5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Bd3 O-O Nge2 e5 d5")
+ ("E70s" "King's Indian: Accelerated Averbakh System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Bg5")
+ ("E70t" "King's Indian: Accelerated Averbakh, 5...h6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Bg5 h6")
+ ("E70u" "King's Indian: Accelerated Averbakh, 5...O-O" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Bg5 O-O")
+ ("E70v" "King's Indian: Accelerated Averbakh, 5...O-O 6.Qd2" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Bg5 O-O Qd2")
+ ("E71a" "King's Indian: Makagonov System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 h3")
+ ("E71b" "King's Indian: Makagonov, 5...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 h3 c5")
+ ("E71c" "King's Indian: Makagonov, 5...Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 h3 
Nbd7")
+ ("E71d" "King's Indian: Makagonov, 5...O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 h3 
O-O")
+ ("E71e" "King's Indian: Makagonov, 5...O-O 6.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
h3 O-O Be3")
+ ("E71f" "King's Indian: Makagonov, 5...O-O 6.Be3 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 h3 O-O Be3 e5")
+ ("E71g" "King's Indian: Makagonov, 5...O-O 6.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
h3 O-O Bg5")
+ ("E71h" "King's Indian: Makagonov, 5...O-O 6.Bg5 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 h3 O-O Bg5 c6")
+ ("E71i" "King's Indian: Makagonov, 5...O-O 6.Bg5 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 h3 O-O Bg5 h6")
+ ("E71j" "King's Indian: Makagonov, 5...O-O 6.Bg5 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 h3 O-O Bg5 Nbd7")
+ ("E71k" "King's Indian: Makagonov, 5...O-O 6.Bg5 Na6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 h3 O-O Bg5 Na6")
+ ("E71l" "King's Indian: Makagonov, 5...O-O 6.Bg5 Na6 7.Bd3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 h3 O-O Bg5 Na6 Bd3")
+ ("E71l" "King's Indian: Makagonov, 5...O-O 6.Bg5 Na6 7.Bd3 e5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 h3 O-O Bg5 Na6 Bd3 e5")
+ ("E71m" "King's Indian: Makagonov, 5...O-O 6.Bg5 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 h3 O-O Bg5 c5")
+ ("E71m" "King's Indian: Makagonov, 5...O-O 6.Bg5 c5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 h3 O-O Bg5 c5 d5")
+ ("E71n" "King's Indian: Makagonov, 5...O-O 6.Bg5 c5 7.d5 b5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 h3 O-O Bg5 c5 d5 b5")
+ ("E71o" "King's Indian: Makagonov, 5...O-O 6.Bg5 c5 7.d5 e6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 h3 O-O Bg5 c5 d5 e6")
+ ("E72" "King's Indian: 4.e4 d6 5.g3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3 O-O")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O 6.Bg2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3 
O-O Bg2")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O 6.Bg2 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 g3 O-O Bg2 Nbd7")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O 6.Bg2 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 g3 O-O Bg2 Nc6")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O 6.Bg2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
g3 O-O Bg2 c5")
+ ("E72" "King's Indian: 4.e4 d6 5.g3 O-O 6.Bg2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
g3 O-O Bg2 e5")
+ ("E72" "King's Indian: Pomar System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3 O-O Bg2 
e5 Nge2")
+ ("E72" "King's Indian: Pomar System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 g3 O-O Bg2 
e5 Nge2 Nc6")
+ ("E73a" "King's Indian: 5.Be2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2")
+ ("E73b" "King's Indian: 5.Be2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 c5")
+ ("E73c" "King's Indian: 5.Be2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 e5")
+ ("E73d" "King's Indian: 5.Be2 e5 6.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 e5 d5")
+ ("E73e" "King's Indian: 5.Be2 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 Nbd7")
+ ("E73f" "King's Indian: 5.Be2 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O")
+ ("E73g" "King's Indian: 5.Be2 O-O 6.g4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O 
g4")
+ ("E73h" "King's Indian: Semi-Averbakh System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 
O-O Be3")
+ ("E73i" "King's Indian: Averbakh" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5")
+ ("E73j" "King's Indian: Averbakh, 6...c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O 
Bg5 c6")
+ ("E73k" "King's Indian: Averbakh, 6...c6 7.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c6 Qd2")
+ ("E73l" "King's Indian: Averbakh, 6...c6 7.Qd2 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 c6 Qd2 Nbd7")
+ ("E73m" "King's Indian: Averbakh, 6...Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 
O-O Bg5 Nbd7")
+ ("E73n" "King's Indian: Averbakh, 6...Nbd7 7.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 Nbd7 Qd2")
+ ("E73o" "King's Indian: Averbakh, 6...Nbd7 7.Qd2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 Nbd7 Qd2 e5")
+ ("E73o" "King's Indian: Averbakh, 6...Nbd7 7.Qd2 e5 8.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 Nbd7 Qd2 e5 d5")
+ ("E73o" "King's Indian: Averbakh, 6...Nbd7 7.Qd2 e5 8.d5 Nc5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 Nbd7 Qd2 e5 d5 Nc5")
+ ("E73p" "King's Indian: Averbakh, 6...Na6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 
O-O Bg5 Na6")
+ ("E73q" "King's Indian: Averbakh, 6...Na6 7.h4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 Na6 h4")
+ ("E73r" "King's Indian: Averbakh, 6...Na6 7.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 Na6 Qd2")
+ ("E73s" "King's Indian: Averbakh, 6...Na6 7.Qd2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 Na6 Qd2 e5")
+ ("E73s" "King's Indian: Averbakh, 6...Na6 7.Qd2 e5 8.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 Na6 Qd2 e5 d5")
+ ("E73t" "King's Indian: Averbakh, 6...Na6 7.Qd2 e5 8.d5 c6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 Na6 Qd2 e5 d5 c6")
+ ("E73u" "King's Indian: Averbakh, 6...Na6 7.Qd2 e5 8.d5 Qe8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 Na6 Qd2 e5 d5 Qe8")
+ ("E73v" "King's Indian: Averbakh, 6...h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O 
Bg5 h6")
+ ("E73w" "King's Indian: Averbakh, 6...h6 7.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 h6 Be3")
+ ("E73x" "King's Indian: Averbakh, 6...h6 7.Be3 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 h6 Be3 c5")
+ ("E73y" "King's Indian: Averbakh, 6...h6 7.Be3 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 h6 Be3 e5")
+ ("E73y" "King's Indian: Averbakh, 6...h6 7.Be3 e5 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 h6 Be3 e5 d5")
+ ("E73y" "King's Indian: Averbakh, 6...h6 7.Be3 e5 8.d5 c6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 h6 Be3 e5 d5 c6")
+ ("E73z" "King's Indian: Averbakh, 6...h6 7.Be3 e5 8.d5 Nbd7" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 h6 Be3 e5 d5 Nbd7")
+ ("E74a" "King's Indian: Averbakh, 6...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O 
Bg5 c5")
+ ("E74b" "King's Indian: Averbakh, 6...c5 7.dxc5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 dxc5")
+ ("E74b" "King's Indian: Averbakh, 6...c5 7.dxc5 Qa5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 c5 dxc5 Qa5")
+ ("E74c" "King's Indian: Averbakh, 6...c5 7.dxc5 Qa5 8.Bd2 Qxc5 9.Nf3 Bg4" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 dxc5 Qa5 Bd2 Qxc5 Nf3 Bg4")
+ ("E74d" "King's Indian: Averbakh, 6...c5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5")
+ ("E74e" "King's Indian: Averbakh, 6...c5 7.d5 Qa5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 c5 d5 Qa5")
+ ("E74f" "King's Indian: Averbakh, 6...c5 7.d5 b5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5 b5")
+ ("E74f" "King's Indian: Averbakh, 6...c5 7.d5 b5 8.cxb5 a6 9.a4" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 b5 cxb5 a6 a4")
+ ("E74g" "King's Indian: Averbakh, 6...c5 7.d5 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5 a6")
+ ("E74g" "King's Indian: Averbakh, 6...c5 7.d5 a6 8.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 a6 Qd2")
+ ("E74h" "King's Indian: Averbakh, 6...c5 7.d5 a6 8.a4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 a6 a4")
+ ("E74i" "King's Indian: Averbakh, 6...c5 7.d5 a6 8.a4 Qa5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 a6 a4 Qa5")
+ ("E74j" "King's Indian: Averbakh, 6...c5 7.d5 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5 h6")
+ ("E74j" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Bh4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 h6 Bh4")
+ ("E74k" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 h6 Be3")
+ ("E74l" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3 e6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 h6 Be3 e6")
+ ("E74m" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3 e6 9.Qd2" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 h6 Be3 e6 Qd2")
+ ("E74n" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Bf4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 h6 Bf4")
+ ("E74o" "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Bf4 e6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 h6 Bf4 e6")
+ ("E75a" "King's Indian: Averbakh, 7.d5 e6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 
O-O Bg5 c5 d5 e6")
+ ("E75b" "King's Indian: Averbakh, 7.d5 e6 8.Nf3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5 e6 Nf3")
+ ("E75b" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 exd5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 exd5")
+ ("E75b" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 exd5 9.exd5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 exd5 exd5")
+ ("E75c" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6")
+ ("E75c" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6 Bd2")
+ ("E75c" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6 Be3")
+ ("E75c" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bf4" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6 Bf4")
+ ("E75d" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bh4" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6 Bh4")
+ ("E75e" "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bh4 exd5 10.cxd5" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Nf3 h6 Bh4 exd5 cxd5")
+ ("E75f" "King's Indian: Averbakh, 7.d5 e6 8.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Be2 O-O Bg5 c5 d5 e6 Qd2")
+ ("E75g" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5")
+ ("E75g" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5 exd5")
+ ("E75h" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 a6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5 exd5 a6")
+ ("E75i" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 Re8" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5 exd5 Re8")
+ ("E75i" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 Re8 10.Nf3" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5 exd5 Re8 Nf3")
+ ("E75j" "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 Re8 10.Nf3 Bg4" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Be2 O-O Bg5 c5 d5 e6 Qd2 exd5 exd5 Re8 Nf3 Bg4")
+ ("E76a" "King's Indian: Four Pawns Attack" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f4")
+ ("E76b" "King's Indian: Four Pawns Attack, 5...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 c5")
+ ("E76b" "King's Indian: Four Pawns Attack, Exchange" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 c5 dxc5")
+ ("E76c" "King's Indian: Four Pawns Attack, 5...c5 6.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f4 c5 d5")
+ ("E76d" "King's Indian: Four Pawns Attack, 5...O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 O-O")
+ ("E76e" "King's Indian: Four Pawns Attack, 5...O-O 6.Nf3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3")
+ ("E76e" "King's Indian: Four Pawns Attack, 6.Nf3 Bg4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f4 O-O Nf3 Bg4")
+ ("E76f" "King's Indian: Four Pawns Attack, 6.Nf3 Na6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f4 O-O Nf3 Na6")
+ ("E76g" "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.e5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3 Na6 e5")
+ ("E76h" "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Be2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3 Na6 Be2")
+ ("E76i" "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Bd3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3 Na6 Bd3")
+ ("E76j" "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Bd3 e5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Nf3 Na6 Bd3 e5")
+ ("E76k" "King's Indian: Four Pawns Attack, 6.Nf3 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 O-O Nf3 c5")
+ ("E76l" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.dxc5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3 c5 dxc5")
+ ("E76m" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.dxc5 Qa5 8.Bd3 Qxc5 
9.Qe2 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 dxc5 Qa5 Bd3 Qxc5 Qe2 Nc6")
+ ("E76n" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Nf3 c5 d5")
+ ("E76o" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 a6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 d5 a6")
+ ("E76p" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 b5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 d5 b5")
+ ("E76q" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 b5 8.cxb5 a6 9.a4" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 d5 b5 cxb5 a6 a4")
+ ("E76r" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 e6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 d5 e6")
+ ("E76r" "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 e6 8.dxe6" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f4 O-O Nf3 c5 d5 e6 dxe6")
+ ("E77" "King's Indian: Four Pawns Attack, 6.Be2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f4 O-O Be2")
+ ("E77" "King's Indian: Four Pawns Attack, 6.Be2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 O-O Be2 c5")
+ ("E77" "King's Indian: Four Pawns Attack, 6.Be2 c5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Be2 c5 d5")
+ ("E77" "King's Indian: Four Pawns Attack, Six Pawns line" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f4 O-O Be2 c5 d5 e6 dxe6 fxe6 g4 Nc6 h4")
+ ("E77" "King's Indian: Four Pawns Attack, 6.Be2 c5 7.d5 e6 8.Nf3" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f4 O-O Be2 c5 d5 e6 Nf3")
+ ("E77" "King's Indian: Four Pawns Attack, 6.Be2 c5 7.d5 e6 8.Nf3 exd5 9.exd5" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f4 O-O Be2 c5 d5 e6 Nf3 exd5 exd5")
+ ("E77" "King's Indian: Four Pawns Attack, Florentine Gambit" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Be2 c5 d5 e6 Nf3 exd5 e5")
+ ("E78" "King's Indian: Four Pawns Attack, 7.Nf3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f4 O-O Be2 c5 Nf3")
+ ("E78" "King's Indian: Four Pawns Attack, 7.Nf3 Bg4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 O-O Be2 c5 Nf3 Bg4")
+ ("E78" "King's Indian: Four Pawns Attack, 7.Nf3 cxd4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f4 O-O Be2 c5 Nf3 cxd4")
+ ("E78" "King's Indian: Four Pawns Attack, 7.Nf3 cxd4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f4 O-O Be2 c5 Nf3 cxd4 Nxd4")
+ ("E79" "King's Indian: Four Pawns Attack, Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f4 O-O Be2 c5 Nf3 cxd4 Nxd4 Nc6 Be3")
+ ("E79" "King's Indian: Four Pawns Attack, Main Line, 9...Nxd4" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Be2 c5 Nf3 cxd4 Nxd4 Nc6 Be3 Nxd4")
+ ("E79" "King's Indian: Four Pawns Attack, Main Line, 9...Bd7" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f4 O-O Be2 c5 Nf3 cxd4 Nxd4 Nc6 Be3 Bd7")
+ ("E79" "King's Indian: Four Pawns Attack, Main Line, 9...Bd7 10.Qd2" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f4 O-O Be2 c5 Nf3 cxd4 Nxd4 Nc6 Be3 Bd7 Qd2")
+ ("E80a" "King's Indian: Sämisch Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3")
+ ("E80b" "King's Indian: Sämisch, 5...Na6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 Na6")
+ ("E80c" "King's Indian: Sämisch, 5...Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 Nc6")
+ ("E80d" "King's Indian: Sämisch, 5...Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
Nbd7")
+ ("E80e" "King's Indian: Sämisch, 5...e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 e5")
+ ("E80f" "King's Indian: Sämisch, 5...e5 6.Nge2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 e5 Nge2")
+ ("E80g" "King's Indian: Sämisch, 5...e5 6.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
e5 d5")
+ ("E80h" "King's Indian: Sämisch, 5...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 c5")
+ ("E80i" "King's Indian: Sämisch, 5...c5 Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 c5 dxc5 dxc5 Qxd8+ Kxd8")
+ ("E80j" "King's Indian: Sämisch, 5...a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 a6")
+ ("E80k" "King's Indian: Sämisch, 5...a6 6.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
a6 Be3")
+ ("E80l" "King's Indian: Sämisch, 5...c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 c6")
+ ("E80m" "King's Indian: Sämisch, 5...c6 6.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
c6 Be3")
+ ("E80n" "King's Indian: Sämisch, 5...c6 6.Be3 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 c6 Be3 a6")
+ ("E80o" "King's Indian: Sämisch, 5...c6 6.Be3 a6 7.a4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 c6 Be3 a6 a4")
+ ("E80p" "King's Indian: Sämisch, 5...c6 6.Be3 a6 7.Bd3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 c6 Be3 a6 Bd3")
+ ("E81a" "King's Indian: Sämisch, 5...O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O")
+ ("E81b" "King's Indian: Sämisch, 5...O-O 6.Nge2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Nge2")
+ ("E81c" "King's Indian: Sämisch, 5...O-O 6.Nge2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Nge2 e5")
+ ("E81d" "King's Indian: Sämisch, 5...O-O 6.Nge2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Nge2 c5")
+ ("E81d" "King's Indian: Sämisch, 5...O-O 6.Nge2 c5 7.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Nge2 c5 d5")
+ ("E81e" "King's Indian: Sämisch, 5...O-O 6.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Bg5")
+ ("E81f" "King's Indian: Sämisch, 5...O-O 6.Bg5 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Bg5 Nc6")
+ ("E81g" "King's Indian: Sämisch, 5...O-O 6.Bg5 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Bg5 a6")
+ ("E81h" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Bg5 c5")
+ ("E81h" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Bg5 c5 d5")
+ ("E81h" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5 7.d5 a6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Bg5 c5 d5 a6")
+ ("E81h" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5 7.d5 h6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Bg5 c5 d5 h6")
+ ("E81i" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5 7.d5 e6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Bg5 c5 d5 e6")
+ ("E81i" "King's Indian: Sämisch, 5...O-O 6.Bg5 c5 7.d5 e6 8.Qd2" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Bg5 c5 d5 e6 Qd2")
+ ("E81j" "King's Indian: Sämisch, 5...O-O 6.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3")
+ ("E81k" "King's Indian: Sämisch, 5...O-O 6.Be3 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 a6")
+ ("E81k" "King's Indian: Sämisch, 5...O-O 6.Be3 a6 7.Qd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 a6 Qd2")
+ ("E81l" "King's Indian: Sämisch, 5...O-O 6.Be3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 c6")
+ ("E81l" "King's Indian: Sämisch, Byrne Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 c6 Bd3 a6")
+ ("E81m" "King's Indian: Sämisch, 5...O-O 6.Be3 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 c5")
+ ("E81m" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 c5 d5")
+ ("E81n" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 7.dxc5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 c5 dxc5")
+ ("E81n" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 Queenswap" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 c5 dxc5 dxc5 Qxd8+")
+ ("E81o" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 7.Nge2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 c5 Nge2")
+ ("E81o" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 7.Nge2 Nc6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 c5 Nge2 Nc6")
+ ("E81p" "King's Indian: Sämisch, 5...O-O 6.Be3 c5 7.Nge2 Nc6 8.d5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 c5 Nge2 Nc6 d5")
+ ("E81q" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 Nbd7")
+ ("E81r" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7 7.Qd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nbd7 Qd2")
+ ("E81s" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 Nbd7 Qd2 c5")
+ ("E81s" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5 8.d5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nbd7 Qd2 c5 d5")
+ ("E81t" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5 8.Nge2" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nbd7 Qd2 c5 Nge2")
+ ("E81t" "King's Indian: Sämisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5 8.Nge2 a6" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nbd7 Qd2 c5 Nge2 a6")
+ ("E82a" "King's Indian: Sämisch, Fianchetto" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
O-O Be3 b6")
+ ("E82b" "King's Indian: Sämisch, Fianchetto, 7.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 b6 Qd2")
+ ("E82c" "King's Indian: Sämisch, Fianchetto, 7.Qd2 c5 8.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 b6 Qd2 c5 d5")
+ ("E82d" "King's Indian: Sämisch, Fianchetto, Bronstein Variation" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3")
+ ("E82e" "King's Indian: Sämisch, Fianchetto, 7.Bd3 Nfd7" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 b6 Bd3 Nfd7")
+ ("E82f" "King's Indian: Sämisch, Fianchetto, 7.Bd3 Bb7" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 b6 Bd3 Bb7")
+ ("E82g" "King's Indian: Sämisch, Fianchetto, 7.Bd3 Bb7 8.Nge2" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 Bb7 Nge2")
+ ("E82g" "King's Indian: Sämisch, Fianchetto, 7.Bd3 Bb7 8.Nge2 c5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 Bb7 Nge2 c5")
+ ("E82g" "King's Indian: Sämisch, Fianchetto, 7.Bd3 Bb7 8.Nge2 c5 9.d5 e6" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 Bb7 Nge2 c5 d5 e6")
+ ("E82h" "King's Indian: Sämisch, Fianchetto, 7.Bd3 a6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 b6 Bd3 a6")
+ ("E82i" "King's Indian: Sämisch, Fianchetto, 7.Bd3 a6 8.Nge2" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 a6 Nge2")
+ ("E82i" "King's Indian: Sämisch, Fianchetto, 7.Bd3 a6 8.Nge2 c5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 a6 Nge2 c5")
+ ("E82j" "King's Indian: Sämisch, Fianchetto, 7.Bd3 a6 8.Nge2 c5 9.d5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 a6 Nge2 c5 d5")
+ ("E82k" "King's Indian: Sämisch, Fianchetto, 7.Bd3 a6 8.Nge2 c5 9.e5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 b6 Bd3 a6 Nge2 c5 e5")
+ ("E83a" "King's Indian: Sämisch, 6...Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O 
Be3 Nc6")
+ ("E83b" "King's Indian: Sämisch, 6...Nc6 7.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 Nc6 Qd2")
+ ("E83c" "King's Indian: Sämisch, 6...Nc6 7.Qd2 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 Nc6 Qd2 a6")
+ ("E83c" "King's Indian: Sämisch, 6...Nc6 7.Qd2 a6 8.O-O-O" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Qd2 a6 O-O-O")
+ ("E83d" "King's Indian: Sämisch, 6...Nc6 7.Nge2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 Nc6 Nge2")
+ ("E83e" "King's Indian: Sämisch, Ruban Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 Nc6 Nge2 Rb8")
+ ("E83e" "King's Indian: Sämisch, Ruban, 8.Qd2 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 Nc6 Nge2 Rb8 Qd2 Re8")
+ ("E83f" "King's Indian: Sämisch, Panno" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O 
Be3 Nc6 Nge2 a6")
+ ("E83g" "King's Indian: Sämisch, Panno, 8.a3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
O-O Be3 Nc6 Nge2 a6 a3")
+ ("E83h" "King's Indian: Sämisch, Panno, 8.Nc1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
O-O Be3 Nc6 Nge2 a6 Nc1")
+ ("E83i" "King's Indian: Sämisch, Panno, 8.Qd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 
O-O Be3 Nc6 Nge2 a6 Qd2")
+ ("E83j" "King's Indian: Sämisch, Panno, 8.Qd2 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Re8")
+ ("E84a" "King's Indian: Sämisch, Panno Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8")
+ ("E84b" "King's Indian: Sämisch, Panno Main Line, 9.a3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 a3")
+ ("E84c" "King's Indian: Sämisch, Panno Main Line, 9.O-O-O" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 O-O-O")
+ ("E84d" "King's Indian: Sämisch, Panno Main Line, 9.g4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 g4")
+ ("E84e" "King's Indian: Sämisch, Panno Main Line, 9.Rb1" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Rb1")
+ ("E84f" "King's Indian: Sämisch, Panno Main Line, 9.Bh6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Bh6")
+ ("E84g" "King's Indian: Sämisch, Panno Main Line, 9.Nc1" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Nc1")
+ ("E84g" "King's Indian: Sämisch, Panno Main Line, 9.Nc1 e5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Nc1 e5")
+ ("E84h" "King's Indian: Sämisch, Panno Main Line, 9.Nc1 e5 10.Nb3" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Nc1 e5 Nb3")
+ ("E84i" "King's Indian: Sämisch, Panno Main Line, 9.Nc1 e5 10.d5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Nc1 e5 d5")
+ ("E84j" "King's Indian: Sämisch, Panno Main Line, 9.Nc1 e5 10.d5 Nd4 11.Nb3" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 Nc1 e5 d5 Nd4 Nb3")
+ ("E84k" "King's Indian: Sämisch, Panno Main Line, 9.h4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 h4")
+ ("E84l" "King's Indian: Sämisch, Panno Main Line, 9.h4 b5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 h4 b5")
+ ("E84m" "King's Indian: Sämisch, Panno Main Line, 9.h4 h5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 h4 h5")
+ ("E84n" "King's Indian: Sämisch, Panno Main Line, 9.h4 h5 10.O-O-O" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 h4 h5 O-O-O")
+ ("E84o" "King's Indian: Sämisch, Panno Main Line, 9.h4 h5 10.O-O-O b5 11.Bh6" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 Nc6 Nge2 a6 Qd2 Rb8 h4 h5 O-O-O b5 Bh6")
+ ("E85a" "King's Indian: Sämisch, Orthodox Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5")
+ ("E85b" "King's Indian: Sämisch, Orthodox, 7.dxe5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 dxe5")
+ ("E85c" "King's Indian: Sämisch, Orthodox, Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 dxe5 dxe5 Qxd8")
+ ("E85d" "King's Indian: Sämisch, Orthodox, 7.Nge2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 Nge2")
+ ("E85e" "King's Indian: Sämisch, Orthodox, 7.Nge2 exd4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 Nge2 exd4")
+ ("E85f" "King's Indian: Sämisch, Orthodox, 7.Nge2 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 Nge2 Nbd7")
+ ("E85g" "King's Indian: Sämisch, Orthodox, 7.Nge2 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 Nge2 Nc6")
+ ("E85h" "King's Indian: Sämisch, Orthodox, 7.Nge2 Nc6 8.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 Nge2 Nc6 d5")
+ ("E86a" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 Nge2 c6")
+ ("E86b" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.d5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 d5")
+ ("E86c" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qb3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qb3")
+ ("E86d" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2")
+ ("E86e" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2 Nbd7")
+ ("E86f" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.d5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2 Nbd7 d5")
+ ("E86g" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2 Nbd7 O-O-O")
+ ("E86h" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O a6" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2 Nbd7 O-O-O a6")
+ ("E86i" "King's Indian: Sämisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O a6 
10.Kb1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 Nge2 c6 Qd2 Nbd7 O-O-O a6 
Kb1")
+ ("E87a" "King's Indian: Sämisch, Orthodox, 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
f3 O-O Be3 e5 d5")
+ ("E87b" "King's Indian: Sämisch, Orthodox, 7.d5 a5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 d5 a5")
+ ("E87c" "King's Indian: Sämisch, Orthodox, 7.d5 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 d5 c5")
+ ("E87d" "King's Indian: Sämisch, Orthodox, 7.d5 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 f3 O-O Be3 e5 d5 Nbd7")
+ ("E87e" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 d5 Nh5")
+ ("E87f" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5 8.Qd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2")
+ ("E87g" "King's Indian: Sämisch, Orthodox, Bronstein Variation" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 Qh4+")
+ ("E87h" "King's Indian: Sämisch, Orthodox, Bronstein, 9.g3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 Qh4+ g3")
+ ("E87i" "King's Indian: Sämisch, Orthodox, Bronstein, 9.Bf2" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 Qh4+ Bf2")
+ ("E87j" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5 8.Qd2 f5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 f5")
+ ("E87k" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 f5 O-O-O")
+ ("E87l" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O f4" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 f5 O-O-O f4")
+ ("E87m" "King's Indian: Sämisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O Nd7" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 Nh5 Qd2 f5 O-O-O Nd7")
+ ("E88a" "King's Indian: Sämisch, Orthodox, 7.d5 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 d5 c6")
+ ("E88b" "King's Indian: Sämisch, Orthodox, 7.d5 c6 8.Qd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Qd2")
+ ("E88c" "King's Indian: Sämisch, Orthodox, 7.d5 c6 8.Qd2 cxd5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Qd2 cxd5")
+ ("E88d" "King's Indian: Sämisch, Orthodox, 7.d5 c6 8.Qd2 cxd5 9.cxd5 a6" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Qd2 cxd5 cxd5 a6")
+ ("E88e" "King's Indian: Sämisch, Orthodox, 7.d5 c6 8.Qd2 cxd5 9.cxd5 a6 
10.Bd3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Qd2 cxd5 cxd5 a6 Bd3")
+ ("E88f" "King's Indian: Sämisch, Orthodox, Polugayevsky" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Bd3")
+ ("E88g" "King's Indian: Sämisch, Orthodox, Polugayevsky, 8...b5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Bd3 b5")
+ ("E88h" "King's Indian: Sämisch, Orthodox, Polugayevsky, 8...cxd5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Bd3 cxd5")
+ ("E88i" "King's Indian: Sämisch, Orthodox, Polugayevsky, 8...cxd5 9.cxd5 Nh5" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Bd3 cxd5 cxd5 Nh5")
+ ("E89a" "King's Indian: Sämisch, Orthodox Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5")
+ ("E89b" "King's Indian: Sämisch, Orthodox Main Line, 9...a6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 a6")
+ ("E89c" "King's Indian: Sämisch, Orthodox Main Line, 9...Bd7" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Bd7")
+ ("E89d" "King's Indian: Sämisch, Orthodox Main Line, 9...Nbd7" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Nbd7")
+ ("E89e" "King's Indian: Sämisch, Orthodox Main Line, 10.Qd2" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Nbd7 Qd2")
+ ("E89f" "King's Indian: Sämisch, Orthodox Main Line, 10.Qd2 a6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Nbd7 Qd2 a6")
+ ("E89g" "King's Indian: Sämisch, Orthodox Main Line, 10.Qd2 a6 11.g4" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Nbd7 Qd2 a6 g4")
+ ("E89h" "King's Indian: Sämisch, Orthodox Main Line, 10.Qd2 a6 11.g4 h5" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 f3 O-O Be3 e5 d5 c6 Nge2 cxd5 cxd5 Nbd7 Qd2 a6 g4 h5")
+ ("E90a" "King's Indian: 5.Nf3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3")
+ ("E90a" "King's Indian: 5.Nf3 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 Nbd7")
+ ("E90a" "King's Indian: 5.Nf3 Nbd7 6.Be2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
Nbd7 Be2")
+ ("E90a" "King's Indian: 5.Nf3 Nbd7 6.Be2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
Nbd7 Be2 e5")
+ ("E90b" "King's Indian: 5.Nf3 Bg4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 Bg4")
+ ("E90c" "King's Indian: 5.Nf3 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 c5")
+ ("E90d" "King's Indian: 5.Nf3 c5 6.d5 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 c5 
d5 O-O")
+ ("E90e" "King's Indian: 5.Nf3 O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O")
+ ("E90f" "King's Indian: 5.Nf3 O-O 6.Bd3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Bd3")
+ ("E90g" "King's Indian: Zinnowitz Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Bg5")
+ ("E90g" "King's Indian: Zinnowitz, 6...h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Bg5 h6")
+ ("E90h" "King's Indian: Larsen Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be3")
+ ("E90h" "King's Indian: Larsen, 6...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be3 c5")
+ ("E90i" "King's Indian: Larsen, 6...e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be3 e5")
+ ("E90j" "King's Indian: Larsen, 6...e5, Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be3 e5 dxe5 dxe5 Qxd8+")
+ ("E90k" "King's Indian: 5.Nf3 O-O 6.h3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
h3")
+ ("E90l" "King's Indian: 5.Nf3 O-O 6.h3 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O h3 Nbd7")
+ ("E90l" "King's Indian: 5.Nf3 O-O 6.h3 Nbd7 7.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 Nbd7 Bg5")
+ ("E90m" "King's Indian: 5.Nf3 O-O 6.h3 Na6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O h3 Na6")
+ ("E90m" "King's Indian: 5.Nf3 O-O 6.h3 Na6 7.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O h3 Na6 Bg5")
+ ("E90n" "King's Indian: 5.Nf3 O-O 6.h3 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O h3 e5")
+ ("E90n" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O h3 e5 Be3")
+ ("E90o" "King's Indian: 5.Nf3 O-O 6.h3 e5 Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 e5 dxe5 dxe5 Qxd8+")
+ ("E90p" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O h3 e5 d5")
+ ("E90q" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 a5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 e5 d5 a5")
+ ("E90r" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 e5 d5 Nbd7")
+ ("E90r" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Nbd7 8.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O h3 e5 d5 Nbd7 Be3")
+ ("E90r" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Nbd7 8.Bg5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O h3 e5 d5 Nbd7 Bg5")
+ ("E90s" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Na6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 e5 d5 Na6")
+ ("E90s" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Na6 8.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O h3 e5 d5 Na6 Be3")
+ ("E90s" "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Na6 8.Bg5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O h3 e5 d5 Na6 Bg5")
+ ("E90t" "King's Indian: 5.Nf3 O-O 6.h3 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O h3 c5")
+ ("E90t" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O h3 c5 Be3")
+ ("E90u" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O h3 c5 d5")
+ ("E90v" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O h3 c5 d5 e6")
+ ("E90v" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3")
+ ("E90w" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 Na6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 Na6")
+ ("E90w" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 Na6 9.O-O" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 Na6 O-O")
+ ("E90w" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 Na6 9.O-O Nc7" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 Na6 O-O Nc7")
+ ("E90x" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 exd5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 exd5")
+ ("E90x" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 exd5 9.exd5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 exd5 exd5")
+ ("E90y" "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 exd5 9.exd5 Re8" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O h3 c5 d5 e6 Bd3 exd5 exd5 Re8")
+ ("E91a" "King's Indian: 6.Be2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2")
+ ("E91b" "King's Indian: 6.Be2 a5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 a5")
+ ("E91c" "King's Indian: 6.Be2 a6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 a6")
+ ("E91d" "King's Indian: 6.Be2 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 c6")
+ ("E91e" "King's Indian: 6.Be2 c6 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 c6 O-O")
+ ("E91f" "King's Indian: 6.Be2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 c5")
+ ("E91g" "King's Indian: 6.Be2 c5 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 c5 d5")
+ ("E91h" "King's Indian: 6.Be2 c5 7.d5 e6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 c5 d5 e6")
+ ("E91h" "King's Indian: 6.Be2 c5 7.d5 e6 8.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 c5 d5 e6 O-O")
+ ("E91i" "King's Indian: 6.Be2 c5 7.d5 e6 8.O-O Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 c5 d5 e6 O-O Re8")
+ ("E91i" "King's Indian: 6.Be2 c5 7.d5 e6 8.O-O Re8 9.Nd2" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 c5 d5 e6 O-O Re8 Nd2")
+ ("E91j" "King's Indian: 6.Be2 c5 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 c5 O-O")
+ ("E91k" "King's Indian: 6.Be2 c5 7.O-O Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 c5 O-O Nc6")
+ ("E91l" "King's Indian: Kazakh Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Na6")
+ ("E91l" "King's Indian: Kazakh Variation, 7.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 Na6 Bg5")
+ ("E91m" "King's Indian: Kazakh Variation, 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 Na6 O-O")
+ ("E91m" "King's Indian: Kazakh Variation, 7.O-O c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 Na6 O-O c5")
+ ("E91n" "King's Indian: Kazakh Variation, 7.O-O c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 Na6 O-O c6")
+ ("E91o" "King's Indian: 6.Be2 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
Nc6")
+ ("E91p" "King's Indian: 6.Be2 Nc6 7.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Nc6 d5")
+ ("E91q" "King's Indian: 6.Be2 Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
Nbd7")
+ ("E91q" "King's Indian: 6.Be2 Nbd7 7.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Nbd7 Bg5")
+ ("E91r" "King's Indian: 6.Be2 Nbd7 7.e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Nbd7 e5")
+ ("E91s" "King's Indian: 6.Be2 Nbd7 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Nbd7 O-O")
+ ("E91t" "King's Indian: 6.Be2 Nbd7 7.O-O c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 Nbd7 O-O c6")
+ ("E91u" "King's Indian: 6.Be2 Bg4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
Bg4")
+ ("E91v" "King's Indian: 6.Be2 Bg4 7.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 Bg4 Be3")
+ ("E91w" "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 Bg4 Be3 Nfd7")
+ ("E91x" "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7 8.Rc1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 Bg4 Be3 Nfd7 Rc1")
+ ("E91y" "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7 8.Ng1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 Bg4 Be3 Nfd7 Ng1")
+ ("E92a" "King's Indian: 6.Be2 e5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5")
+ ("E92b" "King's Indian: 6.Be2 e5 Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 dxe5")
+ ("E92b" "King's Indian: 6.Be2 e5 Queenswap" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 dxe5 dxe5")
+ ("E92c" "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 dxe5 dxe5 Qxd8 Rxd8 Bg5")
+ ("E92d" "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 c6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 dxe5 dxe5 Qxd8 Rxd8 Bg5 c6")
+ ("E92e" "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 dxe5 dxe5 Qxd8 Rxd8 Bg5 Re8")
+ ("E92f" "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 Re8 10.Nd5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 dxe5 dxe5 Qxd8 Rxd8 Bg5 Re8 Nd5")
+ ("E92g" "King's Indian: Gligoric-Taimanov System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 Be3")
+ ("E92h" "King's Indian: Gligoric-Taimanov, 7...c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 Be3 c6")
+ ("E92i" "King's Indian: Gligoric-Taimanov, 7...exd4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 Be3 exd4")
+ ("E92j" "King's Indian: Gligoric-Taimanov, 7...Qe7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 Be3 Qe7")
+ ("E92k" "King's Indian: Gligoric-Taimanov, 7...Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 Be3 Ng4")
+ ("E92k" "King's Indian: Gligoric-Taimanov, 7...Ng4 8.Bg5 f6 9.Bc1" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 Be3 Ng4 Bg5 f6 Bc1")
+ ("E92l" "King's Indian: Gligoric-Taimanov, 7...Ng4 8.Bg5 f6 9.Bh4" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 Be3 Ng4 Bg5 f6 Bh4")
+ ("E92m" "King's Indian: Gligoric-Taimanov, Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 Be3 Ng4 Bg5 f6 Bh4 Nc6")
+ ("E92n" "King's Indian: Petrosian System" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 d5")
+ ("E92o" "King's Indian: Petrosian, 7...c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 d5 c5")
+ ("E92p" "King's Indian: Petrosian, 7...c5 8.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 d5 c5 Bg5")
+ ("E92q" "King's Indian: Petrosian, Stein Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 a5")
+ ("E92r" "King's Indian: Petrosian, Stein, 8.h3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 d5 a5 h3")
+ ("E92s" "King's Indian: Petrosian, Stein, 8.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 d5 a5 Bg5")
+ ("E92s" "King's Indian: Petrosian, Stein, 8.Bg5 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6")
+ ("E92t" "King's Indian: Petrosian, Stein, 8.Bg5 h6 9.Bh4 Na6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6")
+ ("E92u" "King's Indian: Petrosian, Stein, Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6 Nd2")
+ ("E92v" "King's Indian: Petrosian, Stein, Main Line, 10...Qe8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6 Nd2 Qe8")
+ ("E92w" "King's Indian: Petrosian, Stein, Main Line, 10...Qe8 11.O-O" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6 Nd2 Qe8 O-O")
+ ("E92w" "King's Indian: Petrosian, Stein, Main Line, 10...Qe8 11.O-O Bd7" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6 Nd2 Qe8 O-O Bd7")
+ ("E92x" "King's Indian: Petrosian, Stein, Main Line, 10...Qe8 11.O-O Nh7" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 a5 Bg5 h6 Bh4 Na6 Nd2 Qe8 O-O Nh7")
+ ("E93" "King's Indian: Petrosian, Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 d5 Nbd7")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Qc2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 Nbd7 Qc2")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 Nbd7 Be3")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Be3 Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Be3 Ng4")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5 h6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5 h6 9.Bh4" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6 Bh4")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5 h6 9.Bh4 a6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6 Bh4 a6")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5 h6 9.Bh4 a5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6 Bh4 a5")
+ ("E93" "King's Indian: Petrosian, Main Line, 8.Bg5 h6 9.Bh4 g5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6 Bh4 g5")
+ ("E93" "King's Indian: Petrosian, Keres Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 d5 Nbd7 Bg5 h6 Bh4 g5 Bg3 Nh5 h4")
+ ("E94a" "King's Indian: 7.O-O" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 
O-O")
+ ("E94b" "King's Indian: 7.O-O exd4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
e5 O-O exd4")
+ ("E94c" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3")
+ ("E94c" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3 c6")
+ ("E94c" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 c6 10.Kh1" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3 c6 Kh1")
+ ("E94d" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 Nc6" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3 Nc6")
+ ("E94d" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 Nc6 10.Be3" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3 Nc6 Be3")
+ ("E94e" "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 Nc6 10.Be3 Nh5 11.Qd2" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O exd4 Nxd4 Re8 f3 Nc6 Be3 Nh5 Qd2")
+ ("E94f" "King's Indian: Donner Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O c6")
+ ("E94g" "King's Indian: Donner, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
e5 O-O c6 d5")
+ ("E94h" "King's Indian: Donner, 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O c6 Be3")
+ ("E94i" "King's Indian: Glek Variation" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Na6")
+ ("E94j" "King's Indian: Glek, 8.Re1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
e5 O-O Na6 Re1")
+ ("E94k" "King's Indian: Glek, 8.Re1 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Na6 Re1 c6")
+ ("E94k" "King's Indian: Glek, 8.Re1 c6 9.Bf1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Na6 Re1 c6 Bf1")
+ ("E94l" "King's Indian: Glek, 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
e5 O-O Na6 Be3")
+ ("E94m" "King's Indian: Glek, 8.Be3 Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Na6 Be3 Ng4")
+ ("E94n" "King's Indian: Glek, 8.Be3 Ng4 9.Ng5 Qe8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Na6 Be3 Ng4 Bg5 Qe8")
+ ("E94o" "King's Indian: Glek, Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Na6 Be3 Ng4 Bg5 Qe8 dxe5 dxe5")
+ ("E94o" "King's Indian: Glek, Main Line, 11.h3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Na6 Be3 Ng4 Bg5 Qe8 dxe5 dxe5 h3")
+ ("E94o" "King's Indian: Glek, Main Line, 11.h3 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Na6 Be3 Ng4 Bg5 Qe8 dxe5 dxe5 h3 h6")
+ ("E94p" "King's Indian: 7.O-O Nbd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 
e5 O-O Nbd7")
+ ("E94q" "King's Indian: 7.O-O Nbd7 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Nbd7 d5")
+ ("E94q" "King's Indian: 7.O-O Nbd7 8.d5 Nc5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 d5 Nc5")
+ ("E94r" "King's Indian: 7.O-O Nbd7 8.d5 Nc5 9.Qc2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nbd7 d5 Nc5 Qc2")
+ ("E94r" "King's Indian: 7.O-O Nbd7 8.d5 Nc5 9.Qc2 a5" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 d5 Nc5 Qc2 a5")
+ ("E94s" "King's Indian: 7.O-O Nbd7 8.Qc2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Nbd7 Qc2")
+ ("E94s" "King's Indian: 7.O-O Nbd7 8.Qc2 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Qc2 Re8")
+ ("E94t" "King's Indian: 7.O-O Nbd7 8.Qc2 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Qc2 c6")
+ ("E94u" "King's Indian: 7.O-O Nbd7 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Nbd7 Be3")
+ ("E94v" "King's Indian: 7.O-O Nbd7 8.Be3 Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Be3 Ng4")
+ ("E94w" "King's Indian: 7.O-O Nbd7 8.Be3 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Be3 Re8")
+ ("E94x" "King's Indian: 7.O-O Nbd7 8.Be3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Be3 c6")
+ ("E94y" "King's Indian: 7.O-O Nbd7 8.Be3 c6 9.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nbd7 Be3 c6 d5")
+ ("E94y" "King's Indian: 7.O-O Nbd7 8.Be3 c6 9.d5 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nbd7 Be3 c6 d5 c5")
+ ("E95a" "King's Indian: 7.O-O Nbd7 8.Re1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Nbd7 Re1")
+ ("E95b" "King's Indian: 7.O-O Nbd7 8.Re1 a5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Re1 a5")
+ ("E95c" "King's Indian: 7.O-O Nbd7 8.Re1 h6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Re1 h6")
+ ("E95d" "King's Indian: 7.O-O Nbd7 8.Re1 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Re1 Re8")
+ ("E95e" "King's Indian: 7.O-O Nbd7 8.Re1 Re8 9.Bf1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 Re8 Bf1")
+ ("E95f" "King's Indian: 7.O-O Nbd7 8.Re1 exd4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nbd7 Re1 exd4")
+ ("E95g" "King's Indian: 7.O-O Nbd7 8.Re1 exd4 9.Nxd4 Nc5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 exd4 Nxd4 Nc5")
+ ("E95h" "King's Indian: 7.O-O Nbd7 8.Re1 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nbd7 Re1 c6")
+ ("E95i" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Rb1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Rb1")
+ ("E95j" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1")
+ ("E95k" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 Re8" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 Re8")
+ ("E95l" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 exd4")
+ ("E95m" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4 10.Nxd4 Ng4" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 exd4 Nxd4 Ng4")
+ ("E95n" "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4 10.Nxd4 Re8" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 exd4 Nxd4 Re8")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.h3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 h3")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.dxe5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 dxe5")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.dxe5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 dxe5 dxe5")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.Rb1" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 Rb1")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.Rb1 Re8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 Rb1 Re8")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.Rb1 Re8 11.d5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 Rb1 Re8 d5")
+ ("E96" "King's Indian: 7.O-O Nbd7, Old Main Line, 10.Rb1 Re8 11.d5 Nc5 12.b3" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nbd7 Re1 c6 Bf1 a5 Rb1 Re8 d5 
Nc5 b3")
+ ("E97a" "King's Indian: Mar del Plata" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O 
Be2 e5 O-O Nc6")
+ ("E97b" "King's Indian: Mar del Plata, 8.dxe5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 dxe5")
+ ("E97c" "King's Indian: Mar del Plata, 8.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nc6 Be3")
+ ("E97c" "King's Indian: Mar del Plata, 8.Be3 Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 Be3 Ng4")
+ ("E97c" "King's Indian: Mar del Plata, 8.Be3 Ng4" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 Be3 Ng4 Bg5 f6 Bc1")
+ ("E97d" "King's Indian: Mar del Plata, 8.d5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nc6 d5")
+ ("E97d" "King's Indian: Mar del Plata, 8.d5 Ne7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7")
+ ("E97d" "King's Indian: Mar del Plata, Odessa Variation" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Bg5")
+ ("E97e" "King's Indian: Mar del Plata, 9.Bd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nc6 d5 Ne7 Bd2")
+ ("E97f" "King's Indian: Mar del Plata, Bayonet Attack" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4")
+ ("E97g" "King's Indian: Mar del Plata, Bayonet Attack, 9...Kh8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Kh8")
+ ("E97h" "King's Indian: Mar del Plata, Bayonet Attack, 9...Ne8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Ne8")
+ ("E97h" "King's Indian: Mar del Plata, Bayonet Attack, 9...Ne8 10.c5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Ne8 c5")
+ ("E97i" "King's Indian: Mar del Plata, Bayonet Attack, 9...a5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 a5")
+ ("E97i" "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.bxa5" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 a5 bxa5")
+ ("E97j" "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.Ba3" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 a5 Ba3")
+ ("E97k" "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.Ba3 axb4" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 a5 Ba3 axb4")
+ ("E97k" "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.Ba3 axb4 
11.Bxb4 Nd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 a5 
Ba3 axb4 Bxb4 Nd7")
+ ("E97l" "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5")
+ ("E97m" "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.c5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 c5")
+ ("E97n" "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.g3" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 g3")
+ ("E97o" "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.Re1" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1")
+ ("E97p" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 a5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 a5")
+ ("E97q" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 Nf4" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 Nf4")
+ ("E97q" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 Nf4 11.Bf1 a5" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 Nf4 Bf1 
a5")
+ ("E97q" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 Nf4 11.Bf1 a5 
12.bxa5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 
Nf4 Bf1 a5 bxa5")
+ ("E97r" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 f5")
+ ("E97s" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5 11.Ng5 Nf6" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 f5 Ng5 
Nf6")
+ ("E97s" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5 11.Ng5 Nf6 
12.Bf3" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 f5 
Ng5 Nf6 Bf3")
+ ("E97s" "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5 11.Ng5 Nf6 
12.Bf3 c6" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 b4 Nh5 Re1 
f5 Ng5 Nf6 Bf3 c6")
+ ("E97t" "King's Indian: Mar del Plata, 9.Nd2" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2")
+ ("E97u" "King's Indian: Mar del Plata, 9.Nd2 Ne8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 Ne8")
+ ("E97u" "King's Indian: Mar del Plata, 9.Nd2 Ne8 10.b4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 Ne8 b4")
+ ("E97v" "King's Indian: Mar del Plata, 9.Nd2 Nd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 Nd7")
+ ("E97v" "King's Indian: Mar del Plata, 9.Nd2 Nd7 10.b4" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 Nd7 b4")
+ ("E97w" "King's Indian: Mar del Plata, 9.Nd2 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 c5")
+ ("E97x" "King's Indian: Mar del Plata, 9.Nd2 a5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5")
+ ("E97x" "King's Indian: Mar del Plata, 9.Nd2 a5 10.Rb1" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 Rb1")
+ ("E97y" "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 a3")
+ ("E97y" "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3 Bd7" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 a3 Bd7")
+ ("E97z" "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3 Nd7" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 a3 Nd7")
+ ("E97z" "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3 Nd7 11.Rb1" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 a3 Nd7 Rb1")
+ ("E97z" "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3 Nd7 11.Rb1 f5 12.b4" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Nd2 a5 a3 Nd7 Rb1 f5 
b4")
+ ("E98a" "King's Indian: Mar del Plata, 9.Ne1" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 
O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1")
+ ("E98b" "King's Indian: Mar del Plata, 9.Ne1 c5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 c5")
+ ("E98c" "King's Indian: Mar del Plata, 9.Ne1 Ne8" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8")
+ ("E98d" "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Nd3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8 Nd3")
+ ("E98d" "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Nd3 f5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8 Nd3 f5")
+ ("E98e" "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8 Be3")
+ ("E98f" "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3 f5 11.f3" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8 Be3 f5 f3")
+ ("E98g" "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3 f5 11.f3 f4" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Ne8 Be3 f5 f3 f4")
+ ("E98h" "King's Indian: Mar del Plata, 9.Ne1 Nd7" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7")
+ ("E98i" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Kh1" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Kh1")
+ ("E98j" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Be3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Be3")
+ ("E98k" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Be3 f5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Be3 f5")
+ ("E98l" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3")
+ ("E98m" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3 f5")
+ ("E98n" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3 f5 Bd2")
+ ("E98o" "King's Indian: Mar del Plata, Fischer Variation" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3 f5 Bd2 c5")
+ ("E98p" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2 Kh8" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3 f5 Bd2 Kh8")
+ ("E98q" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2 Nf6" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 Nd3 f5 Bd2 Nf6")
+ ("E98r" "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.f3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5" "d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 
Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3 Nf6" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3 Nf6")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3 Nf6 12.Bd2" "d4 Nf6 c4 
g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3 Nf6 Bd2")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3 Nf6 12.Bd2 f4" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3 Nf6 Bd2 f4")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3 Nf6 12.Bd2 f4 13.c5" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3 Nf6 
Bd2 f4 c5")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Nd3 f4" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Nd3 f4")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Be3" "d4 Nf6 c4 g6 Nc3 Bg7 
e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Be3")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Be3 f4" "d4 Nf6 c4 g6 Nc3 
Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Be3 f4")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Be3 f4 12.Bf2 g5" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Be3 f4 Bf2 g5")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Be3 f4 12.Bf2 g5 13.a4" "d4 
Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Be3 f4 Bf2 
g5 a4")
+ ("E99" "King's Indian: Mar del Plata, 10.f3 f5 11.Be3 f4 12.Bf2 g5 13.a4 Ng6" 
"d4 Nf6 c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 Be3 f4 
Bf2 g5 a4 Ng6")
+ ("E99" "King's Indian: Mar del Plata, Benko Attack" "d4 Nf6 c4 g6 Nc3 Bg7 e4 
d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 g4")
+ ("E99" "King's Indian: Mar del Plata, Benko Attack, 11...Kh8" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 g4 Kh8")
+ ("E99" "King's Indian: Mar del Plata, Benko Attack, 11...Nf6" "d4 Nf6 c4 g6 
Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 g4 Nf6")
+ ("E99" "King's Indian: Mar del Plata, Benko Attack, 11...Nf6 12.Nd3" "d4 Nf6 
c4 g6 Nc3 Bg7 e4 d6 Nf3 O-O Be2 e5 O-O Nc6 d5 Ne7 Ne1 Nd7 f3 f5 g4 Nf6 Nd3"))
+
+;;; chess-eco.pos ends here
diff --git a/packages/chess/chess-engine.el b/packages/chess/chess-engine.el
new file mode 100644
index 0000000..3007ac9
--- /dev/null
+++ b/packages/chess/chess-engine.el
@@ -0,0 +1,458 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Obtain movements and other information from an engine
+;;
+
+;;; Commentary:
+
+(require 'chess-module)
+
+(defgroup chess-engine nil
+  "Code for reading movements and other commands from an engine."
+  :group 'chess)
+
+(defvar chess-engine-regexp-alist nil)
+(defvar chess-engine-response-handler nil)
+(defvar chess-engine-current-marker nil)
+(defvar chess-engine-pending-offer nil)
+(defvar chess-engine-pending-arg nil)
+(defvar chess-engine-opponent-name nil)
+
+(make-variable-buffer-local 'chess-engine-regexp-alist)
+(make-variable-buffer-local 'chess-engine-response-handler)
+(make-variable-buffer-local 'chess-engine-current-marker)
+(make-variable-buffer-local 'chess-engine-pending-offer)
+(make-variable-buffer-local 'chess-engine-pending-arg)
+(make-variable-buffer-local 'chess-engine-opponent-name)
+
+(defvar chess-engine-process nil)
+(defvar chess-engine-last-pos nil)
+(defvar chess-engine-working nil)
+(defvar chess-engine-handling-event nil)
+
+(make-variable-buffer-local 'chess-engine-process)
+(make-variable-buffer-local 'chess-engine-last-pos)
+(make-variable-buffer-local 'chess-engine-working)
+
+(defvar chess-engine-inhibit-auto-pass nil)
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; User interface
+;;
+
+(chess-message-catalog 'english
+  '((invalid-fen    . "Received invalid FEN string: %s")
+    (invalid-pgn    . "Received invalid PGN text")
+    (now-black     . "Your opponent played the first move, you are now black")
+    (move-passed    . "Your opponent has passed the move to you")
+    (want-to-play   . "Do you wish to play a chess game against %s? ")
+    (want-to-play-a . "Do you wish to play a chess game against an anonymous 
opponent? ")
+    (opp-quit      . "Your opponent has quit playing")
+    (opp-resigned   . "Your opponent has resigned")
+    (opp-draw      . "Your opponent offers a draw, accept? ")
+    (opp-abort     . "Your opponent wants to abort this game, accept? ")
+    (opp-undo      . "Your opponent wants to take back %d moves, accept? ")
+    (opp-ready     . "Your opponent, %s, is now ready to play")
+    (opp-ready-a    . "Your opponent is ready to play; pass or make your move")
+    (opp-draw-acc   . "Your draw offer was accepted")
+    (opp-abort-acc  . "Your offer to abort was accepted")
+    (opp-undo-acc   . "Request to undo %d moves was accepted")
+    (opp-draw-dec   . "Your draw offer was declined")
+    (opp-abort-dec  . "Your offer to abort was declined")
+    (opp-undo-dec   . "Your request to undo %d moves was decline")
+    (opp-draw-ret   . "Your opponent has retracted their draw offer")
+    (opp-abort-ret  . "Your opponent has retracted their offer to abort")
+    (opp-undo-ret   . "Your opponent has retracted their request to undo %d 
moves")
+    (opp-illegal    . "Your opponent states your last command was illegal")
+    (opp-call-flag  . "Your flag fell, and your opponent has called time")
+    (opp-flag-fell  . "Your opponent has forfeited the game on time")
+    (failed-start   . "Failed to start chess engine process")))
+
+(defsubst chess-engine-convert-algebraic (move &optional trust-check)
+  "Convert algebraic move to a ply in reference to the engine position.
+If conversion fails, this function fired an 'illegal event."
+  (or (chess-algebraic-to-ply (chess-engine-position nil) move trust-check)
+      (chess-engine-command nil 'illegal)))
+
+(defsubst chess-engine-convert-fen (fen)
+  (or (chess-fen-to-pos fen)
+      (ignore (chess-message 'invalid-fen fen))))
+
+(defsubst chess-engine-convert-pgn (pgn)
+  (or (chess-pgn-to-game pgn)
+      (ignore (chess-message 'invalid-pgn))))
+
+(defun chess-engine-default-handler (event &rest args)
+  "Default engine response handler."
+  (let ((game (chess-engine-game nil)))
+    (cond
+     ((eq event 'move)
+      (let ((chess-engine-handling-event t))
+       (when (and (car args)
+                  (chess-game-data game 'active))
+         ;; if the game index is still 0, then our opponent
+         ;; is white, and we need to pass over the move
+         (when (and (not chess-engine-inhibit-auto-pass)
+                    (chess-game-data game 'my-color)
+                    (zerop (chess-game-index game)))
+           (chess-game-set-tag game "White" chess-engine-opponent-name)
+           (chess-game-set-tag game "Black" chess-full-name)
+           (chess-message 'now-black)
+           (chess-game-run-hooks game 'pass)
+           ;; if no one else flipped my-color, we'll do it
+           (if (chess-game-data game 'my-color)
+               (chess-game-set-data game 'my-color nil)))
+
+         (chess-game-move game (car args))
+
+         (if (chess-game-over-p game)
+             (chess-game-set-data game 'active nil))
+         t)))
+
+     ((eq event 'pass)
+      (when (chess-game-data game 'active)
+       (chess-message 'move-passed)
+       t))
+
+     ((eq event 'match)
+      (if (chess-game-data game 'active)
+         (chess-engine-command nil 'busy)
+       (let ((name (and (> (length (car args)) 0) (car args))))
+         (if (y-or-n-p (if name
+                           (chess-string 'want-to-play (car args))
+                         (chess-string 'want-to-play-a)))
+             (progn
+               (setq chess-engine-opponent-name (or name "Anonymous"))
+               (let ((chess-engine-handling-event t))
+                 (chess-engine-set-position nil))
+               (chess-engine-command nil 'accept name))
+           (chess-engine-command nil 'decline))))
+      t)
+
+     ((eq event 'setup-pos)
+      (when (car args)
+       ;; we don't want the `setup-game' event coming back to us
+       (let ((chess-engine-handling-event t))
+         (chess-engine-set-position nil (car args) t))
+       t))
+
+     ((eq event 'setup-game)
+      (when (car args)
+       ;; we don't want the `setup-game' event coming back to us
+       (let ((chess-engine-handling-event t)
+             (chess-game-inhibit-events t))
+         (chess-engine-set-game nil (car args))
+         (chess-game-set-data game 'active t)
+         (if (string= chess-full-name
+                      (chess-game-tag game "White"))
+             (chess-game-set-data game 'my-color t)
+           (chess-game-set-data game 'my-color nil)))
+       t))
+
+     ((eq event 'quit)
+      (chess-message 'opp-quit)
+      (let ((chess-engine-handling-event t))
+       (chess-game-set-data game 'active nil))
+      t)
+
+     ((eq event 'resign)
+      (let ((chess-engine-handling-event t))
+       (chess-message 'opp-resigned)
+       (chess-game-end game :resign)
+       t))
+
+     ((eq event 'draw)
+      (if (y-or-n-p (chess-string 'opp-draw))
+         (progn
+           (let ((chess-engine-handling-event t))
+             (chess-game-end game :drawn)
+             (chess-game-set-data game 'active nil))
+           (chess-engine-command nil 'accept))
+       (chess-engine-command nil 'decline))
+      t)
+
+     ((eq event 'abort)
+      (if (y-or-n-p (chess-string 'opp-abort))
+         (progn
+           (let ((chess-engine-handling-event t))
+             (chess-game-end game :aborted)
+             (chess-game-set-data game 'active nil))
+           (chess-engine-command nil 'accept))
+       (chess-engine-command nil 'decline))
+      t)
+
+     ((eq event 'undo)
+      (if (y-or-n-p (chess-string 'opp-undo (car args)))
+         (progn
+           (let ((chess-engine-handling-event t))
+             (chess-game-undo game (car args)))
+           (chess-engine-command nil 'accept))
+       (chess-engine-command nil 'decline))
+      t)
+
+     ((eq event 'accept)
+      (when chess-engine-pending-offer
+       (if (eq chess-engine-pending-offer 'match)
+           (unless (chess-game-data game 'active)
+             (let ((name (and (> (length (car args)) 0)
+                              (car args))))
+               (if name
+                   (chess-message 'opp-ready (car args))
+                 (chess-message 'opp-ready-a))
+               (setq chess-engine-opponent-name (or name "Anonymous"))
+               (let ((chess-engine-handling-event t))
+                 (chess-engine-set-position nil))))
+         (let ((chess-engine-handling-event t))
+           (cond
+            ((eq chess-engine-pending-offer 'draw)
+             (chess-message 'opp-draw-acc)
+             (chess-game-end game :drawn)
+             (chess-game-set-data game 'active nil))
+
+            ((eq chess-engine-pending-offer 'abort)
+             (chess-message 'opp-abort-acc)
+             (chess-game-end game :aborted)
+             (chess-game-set-data game 'active nil))
+
+            ((eq chess-engine-pending-offer 'undo)
+             (chess-message 'opp-undo-acc chess-engine-pending-arg)
+             (chess-game-undo game chess-engine-pending-arg))
+            ((eq chess-engine-pending-offer 'my-undo)
+             (chess-game-undo game (car args))))))
+       (setq chess-engine-pending-offer nil
+             chess-engine-pending-arg nil)
+       t))
+
+     ((eq event 'decline)
+      (when chess-engine-pending-offer
+       (cond
+        ((eq chess-engine-pending-offer 'draw)
+         (chess-message 'opp-draw-dec))
+
+        ((eq chess-engine-pending-offer 'abort)
+         (chess-message 'opp-abort-dec))
+
+        ((eq chess-engine-pending-offer 'undo)
+         (chess-message 'opp-undo-dec chess-engine-pending-arg)))
+
+       (setq chess-engine-pending-offer nil
+             chess-engine-pending-arg nil)
+       t))
+
+     ((eq event 'retract)
+      (when chess-engine-pending-offer
+       (cond
+        ((eq chess-engine-pending-offer 'draw)
+         (chess-message 'opp-draw-ret))
+
+        ((eq chess-engine-pending-offer 'abort)
+         (chess-message 'opp-abort-ret))
+
+        ((eq chess-engine-pending-offer 'undo)
+         (chess-message 'opp-undo-ret chess-engine-pending-arg)))
+
+       (setq chess-engine-pending-offer nil
+             chess-engine-pending-arg nil)
+       t))
+
+     ((eq event 'illegal)
+      (chess-message 'opp-illegal)
+      (let ((chess-engine-handling-event t))
+       (chess-game-undo game 1)))
+
+     ((eq event 'call-flag)
+      (let ((remaining
+            (if (car args)
+                -1
+              (chess-game-data game (if (chess-game-data game 'my-color)
+                                        'white-remaining
+                                      'black-remaining)))))
+       (when (< remaining 0)
+         (chess-message 'opp-call-flag)
+         (chess-game-run-hooks game 'flag-fell))))
+
+     ((eq event 'flag-fell)
+      (chess-message 'opp-flag-fell)
+      (chess-game-end game :flag-fell)
+      (chess-game-set-data game 'active nil))
+
+     ((eq event 'kibitz)
+      (let ((chess-engine-handling-event t))
+       (chess-game-run-hooks game 'kibitz (car args))))
+
+     ((eq event 'chat)
+      (let ((chess-engine-handling-event t))
+       (chess-game-run-hooks game 'chat (car args)))))))
+
+(defun chess-engine-create (module game &optional response-handler
+                                &rest handler-ctor-args)
+  "Create a new chess engine MODULE (a symbol) associated with GAME.
+Optionally supply a new RESPONSE-HANDLER."
+  (let* ((engine (apply 'chess-module-create module game nil
+                       handler-ctor-args)))
+    (when engine
+      (with-current-buffer engine
+       (setq chess-engine-regexp-alist
+             (copy-alist
+              (symbol-value
+               (let ((sym (intern-soft (concat (symbol-name module) 
"-regexp-alist"))))
+                 (when (boundp sym) sym))))
+             chess-engine-response-handler
+             (or response-handler 'chess-engine-default-handler))
+       (let ((proc chess-engine-process))
+         (when (and proc (processp proc))
+           (unless (memq (process-status proc) '(run open listen))
+             (chess-error 'failed-start))
+           (if (or (not (process-filter proc))
+                   (eq (process-filter proc) 'internal-default-process-filter))
+             (set-process-filter proc 'chess-engine-filter)))
+         (setq chess-engine-current-marker (point-marker))
+         (chess-game-set-data game 'engine (current-buffer)))))))
+
+(defalias 'chess-engine-destroy 'chess-module-destroy)
+
+(defun chess-engine-command (engine event &rest args)
+  "Call the handler of ENGINE with EVENT (a symbol) and ARGS."
+  (chess-with-current-buffer engine
+    (apply chess-module-event-handler chess-module-game event args)))
+
+;; 'ponder
+;; 'search-depth
+;; 'wall-clock
+
+(defun chess-engine-set-option (engine option value)
+  "Set ENGINE OPTION to VALUE by invoking its handler with the 'set-option
+event."
+  (chess-with-current-buffer engine
+    (chess-engine-command engine 'set-option option value)))
+
+(defun chess-engine-set-response-handler (engine &optional response-handler)
+  "Set a new RESPONSE-HANDLER for ENGINE."
+  (chess-with-current-buffer engine
+    (setq chess-engine-response-handler
+         (or response-handler 'chess-engine-default-handler))))
+
+(defun chess-engine-response-handler (engine)
+  "Return the function currently defined as the response-handler for ENGINE."
+  (chess-with-current-buffer engine
+    chess-engine-response-handler))
+
+(defun chess-engine-set-position (engine &optional position my-color)
+  (chess-with-current-buffer engine
+    (let ((chess-game-inhibit-events t))
+      (if position
+         (progn
+           (chess-game-set-start-position chess-module-game position)
+           (chess-game-set-data chess-module-game 'my-color my-color))
+       (chess-game-set-start-position chess-module-game
+                                      chess-starting-position)
+       (chess-game-set-data chess-module-game 'my-color t))
+      (chess-game-set-data chess-module-game 'active t))
+    (chess-game-run-hooks chess-module-game 'orient)))
+
+(defun chess-engine-position (engine)
+  "Return the current position of the game associated with ENGINE."
+  (chess-with-current-buffer engine
+    (chess-game-pos chess-module-game)))
+
+(defalias 'chess-engine-game 'chess-module-game)
+(defalias 'chess-engine-set-game 'chess-module-set-game)
+(defalias 'chess-engine-set-game* 'chess-module-set-game*)
+(defalias 'chess-engine-index 'chess-module-game-index)
+
+(defun chess-engine-move (engine ply)
+  (chess-with-current-buffer engine
+    (chess-game-move chess-module-game ply)
+    (chess-engine-command engine 'move ply)))
+
+(chess-message-catalog 'english
+  '((engine-not-running . "The engine you were using is no longer running")))
+
+(defun chess-engine-send (engine string)
+  "Send the given STRING to ENGINE.
+If `chess-engine-process' is a valid process object, use `process-send-string'
+to submit the data.  Otherwise, the 'send event is triggered and the engine
+event handler can take care of the data."
+  (chess-with-current-buffer engine
+    (let ((proc chess-engine-process))
+      (if proc
+         (if (memq (process-status proc) '(run open))
+             (process-send-string proc string)
+           (chess-message 'engine-not-running)
+           (chess-engine-command nil 'destroy))
+       (chess-engine-command nil 'send string)))))
+
+(defun chess-engine-submit (engine string)
+  "Submit the given STRING, so ENGINE sees it in its input stream."
+  (chess-with-current-buffer engine
+    (let ((proc chess-engine-process))
+      (when (and proc (processp proc)
+                (not (memq (process-status proc) '(run open))))
+       (chess-message 'engine-not-running)
+       (chess-engine-command nil 'destroy))
+      (chess-engine-filter nil string))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Primary event handler
+;;
+
+(defun chess-engine-sentinel (proc event)
+  (chess-engine-destroy (process-buffer proc)))
+
+(defun chess-engine-filter (proc &optional string)
+  "Filter for receiving text for an engine from an outside source."
+  (let ((buf (if (and proc (processp proc))
+                (process-buffer proc)
+              (current-buffer)))
+       (inhibit-redisplay t)
+       last-point last-line-no-newline)
+    (when (buffer-live-p buf)
+      (with-current-buffer buf
+       (if (stringp proc)
+           (setq string proc)
+         (let ((moving (= (point) chess-engine-current-marker)))
+           (save-excursion
+             ;; Insert the text, advancing the marker.
+             (goto-char chess-engine-current-marker)
+             (insert string)
+             (set-marker chess-engine-current-marker (point)))
+           (if moving (goto-char chess-engine-current-marker))))
+       (unless chess-engine-working
+         (setq chess-engine-working t)
+         (save-excursion
+           (if chess-engine-last-pos
+               (goto-char chess-engine-last-pos)
+             (goto-char (point-min)))
+           (unwind-protect
+               (while (and (not (eobp)) (not last-line-no-newline))
+                 (let ((case-fold-search nil)
+                       (triggers chess-engine-regexp-alist)
+                       last-trigger result)
+                   (while triggers
+                     ;; this could be accelerated by joining
+                     ;; together the regexps
+                     (if (and (re-search-forward (caar triggers)
+                                                 (line-end-position) t)
+                              (setq result (funcall (cdar triggers))))
+                         (progn
+                           (when (eq result 'once)
+                             (if last-trigger
+                                 (setcdr last-trigger (cdr triggers))
+                               (setq chess-engine-regexp-alist
+                                     (cdr triggers))))
+                           (setq triggers nil))
+                       (setq last-trigger triggers
+                             triggers (cdr triggers)))))
+                 (if (= (line-end-position) (point-max))
+                     (setq last-line-no-newline t)
+                   (forward-line)))
+             (setq chess-engine-last-pos (point)
+                   chess-engine-working nil))))))))
+
+(provide 'chess-engine)
+
+;;; chess-engine.el ends here
diff --git a/packages/chess/chess-epd.el b/packages/chess/chess-epd.el
new file mode 100644
index 0000000..930242a
--- /dev/null
+++ b/packages/chess/chess-epd.el
@@ -0,0 +1,145 @@
+;;; chess-epd.el --- Extended Position Description Format
+
+;; Copyright (C) 2004  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+
+;;; Commentary:
+
+;; EPD is the "Extended Position Description" format.  It is a standard for
+;; describing chess positions along with an extended set of structured
+;; attribute values using the ASCII character set.  It is intended for data and
+;; command interchange among chessplaying programs.  It is also intended
+;; for the representation of portable opening library repositories and for
+;; problem test suites.
+
+;; A single EPD record uses one text line of variable length composed of
+;; four data fields followed by zero or more operations.  A text file
+;; composed exclusively of EPD data records should have a file name with
+;; the suffix ".epd".
+
+;;; Code:
+
+(require 'chess-fen)
+(require 'chess-game)
+(require 'chess-ply)
+(require 'chess-pos)
+(require 'chess-var)
+
+(defun chess-epd-annotation-to-string (annotation)
+  (let ((opcode (car annotation))
+       (value (cdr annotation)))
+    (cond
+     ((or (eq opcode 'am) (eq opcode 'bm))
+      (assert (consp value))
+      (format "%S %s;"
+             opcode (mapconcat #'chess-ply-to-string value " ")))
+     ((eq opcode 'ce)
+      (assert (integerp value))
+      (format "%S %d;" opcode value))
+     ((or (eq opcode 'pv) (eq opcode 'sv))
+      (format "%S %s;"
+             opcode (chess-var-to-algebraic value)))
+     (t
+      (format "%S%s;" opcode (if (eq value t) "" (format " %s" value)))))))
+
+(defun chess-pos-to-epd (position)
+  "Convert a chess POSITION to a string representation in extended
+position description format."
+  (assert position)
+  (concat (chess-pos-to-fen position)
+         (when (consp (chess-pos-annotations position))
+           (concat " "
+                   (mapconcat #'chess-epd-annotation-to-string
+                              (chess-pos-annotations position)
+                              " ")))))
+
+(defun chess-epd-to-pos (&optional string)
+  "Convert extended position description to a chess position.
+If STRING is not specified, look for an EPD string in the current buffer,
+and advance point after the correctly parsed position."
+  (if (stringp string)
+      (with-temp-buffer
+       (insert string)
+       (chess-epd-parse))
+    (chess-epd-parse)))
+
+(defun chess-epd-read-file (file)
+  "Return a list of positions contained in FILE."
+  (let ((positions (list t)) pos)
+    (with-temp-buffer
+      (insert-file-contents file)
+      (goto-char (point-min))
+      (while (setq pos (chess-epd-parse))
+       (nconc positions (list pos))))
+    (cdr positions)))
+
+(defsubst chess-game-to-epd (game &optional to-string index)
+  (if to-string
+      (chess-pos-to-epd (chess-game-pos game index))
+    (insert (chess-pos-to-epd (chess-game-pos game index)) ?\n)))
+
+(defsubst chess-epd-to-game (&optional string)
+  (chess-game-create (chess-epd-to-pos string)))
+
+(defun chess-epd-parse ()
+  (when (re-search-forward chess-fen-regexp nil t)
+    (let ((pos (chess-fen-to-pos (match-string 0))))
+      (while (= 1 (skip-chars-forward " "))
+       (if (looking-at "[A-Za-z]")
+           (let ((opcode (intern (buffer-substring
+                                  (point) (+ (point) (skip-chars-forward
+                                                      "A-Za-z0-9_"))))))
+             (if (= 1 (skip-chars-forward ";"))
+                 (chess-pos-set-epd pos opcode)
+               (if (= (skip-chars-forward " ") 1)
+                   (let ((val (buffer-substring
+                               (point) (prog1
+                                           (+ (point)
+                                              (skip-chars-forward "^;"))
+                                         (skip-chars-forward ";")))))
+                     (chess-pos-set-epd
+                      pos opcode
+                      (cond
+                       ((or (eq opcode 'am) (eq opcode 'bm))
+                        (mapcar (lambda (move)
+                                  (chess-ply-from-string pos move))
+                                (split-string val " ")))
+                       ((eq opcode 'ce)
+                        (read val))
+                       ((or (eq opcode 'pm) (eq opcode 'sm)) 
;predicted/supplied move
+                        (chess-ply-from-string pos val))
+                       ((or (eq opcode 'pv) (eq opcode 'sv)) ; 
predicted/supplied variation
+                        (let ((var (chess-var-create pos)))
+                          (mapc (lambda (ply)
+                                  (let ((changes (chess-ply-from-string
+                                                  (chess-var-pos var) ply)))
+                                    (if changes
+                                        (chess-var-move var changes)
+                                      (error "Unable to convert ply '%s'" 
ply))))
+                                (split-string val " "))
+                          var))
+                       (t val))))
+                 (error "Illegal char following identifier"))))
+         (error "Illegal Identifier")))
+      (skip-chars-forward "\n")
+      pos)))
+
+(provide 'chess-epd)
+;;; chess-epd.el ends here
diff --git a/packages/chess/chess-fen.el b/packages/chess/chess-fen.el
new file mode 100644
index 0000000..00eacd6
--- /dev/null
+++ b/packages/chess/chess-fen.el
@@ -0,0 +1,140 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Convert a chess position to/from FEN notation
+;;
+;; FEN notation encodes a chess position using a simple string.  The
+;; format is:
+;;
+;;   POSITION SIDE CASTLING EN-PASSANT
+;;
+;; The POSITION gives all eight ranks, by specifying a letter for each
+;; piece on the position, and a number for any intervening spaces.
+;; Trailing spaces need not be counted.  Uppercase letters signify
+;; white, and lowercase black.  For example, if your position only had
+;; a black king on d8, your POSITION string would be:
+;;
+;;   3k////////
+;;
+;; For the three spaces (a, b and c file), the black king, and then
+;; all the remaining ranks (which are all empty, so their spaces can
+;; be ignored).
+;;
+;; The SIDE is w or b, to indicate whose move it is.
+;;
+;; CASTLING can contain K, Q, k or q, to signify whether the white or
+;; black king can still castle on the king or queen side.  EN-PASSANT
+;; signifies the target sqaure of an en passant capture, such as "e3" or "a6".
+;;
+;; The starting chess position always looks like this:
+;;
+;;   rnbqkbnr/pppppppp/////PPPPPPPP/RNBQKBNR/ w KQkq -
+;;
+;; And in "full" mode (where all spaces are accounted for):
+;;
+;;   rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -
+;;
+;; It may also have the current game sequence appended, but this
+;; relate to the game, not the position.
+;;
+
+(eval-when-compile (require 'cl))
+
+(defconst chess-fen-regexp
+  "^\\([bnrqkpBNRQKP1-8]*/?\\)+ [bw] \\(-\\|[KQkq]+\\) \\(-\\|[1-8]\\)")
+
+(defun chess-fen-to-pos (fen)
+  "Convert a FEN-like notation string to a chess position."
+  (assert (stringp fen))
+  (let ((i 0) (l (length fen))
+       (rank 0) (file 0) (c ?0)
+       (position (chess-pos-create t))
+       error (space-count 0))
+    (setq c (aref fen i))
+    (while (and (null error)
+               (/= c ? ) (< i l))
+      (cond
+       ((= c ?/)
+       (setq file 0 rank (1+ rank)))
+       ((and (>= c ?1) (<= c ?9))
+       (setq file (+ file (- c ?0))))
+       ((memq (upcase c) '(?K ?Q ?B ?N ?R ?P))
+       (chess-pos-set-piece position (chess-rf-to-index rank file) c)
+       (setq file (1+ file)))
+       (t
+       (setq error t)))
+      (setq i (1+ i) c (aref fen i)))
+    (if (= (aref fen i) ? )
+       (setq i (1+ i)))
+    (if (memq (aref fen i) '(?b ?w))
+       (progn
+         (chess-pos-set-side-to-move position (= (aref fen i) ?w))
+         (setq i (+ i 2)))
+      (setq error t))
+    (setq c (aref fen i))
+    (while (and (null error)
+               (< space-count 2) (< i l))
+      (cond
+       ((= c ?-))
+       ((= c ? ) (setq space-count (1+ space-count)))
+       ((= c ?K) (chess-pos-set-can-castle position ?K t))
+       ((= c ?Q) (chess-pos-set-can-castle position ?Q t))
+       ((= c ?k) (chess-pos-set-can-castle position ?k t))
+       ((= c ?q) (chess-pos-set-can-castle position ?q t))
+       ((and (>= c ?a) (<= c ?h))
+       (chess-pos-set-en-passant
+        position
+        (let ((target (chess-coord-to-index (substring fen i (+ i 2)))))
+          (chess-incr-index target (if (= (chess-index-rank target) 2)
+                                       1 (if (= (chess-index-rank target) 5)
+                                             -1 (setq error t) 0)) 0)))
+       (setq i (1+ i)))
+       (t
+       (setq error t)))
+      (setq i (1+ i) c (and (< i l) (aref fen i))))
+    (unless error
+      position)))
+
+(defun chess-pos-to-fen (position &optional full)
+  "Convert a chess POSITION to FEN-like notation.
+If FULL is non-nil, represent trailing spaces as well."
+  (assert (vectorp position))
+  (let ((blank 0) (str "") output)
+    (dotimes (rank 8)
+      (dotimes (file 8)
+       (let ((p (chess-pos-piece position (chess-rf-to-index rank file))))
+         (if (= p ? )
+             (setq blank (1+ blank))
+           (if (> blank 0)
+               (setq str (concat str (int-to-string blank)) blank 0))
+           (setq str (concat str (char-to-string p))))))
+      (if (and full (> blank 0))
+         (setq str (concat str (int-to-string blank))))
+      (if (< rank 7) (setq blank 0 str (concat str "/"))))
+    (setq str (if (chess-pos-side-to-move position)
+                 (concat str " w ")
+               (concat str " b ")))
+    (mapc (lambda (castle)
+           (if (chess-pos-can-castle position castle)
+               (setq str (concat str (string castle)) output t)))
+         '(?K ?Q ?k ?q))
+    (if output
+       (setq str (concat str " "))
+      (setq str (concat str "- ")))
+    (let ((index (chess-pos-en-passant position)))
+      (if (and index
+              (let ((pawn (if (chess-pos-side-to-move position) ?P ?p)))
+                (or (and (chess-incr-index index 0 -1)
+                         (eq (chess-pos-piece position (chess-incr-index
+                                                        index 0 -1)) pawn))
+                    (and (chess-incr-index index 0 1)
+                         (eq (chess-pos-piece position (chess-incr-index
+                                                        index 0 1)) pawn)))))
+         (concat str (chess-index-to-coord
+                      (if (chess-pos-side-to-move position)
+                          (chess-incr-index index -1 0)
+                        (chess-incr-index index 1 0))))
+       (concat str "-")))))
+
+(provide 'chess-fen)
+
+;;; chess-fen.el ends here
diff --git a/packages/chess/chess-file.el b/packages/chess/chess-file.el
new file mode 100644
index 0000000..9ea516d
--- /dev/null
+++ b/packages/chess/chess-file.el
@@ -0,0 +1,105 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A game database that stores PGN format games or EPD format positions in
+;; a single file.
+;;
+;; This is basically what you expect from a file ending in .pgn or .epd.
+;;
+
+(defvar chess-file-locations nil
+  "A list of starting positions of individual records of this collection.")
+(make-variable-buffer-local 'chess-file-locations)
+
+(defvar chess-file-type nil
+  "The file format type of this database instance (a symbol).
+See `chess-file-types' for details.")
+(make-variable-buffer-local 'chess-file-type)
+
+(defvar chess-file-types
+  `((pgn "^\\[Event " chess-pgn-to-game chess-game-to-pgn (?\n ?\n))
+    (epd ,(concat chess-fen-regexp "\\(\\s-+.+\\);\\s-*$")
+        chess-epd-to-game chess-game-to-epd (?\n)))
+  "Alist of different file types.
+Entries have the form (TYPE BEGIN-REGEXP TO-GAME FROM-GAME SEPARATOR)
+where TYPE is a symbol (usually either 'pgn or 'epd),
+BEGIN-REGEXP is the regexp to use for matching the beginning of new records,
+TO-GAME and FROM-GAME are functions to use for reading and writing a game
+object from/into the buffer and SEPARATOR is a list of characters to insert
+inbetween of individual records.")
+
+(defun chess-file-handler (event &rest args)
+  "Event handler for file database objects."
+  (cond
+   ((eq event 'open)
+    (with-current-buffer (find-file-noselect (car args))
+      (when (setq chess-file-type
+                 (cond
+                  ((or (string-match "\\.pgn\\'" (car args))
+                       (save-excursion (re-search-forward "^\\[Event" nil t)))
+                   'pgn)
+                  ((string-match "\\.epd\\'" (car args))
+                   'epd)))
+       (chess-file-handler 'rescan)
+       (current-buffer))))
+
+   ((eq event 'rescan)
+    (save-excursion
+      (goto-char (point-min))
+      (setq chess-file-locations nil)
+      (while (re-search-forward (nth 1 (assq chess-file-type chess-file-types))
+                               nil t)
+       (goto-char (match-beginning 0))
+       (push (point) chess-file-locations)
+       (forward-char 1))
+      (setq chess-file-locations (nreverse chess-file-locations))))
+
+   ((eq event 'read-only-p)
+    buffer-read-only)
+
+   ((eq event 'filename)
+    buffer-file-name)
+
+   ((eq event 'save)
+    (save-buffer))
+
+   ((eq event 'count)
+    (length chess-file-locations))
+
+   ((eq event 'read)
+    (let ((index (car args)) game)
+      (when (and (>= index 0)
+                (< index (chess-file-handler 'count)))
+       (goto-char (nth index chess-file-locations))
+       (when (setq game (funcall (nth 2 (assq chess-file-type
+                                              chess-file-types))))
+         (chess-game-set-data game 'database (current-buffer))
+         (chess-game-set-data game 'database-index index)
+         (chess-game-set-data game 'database-count
+                              (chess-file-handler 'count))
+         game))))
+
+   ((eq event 'write)
+    (goto-char (point-max))
+    (while (memq (char-before) '(?  ?\t ?\n ?\r))
+      (delete-char -1))
+    (apply 'insert (nth 4 (assq chess-file-type chess-file-types)))
+    (push (point) chess-file-locations)
+    (funcall (nth 3 (assq chess-file-type chess-file-types)) (car args))
+    (1- (chess-file-handler 'count)))
+
+   ((eq event 'replace)
+    (let ((index (or (cadr args)
+                    (chess-game-data (car args) 'database-index)))
+         (count (chess-file-handler 'count)))
+      (when (and (>= index 0)
+                (< index count))
+       (goto-char (nth index chess-file-locations))
+       (delete-region (point) (if (= (1+ index) count)
+                                  (point-max)
+                                (nth (1+ index) chess-file-locations)))
+       (funcall (nth 3 (assq chess-file-type chess-file-types)) (car args))
+       (when (eq chess-file-type 'pgn) (insert ?\n)))))))
+
+(provide 'chess-file)
+
+;;; chess-file.el ends here
diff --git a/packages/chess/chess-fruit.el b/packages/chess/chess-fruit.el
new file mode 100644
index 0000000..6c35445
--- /dev/null
+++ b/packages/chess/chess-fruit.el
@@ -0,0 +1,59 @@
+;;; chess-fruit.el --- Play against fruit!
+
+;; Copyright (C) 2014  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'chess-uci)
+
+(defgroup chess-fruit nil
+  "The publically available chess engine 'fruit'."
+  :group 'chess-engine
+  :link '(url-link "http://www.fruitchess.com/";))
+
+(defcustom chess-fruit-path (executable-find "fruit")
+  "*The path to the fruit executable."
+  :type 'file
+  :group 'chess-fruit)
+
+(defvar chess-fruit-regexp-alist chess-uci-regexp-alist
+  "Patterns used to match engine output.")
+
+(defun chess-fruit-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-uci-handler game 'initialize "fruit")))
+       (when (and proc (processp proc) (eq (process-status proc) 'run))
+         (process-send-string proc "uci\n")
+         (setq chess-engine-process proc)
+         t)))
+
+     (t
+      (if (and (eq event 'undo)
+              (= 1 (mod (car args) 2)))
+         (error "Cannot undo until after fruit moves"))
+
+      (apply 'chess-uci-handler game event args)))))
+
+(provide 'chess-fruit)
+
+;;; chess-fruit.el ends here
diff --git a/packages/chess/chess-game.el b/packages/chess/chess-game.el
new file mode 100644
index 0000000..39c7b2d
--- /dev/null
+++ b/packages/chess/chess-game.el
@@ -0,0 +1,333 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Maintain a chess game that is being played or viewed
+;;
+
+;;; Commentary:
+
+;; A chess game is represented by a set of tags that describe the
+;; game, and a list of plies representing the main variation.
+
+(eval-when-compile
+  (require 'cl))
+(require 'chess-ply)
+(require 'chess-pgn)
+
+(defvar chess-game-inhibit-events nil)
+
+(defconst chess-game-default-tags
+  `(("Event"      . "Computer chess game")
+    ("Round"      . "-")
+    ("Site"       . ,(system-name))
+    ("White"      . "?")
+    ("Black"      . "?")
+    ("Result"     . "*")
+    ("TimeControl" . "-")))
+
+(defsubst chess-game-hooks (game)
+  "Return the event hooks associated with GAME."
+  (assert game)
+  (car game))
+
+(defsubst chess-game-set-hooks (game hooks)
+  "Set the event hooks associated with GAME."
+  (assert game)
+  (assert (or hooks (eq hooks nil)))
+  (setcar game hooks))
+
+(defun chess-game-add-hook (game function &optional data prepend)
+  "Add to GAME an event hook FUNCTION."
+  (assert game)
+  (assert function)
+  (let ((hooks (chess-game-hooks game)))
+    (if (null hooks)
+       (chess-game-set-hooks game (list (cons function data)))
+      (if prepend
+         (chess-game-set-hooks game (cons (cons function data) hooks))
+       (nconc hooks (list (cons function data)))))))
+
+(defun chess-game-remove-hook (game function &optional data)
+  "Remove from GAME all event hooks that match FUNCTION.
+If DATA is specified, only remove those hooks whose associated data
+matches."
+  (assert game)
+  (assert function)
+  (let* ((hooks (chess-game-hooks game))
+        (h hooks) last-hook)
+    (while h
+      (if (and (eq (caar h) function)
+              (or (null data)
+                  (eq data (cdar h))))
+         (if last-hook
+             (setcdr last-hook (cdr h))
+           (setq hooks (cdr h)))
+       (setq last-hook h))
+      (setq h (cdr h)))
+    (chess-game-set-hooks game hooks)))
+
+(defsubst chess-game-run-hooks (game &rest args)
+  "Run the event hooks of GAME and pass ARGS."
+  (assert game)
+  (unless chess-game-inhibit-events
+    (let (result)
+      (dolist (hook (chess-game-hooks game) result)
+       (setq result (apply (car hook) game (cdr hook) args))))))
+
+(defsubst chess-game-tags (game)
+  "Return the tags alist associated with GAME."
+  (assert game)
+  (cadr game))
+
+(defsubst chess-game-set-tags (game tags)
+  "Set the tags alist associated with GAME.
+After the TAGS alist was set the 'set-tags event is triggered."
+  (assert game)
+  (assert (or tags (eq tags nil)))
+  (setcar (cdr game) tags)
+  (chess-game-run-hooks game 'set-tags))
+
+(defsubst chess-game-tag (game tag)
+  "Return the value for TAG in GAME."
+  (assert game)
+  (assert tag)
+  (let ((tags (chess-game-tags game)))
+    (and tags (cdr (assoc tag tags)))))
+
+(defun chess-game-set-tag (game tag value)
+  "Set TAG for GAME to VALUE."
+  (assert game)
+  (assert tag)
+  (assert value)
+  (let ((tags (chess-game-tags game)))
+    (if (null tags)
+       (chess-game-set-tags game (list (cons tag value)))
+      (let ((entry (assoc tag tags)))
+       (if entry
+           (setcdr entry value)
+         (nconc tags (list (cons tag value)))))))
+  (chess-game-run-hooks game 'set-tag tag))
+
+(defsubst chess-game-del-tag (game tag)
+  "Delete TAG from GAME."
+  (assert game)
+  (assert tag)
+  (chess-game-set-tags game (assq-delete-all tag (chess-game-tags game)))
+  (chess-game-run-hooks game 'delete-tag tag))
+
+
+(defsubst chess-game-data-alist (game)
+  "Return the data alist associated with GAME."
+  (assert game)
+  (nth 2 game))
+
+(defsubst chess-game-set-data-alist (game value)
+  "Set the data alist associated with GAME."
+  (assert game)
+  (setcar (nthcdr 2 game) value))
+
+(defun chess-game-set-data (game key value)
+  "Set GAME data KEY to VALUE."
+  (assert game)
+  (assert (symbolp key))
+  (let* ((alist (chess-game-data-alist game))
+        (cell (assq key alist)))
+    (if cell
+       (setcdr cell value)
+      (if (null alist)
+         (setcar (nthcdr 2 game) (list (cons key value)))
+       (push (cons key value) alist)
+       (setcar (nthcdr 2 game) alist)))
+    (chess-game-run-hooks game 'set-data key)
+    value))
+
+(defun chess-game-data (game key)
+  "Return the value of GAME data KEY."
+  (assert game)
+  (assert (symbolp key))
+  (let ((alist (chess-game-data-alist game)))
+    (if alist
+       (cdr (assq key alist)))))
+
+(defun chess-game-del-data (game key)
+  "Delete KEY from GAME's data alist."
+  (assert game)
+  (assert (symbolp key))
+  (let ((alist (chess-game-data-alist game)))
+    (if alist
+       (assq-delete-all key alist))))
+
+
+(defsubst chess-game-plies (game)
+  "Return the main variation of GAME as a list of plies."
+  (assert game)
+  (nth 3 game))
+
+(defalias 'chess-game-main-var 'chess-game-plies)
+
+(defsubst chess-game-set-plies (game plies)
+  "Set the list of plies which represents the main variation of GAME."
+  (assert game)
+  (setcdr (nthcdr 2 game) (if plies (list plies) nil))
+  (chess-game-run-hooks game 'setup-game game))
+
+(defsubst chess-game-set-start-position (game position)
+  "Set the initial POSITION of GAME."
+  (assert game)
+  (assert (vectorp position))
+  (chess-game-set-plies game (list (chess-ply-create* position))))
+
+(defsubst chess-game-pos (game &optional index)
+  "Return the current position of GAME or a position of a given INDEX."
+  (assert game)
+  (chess-ply-pos (chess-game-ply game index)))
+
+(defun chess-game-status (game &optional index)
+  "Return a symbol, such as :checkmate, :resign, etc.
+This conveys the status of the game at the given INDEX."
+  (assert game)
+  (or (chess-pos-status (chess-game-pos game index))
+      (chess-ply-final-p (chess-game-ply game index))))
+
+(defsubst chess-game-index (game)
+  "Return the GAME's current position index."
+  (assert game)
+  (1- (length (chess-game-plies game))))
+
+(defsubst chess-game-seq (game)
+  "Return the current GAME sequence."
+  (assert game)
+  (/ (+ 2 (chess-game-index game)) 2))
+
+(defsubst chess-game-side-to-move (game &optional index)
+  "Return the color whose move it is in GAME at INDEX (or at the last position
+if INDEX is nil)."
+  (assert game)
+  (chess-pos-side-to-move (chess-game-pos game index)))
+
+(defun chess-game-ply (game &optional index)
+  "Return a ply of GAME.
+If INDEX is non-nil, the last played ply is returned."
+  (assert game)
+  (if index
+      (nth index (chess-game-plies game))
+    (car (last (chess-game-plies game)))))
+
+(defun chess-game-add-ply (game ply)
+  "Return the position related to GAME's INDEX position."
+  (assert game)
+  (assert (listp ply))
+  (let ((plies (chess-game-plies game)))
+    (if plies
+       (nconc plies (list ply))
+      (let ((chess-game-inhibit-events t))
+       (chess-game-set-plies game (list ply))))))
+
+(chess-message-catalog 'english
+  '((undo-limit-reached . "Cannot undo further")
+    (add-to-completed  . "Cannot add moves to a completed game")))
+
+(defun chess-game-undo (game count)
+  "Undo the last COUNT plies of GAME."
+  (assert game)
+  (assert (integerp count))
+  (assert (> count 0))
+  (if (> count (chess-game-index game))
+      (chess-error 'undo-limit-reached))
+  (let ((chess-game-inhibit-events t))
+    (chess-game-set-plies game (nbutlast (chess-game-plies game) count)))
+  (chess-game-run-hooks game 'post-undo count))
+
+
+(defun chess-game-strip-annotations (game)
+  "Strip all annotations from the given GAME."
+  (assert game)
+  (dotimes (i (chess-game-index game))
+    (let ((position (chess-game-pos game i)))
+      (chess-pos-set-annotations position nil))))
+
+
+(defsubst chess-game-over-p (game)
+  "Return non-nil if GAME is at a final positionn."
+  (assert game)
+  (let ((last-ply (car (last (nth 3 game) 2))))
+    (and last-ply (chess-ply-final-p last-ply))))
+
+
+(defsubst chess-game-to-string (game &optional indented)
+  "Convert GAME to a string in PGN format."
+  (assert game)
+  (chess-game-to-pgn game indented t))
+
+(defsubst chess-game-from-string (pgn)
+  "Convert a PGN format string to a chess game object."
+  (assert (stringp pgn))
+  (chess-pgn-to-game pgn))
+
+
+(defsubst chess-game-copy-game (game new-game)
+  (assert game)
+  (assert new-game)
+  (chess-game-set-tags game (chess-game-tags new-game))
+  (chess-game-set-plies game (chess-game-plies new-game)))
+
+(defun chess-game-create (&optional position tags)
+  "Create a new chess game object.
+Optionally use the given starting POSITION (see also
+`chess-game-set-start-position').
+TAGS is the starting set of game tags (which can always be changed
+later using the various tag-related methods)."
+  (let ((game (list nil tags nil
+                   (list (chess-ply-create* (or position
+                                                chess-starting-position))))))
+    (dolist (tag (cons (cons "Date" (format-time-string "%Y.%m.%d"))
+                      chess-game-default-tags))
+      (unless (chess-game-tag game (car tag))
+       (chess-game-set-tag game (car tag) (cdr tag))))
+    game))
+
+(defun chess-game-move (game ply)
+  "Make a move in the current GAME using PLY.
+This creates a new position and adds it to the main variation.
+The 'changes' of the last ply reflect whether the game is currently in
+progress (nil), if it is drawn, resigned, mate, etc."
+  (assert game)
+  (assert (listp ply))
+  (let ((current-ply (chess-game-ply game))
+       (position (chess-ply-pos ply))
+       (changes (chess-ply-changes ply)))
+
+    (assert current-ply)
+    (assert (and position (eq position (chess-ply-pos current-ply))))
+    (assert changes)
+
+    (if (chess-ply-final-p current-ply)
+       (chess-error 'add-to-completed))
+
+    (chess-ply-set-changes current-ply changes)
+    (unless (chess-ply-any-keyword ply :drawn :perpetual :repetition
+                                  :resign :aborted :flag-fell)
+      (chess-game-add-ply game (chess-ply-create*
+                               (chess-ply-next-pos current-ply))))
+
+    (let ((long (> (length changes) 2)))
+      (cond
+       ((and long (chess-ply-any-keyword ply :resign :checkmate))
+       (let ((color (chess-game-side-to-move game)))
+         (if (chess-ply-any-keyword ply :resign :flag-fell)
+             (chess-game-set-tag game "Result" (if color "0-1" "1-0"))
+           (chess-game-set-tag game "Result" (if color "1-0" "0-1")))))
+       ((and long (chess-ply-any-keyword ply :drawn :perpetual :repetition
+                                        :stalemate))
+       (chess-game-set-tag game "Result" "1/2-1/2"))))
+
+    (if (chess-ply-keyword ply :resign)
+       (chess-game-run-hooks game 'resign)
+      (chess-game-run-hooks game 'move current-ply))))
+
+(defsubst chess-game-end (game keyword)
+  "End GAME, by resignation, draw, etc."
+  (chess-game-move game (list (chess-game-pos game) keyword)))
+
+(provide 'chess-game)
+
+;;; chess-game.el ends here
diff --git a/packages/chess/chess-german.el b/packages/chess/chess-german.el
new file mode 100644
index 0000000..7598bf9
--- /dev/null
+++ b/packages/chess/chess-german.el
@@ -0,0 +1,121 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; German translation of the chess.el message catalog
+;;
+
+(require 'chess-message)
+
+(chess-message-catalog 'german
+  '((queen                 . "Dame")
+    (king                  . "König")
+    (bishop                . "Läufer")
+    (knight                . "Springer")
+    (rook                  . "Turm")
+    (pawn                  . "Bauer")
+    (short-castle           . "Kurze Rochade")
+    (long-castle            . "Lange Rochade")
+    (check                 . "Schach")
+    (checkmate             . "Schach matt")
+    (stalemate             . "Patt")
+    (en-passant                    . "on possont")
+    (piece-moves            . "%s nach %s")
+    (piece-takes            . "%s schlägt %s auf %s")
+
+    (add-to-completed      . "Kann keine Züge zu abgeschlossenem Spiel 
hinzufügen")
+    (bad-game-read         . "Beim lesen des Spiels ist ein Fehler an Position 
%d aufgetreten")
+    (cannot-mount          . "Es ist nicht Möglich eine Figur auf die andere 
zu stellen")
+    (cannot-yet-add        . "Kann noch keine Züge zu Spiel hinzufügen")
+    (challenge-whom        . "Wehn willst du herausfordern? ")
+    (chess-delete-autosave  . "Soll die autosave Datei gelöscht werden? ")
+    (chess-disable-autosave . "Disable autosaving for this game? ")
+    (chess-read-autosave    . "Es existiert eine Schach autosave Datei, soll 
sie geladen werden? ")
+    (clarify-piece         . "Clarify piece to move by rank or file")
+    (congratulations       . "Gratulation!")
+    (could-not-clarify     . "Could not determine which piece to use")
+    (could-not-diff        . "Could not differentiate piece")
+    (could-not-find-engine  . "Cannot find %s executable; check `%s'")
+    (could-not-read-pgn     . "Kann PGN Datei nicht lesen oder finden")
+    (draw-offer                    . "Du bietest ein Unentschieden an")
+    (draw-offer-declined    . "Dein Angebot zum Unentschieden wurde abgelehnt")
+    (editing-directly      . "Now editing position directly, use S when 
complete...")
+    (end-of-puzzles        . "Es gibt keine weiteren Puzzles in dieser 
Sammlung")
+    (engine-not-running     . "Die Engine die Du verwendet hast läuft nicht 
mehr")
+    (failed-start          . "Failed to start chess engine process")
+    (game-is-over          . "Dieses Spiel ist abgeschlossen")
+    (ics-connected         . "Verbindungsaufbau mit Internet Chess Server 
'%s'...done")
+    (ics-connecting        . "Verbindungsaufbau mit Internet Chess Server 
'%s'...")
+    (ics-server-prompt     . "Verbindung zu Schach Server: ")
+    (illegal-move          . "Illegalaler Zug")
+    (illegal-notation      . "Illegale Zug notation: %s")
+    (invalid-fen           . "Ungültiger FEN string: %s")
+    (invalid-pgn           . "Ungültiger PGN text empfangen")
+    (irc-challenge         . "IRC nick of user to challenge: ")
+    (irc-connecting        . "Verbindungsaufbau mit IRC server '%s:%d'...")
+    (irc-logging-in        . "Connected, now logging in as '%s'...")
+    (irc-waiting           . "Now waiting for 'name USER' via /msg, or `M-x 
chess-irc-engage'")
+    (knight-1-done         . "Goal: take all the pawns, without letting the 
queen take your knight")
+    (mode-black                    . "Schwarz")
+    (mode-checkmate        . "SCHACHMATT")
+    (mode-drawn                    . "DRAWN")
+    (mode-edit             . "EDIT")
+    (mode-flag-fell        . "FLAG FELL")
+    (mode-resigned         . "RESIGNED")
+    (mode-stalemate        . "PATT")
+    (mode-start                    . "START")
+    (mode-white                    . "Weiß")
+    (move-from-blank       . "Du versuchst eine Figur vom leeren Feld %s zu 
bewegen")
+    (move-not-legal        . "Dies ist kein legaler Zug")
+    (move-passed           . "Your opponent has passed the move to you")
+    (network-starting      . "Starting network client/server...")
+    (network-waiting       . "Now waiting for your opponent to connect...")
+    (no-candidates         . "There are no candidate moves for '%s'")
+    (no-engines-found      . "Could not find any chess engines to play 
against; install gnuchess!")
+    (no-images             . "Cannot find any piece images; check 
`chess-images-directory'")
+    (no-images-fallback     . "Could not find any suitable or properly sized 
chess images")
+    (no-such-database      . "There is no such chess database module '%s'")
+    (no-such-module        . "There is no module named '%s'")
+    (no-such-style         . "There is no such chessboard display style '%s'")
+    (not-your-move         . "It is not your turn to move")
+    (now-black             . "Dein Gegner hat den ersten Zug gemacht, du bist 
nun Schwarz")
+    (opp-abort             . "Dein Gegner will das Spiel abbrechen, 
akzeptierst Du? ")
+    (opp-abort-acc         . "Your offer to abort was accepted")
+    (opp-abort-dec         . "Your offer to abort was declined")
+    (opp-abort-ret         . "Your opponent has retracted their offer to 
abort")
+    (opp-draw              . "Dein Gegner bietet ein Unentschieden an, willst 
Du annehmen? ")
+    (opp-draw-acc          . "Dein Remie Angebot wurde akzeptiert")
+    (opp-draw-dec          . "Your draw offer was declined")
+    (opp-draw-ret          . "Your opponent has retracted their draw offer")
+    (opp-illegal           . "Your opponent states your last command was 
illegal")
+    (opp-quit              . "Your opponent has quit playing")
+    (opp-ready             . "%s ist nun bereits zu spielen")
+    (opp-ready-a           . "Dein Anonymer Gegner ist nun bereit zu spielen")
+    (opp-resigned          . "Dein Gegner hat aufgegeben")
+    (opp-undo              . "Dein Gegner will %d Züge zurück nehmen, 
akzeptierst Du? ")
+    (opp-undo-acc          . "Request to undo %d moves was accepted")
+    (opp-undo-dec          . "Your request to undo %d moves was decline")
+    (opp-undo-ret          . "Your opponent has retracted their request to 
undo %d moves")
+    (opponent-says         . "Dein Gegner sagt: %s")
+    (pawn-promote-query     . "Promote pawn to queen/rook/knight/bishop? ")
+    (pgn-parse-error       . "Error parsing PGN syntax")
+    (pgn-read-error        . "Error reading move: %s")
+    (piece-images-loaded    . "Loading chess piece images...done")
+    (piece-images-loading   . "Loading chess piece images...")
+    (piece-immobile        . "That piece cannot move now")
+    (piece-unrecognized     . "Unrecognized piece identifier")
+    (queen-would-take      . "Die Dame würde deinen Springer schlagen!")
+    (redrawing-frame       . "Redrawing chess display with different size...")
+    (redrawing-frame-done   . "Redrawing chess display with different 
size...done")
+    (return-to-current     . "Use '>' to return to the current position")
+    (san-not-found         . "Could not find a matching move")
+    (selected-empty        . "You cannot select an empty square")
+    (starting-engine       . "Starting chess program '%s'...")
+    (starting-engine-done   . "Starting chess program '%s'...done")
+    (undo-limit-reached     . "Cannot undo further")
+    (want-to-play          . "Willst Du eine Partie Schach gegen %s spielen? ")
+    (want-to-play-a        . "Willst Du eine Partie Schach gegen einen 
Anonymen Gegner spielen? ")
+    (want-to-quit          . "Do you really want to quit? ")
+    (wrong-color           . "Du kannst die Figuren deines Gegners nicht 
bewegen")))
+
+(provide 'chess-german)
+
+;;; chess-german.el ends here
diff --git a/packages/chess/chess-glaurung.el b/packages/chess/chess-glaurung.el
new file mode 100644
index 0000000..f3ff03e
--- /dev/null
+++ b/packages/chess/chess-glaurung.el
@@ -0,0 +1,59 @@
+;;; chess-glaurung.el --- Play against glaurung!
+
+;; Copyright (C) 2014  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'chess-uci)
+
+(defgroup chess-glaurung nil
+  "The publically available chess engine 'glaurung'."
+  :group 'chess-engine
+  :link '(url-link "http://www.glaurungchess.com/";))
+
+(defcustom chess-glaurung-path (executable-find "glaurung")
+  "*The path to the glaurung executable."
+  :type 'file
+  :group 'chess-glaurung)
+
+(defvar chess-glaurung-regexp-alist chess-uci-regexp-alist
+  "Patterns used to match engine output.")
+
+(defun chess-glaurung-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-uci-handler game 'initialize "glaurung")))
+       (when (and proc (processp proc) (eq (process-status proc) 'run))
+         (process-send-string proc "uci\n")
+         (setq chess-engine-process proc)
+         t)))
+
+     (t
+      (if (and (eq event 'undo)
+              (= 1 (mod (car args) 2)))
+         (error "Cannot undo until after glaurung moves"))
+
+      (apply 'chess-uci-handler game event args)))))
+
+(provide 'chess-glaurung)
+
+;;; chess-glaurung.el ends here
diff --git a/packages/chess/chess-gnuchess.el b/packages/chess/chess-gnuchess.el
new file mode 100644
index 0000000..2d5538f
--- /dev/null
+++ b/packages/chess/chess-gnuchess.el
@@ -0,0 +1,83 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Play against gnuchess!
+;;
+
+(require 'chess-common)
+
+(defgroup chess-gnuchess nil
+  "The publically available chess engine 'gnuchess'."
+  :group 'chess-engine)
+
+(defcustom chess-gnuchess-path (let ((exec-path (cons "/usr/games" exec-path)))
+                                (executable-find "gnuchess"))
+  "*The path to the gnuchess executable."
+  :type 'file
+  :group 'chess-gnuchess)
+
+(defvar chess-gnuchess-bad-board nil)
+(make-variable-buffer-local 'chess-gnuchess-bad-board)
+
+(defvar chess-gnuchess-regexp-alist
+  (list
+   (cons (concat "My move is : \\(" chess-algebraic-regexp "\\)")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-engine-convert-algebraic (match-string 1) t)))))
+   (cons "Illegal move:"
+        (function
+         (lambda ()
+           (chess-error 'illegal-move))))
+   (cons "Board is wrong!"
+        (function
+         (lambda ()
+           ;; gnuchess didn't like the given position, which
+           ;; means it won't play against it unless we send a
+           ;; "go" after the user's move
+           (setq chess-gnuchess-bad-board t))))))
+
+(defun chess-gnuchess-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-common-handler game 'initialize "gnuchess")))
+       (when (and proc (processp proc)
+                  (eq (process-status proc) 'run))
+         (process-send-string proc "nopost\n")
+         (setq chess-engine-process proc
+               chess-engine-opponent-name "GnuChess")
+         t)))
+
+     ((eq event 'setup-pos)
+      (let ((file (chess-with-temp-file
+                     (insert (chess-pos-to-string (car args)) ?\n))))
+       (chess-engine-send nil (format "epdload %s\n" file))))
+
+     ((eq event 'setup-game)
+      (if (zerop (chess-game-index (car args)))
+         (chess-gnuchess-handler game 'setup-pos (chess-game-pos game 0))
+       (let ((file (chess-with-temp-file
+                       (insert (chess-game-to-string (car args)) ?\n))))
+         (chess-engine-send nil (format "pgnload %s\n" file)))))
+
+     ((eq event 'pass)
+      (chess-engine-send nil (concat (if (chess-pos-side-to-move
+                                         (chess-engine-position nil))
+                                        "white" "black")
+                                    "\n"))
+      (chess-engine-send nil "go\n")
+      (setq chess-gnuchess-bad-board nil))
+
+     ((eq event 'move)
+      (chess-common-handler game 'move (car args))
+      (when chess-gnuchess-bad-board
+       (chess-engine-send nil "go\n")
+       (setq chess-gnuchess-bad-board nil)))
+
+     (t
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-gnuchess)
+
+;;; chess-gnuchess.el ends here
diff --git a/packages/chess/chess-ics.el b/packages/chess/chess-ics.el
new file mode 100644
index 0000000..98fe73e
--- /dev/null
+++ b/packages/chess/chess-ics.el
@@ -0,0 +1,1085 @@
+;;; chess-ics.el --- An engine for interacting with Internet Chess Servers
+
+;; Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
+
+;; Author: John Wiegley
+;; Maintainer: Mario Lang <address@hidden>
+;; Keywords: games, processes
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+(require 'cl-lib)
+(require 'comint)
+
+(require 'chess)
+(require 'chess-network)
+(require 'chess-pos)
+
+(eval-when-compile
+  (require 'rx)
+  (require 'sort))
+
+(defgroup chess-ics nil
+  "Engine for interacting with Internet Chess Servers."
+  :group 'chess-engine)
+
+(defcustom chess-ics-server-list '(("freechess.org" 5000)
+                                  ("chess.unix-ag.uni-kl.de" 5000)
+                                  ("chessclub.com" 5000)
+                                  ("chess.net" 5000)
+                                  ("oics.olympuschess.com" 5000))
+  "A list of servers to connect to.
+The format of each entry is:
+
+  (SERVER PORT [HANDLE] [PASSWORD-OR-FILENAME] [HELPER] [HELPER ARGS...])"
+  :type '(repeat (list (string :tag "Server")
+                      (integer :tag "Port")
+                      (choice (const :tag "Login as guest" nil)
+                              (string :tag "Handle"))
+                      (choice (const :tag "No password or ask" nil)
+                              (string :tag "Password")
+                              (file :tag "Filename"))
+                      (choice (const :tag "Direct connection" nil)
+                              (file :tag "Command"))
+                      (choice (const :tag "No arguments" nil)
+                              (repeat string))))
+  :group 'chess-ics)
+
+
+
+(defcustom chess-ics-initial-commands
+  (list
+   (list "freechess.org"
+        "iset defprompt 1"  ; So we can't be supprised by a user setting
+        (format "set interface emacs-chess %s" chess-version)
+        "iset seekremove 1" ; For real-time sought display
+        "iset startpos 1"   ; Sends initial position before movelist
+        "set style 12"      ; So we can parse the board "easily"
+        "set bell 0")       ; We have our own way of announcing events
+   (list "chessclub.com"
+        (format "/set-quietly interface emacs-chess %s" chess-version)
+        "/set-quietly style 12"      ; So we can parse the board "easily"
+        "/set-quietly bell 0")
+   (list nil
+        (format "set interface emacs-chess %s" chess-version)
+        "set style 12"      ; So we can parse the board "easily"
+        "set bell 0"))
+  "A list of commands to send automatically upon successful login.
+The format is (SERVER COMMANDS...) where SERVER is either the server-name
+\(see `chess-ics-server-list') or nil, which is the default to use for all
+servers which do not have a specialized entry in this list.  COMMAND is a
+string which should be sent (newline characters will be added automatically.)"
+  :group 'chess-ics
+  :type '(repeat
+         (list :tag "Initialisation for"
+               (choice (string :tag "Server Name") (const :tag "Default" nil))
+               (repeat :inline t (string :tag "Command")))))
+
+(defcustom chess-ics-prompt-regexp "\\(?:[0-2][0-9]:[0-6][0-9]_\\)?[af]ics% $"
+  "*Regexp which matches an ICS prompt."
+  :group 'chess-ics
+  :type 'regexp)
+
+(defvar chess-ics-server nil
+  "The ICS server name of this connection.")
+(make-variable-buffer-local 'chess-ics-server)
+
+(defvar chess-ics-handle nil
+  "The ICS handle of this connection.")
+(make-variable-buffer-local 'chess-ics-handle)
+
+(defvar chess-ics-password nil
+  "Password to use to identify to the server.")
+(make-variable-buffer-local 'chess-ics-password)
+
+(defvar chess-ics-handling-login nil
+  "Non-nil if we are currently handling the ICS login sequence.")
+(make-variable-buffer-local 'chess-ics-handling-login)
+
+(defvar chess-ics-server-type 'FICS
+  "The type of chss server we are about to connect too.
+Possible values are currently FICS (the default, and best supported)
+and ICC.")
+(make-variable-buffer-local 'chess-ics-server-type)
+
+(defcustom chess-ics-icc-datagrams '(22 23 26 33 50 51 56 110 111)
+  "*A list of datagrams to request when connecting to ICC."
+  :group 'chess-ics
+  :type '(repeat (choice (const :tag "DG_SEND_MOVES" 24)
+                        (const :tag "DG_KIBITZ" 26)
+                        (const :tag "DG_MOVE_ALGEBRAIC" 33)
+                        (const :tag "DG_SEEK" 50)
+                        (const :tag "DG_SEEK_REMOVED" 51)
+                        (const :tag "DG_MSEC" 56)
+                        (const :tag "DG_POSITION_BEGIN" 101)
+                        (const :tag "DG_POSITION_BEGIN2" 110)
+                        (const :tag "DG_PAST_MOVE" 111))))
+
+(defvar chess-ics-movelist-game-number nil
+  "If we are about to receive a movelist, this variable is set to the
+game number.")
+(make-variable-buffer-local 'chess-ics-movelist-game-number)
+
+(defvar chess-ics-movelist-game nil
+  "If we are receiving a movelist, this variable is set to the game object.")
+(make-variable-buffer-local 'chess-ics-movelist-game)
+
+(defvar chess-ics-movelist-start-position chess-starting-position
+  "The starting position to use upon receiving of a movelist.
+It is possible to configure certain servers to automatically send a
+style12 board before sending a movelist, to allow retrieval of
+the movelist for a non-standard game (one which does not start at the
+standard position).  In those cases, this variable should be set to nil.")
+(make-variable-buffer-local 'chess-ics-movelist-start-position)
+
+(defsubst chess-ics-send (string &optional buffer)
+  "Send STRING to the ICS server."
+  (comint-send-string (get-buffer-process (or buffer (current-buffer)))
+                     (concat string "\n")))
+
+(chess-message-catalog 'english
+  '((ics-server-prompt . "Connect to chess server: ")
+    (ics-connecting    . "Connecting to Internet Chess Server '%s'...")
+    (ics-connected     . "Connecting to Internet Chess Server '%s'...done")
+    (ics-anon-login    . "Logging in on Internet Chess Server '%s' as 
anonymous user...")
+    (ics-logging-in    . "Logging in on Internet Chess Server '%s' as '%s'...")
+    (ics-logged-in     . "Logging in on Internet Chess Server '%s' as 
'%s'...done")
+    (challenge-whom    . "Whom would you like challenge? ")
+    (failed-ics-parse  . "Failed to parse ICS move string (%s): ")))
+
+(defconst chess-ics-style12-regexp
+  (rx (and "<12> "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (repeat 8 (in "-pnbrqkPNBRQK"))) " "
+          (group (in "BW")) " "
+          (group (and (? ?-) (in "0-7"))) " "
+          (group (and (? ?-) digit)) " "
+          (group (and (? ?-) digit)) " "
+          (group (and (? ?-) digit)) " "
+          (group (and (? ?-) digit)) " "
+          (group (+ digit)) " "
+          (group (+ digit)) " "
+          (group (+ (not (in " ")))) " "
+          (group (+ (not (in " ")))) " "
+          (group (and (? ?-) digit)) " "
+          (group (+ digit)) " "
+          (group (+ digit)) " "
+          (group (+ digit)) " "
+          (group (+ digit)) " "
+          (group (and (? ?-) (+ digit))) " "
+          (group (and (? ?-) (+ digit))) " "
+          (group (+ digit)) " "
+          (group (+ (not (in " ")))) " "
+          "(" (group (+ (not (in " )")))) ") "
+          (group (+ (not (in " ")))) " "
+          (group (and (? ?-) digit))
+          (optional (and " " (group (and (? ?-) digit)) " "
+                         (group (and (? ?-) (+ digit)))))))
+  "A regular expression matching a style12 board string.")
+
+(defvar chess-ics-matcher-alist
+  (list
+   (cons "www.chessclub.com"
+        (function
+         (lambda ()
+           (when chess-ics-handling-login
+             (setq chess-ics-server-type 'ICC
+                   comint-preoutput-filter-functions
+                   '(chess-icc-preoutput-filter)))
+           'once)))
+   (cons "\\(ogin\\|name\\):"
+        (function
+         (lambda ()
+           (when (eq chess-ics-server-type 'ICC)
+             (chess-ics-send
+              (format "level2settings=%s"
+                      (let ((str (make-string
+                                  (1+ (apply 'max chess-ics-icc-datagrams))
+                                  ?0)))
+                        (dolist (dg chess-ics-icc-datagrams str)
+                          (aset str dg ?1))))))
+           (if (string= "guest" chess-ics-handle)
+               (chess-message 'ics-anon-login chess-ics-server)
+             (chess-message
+              'ics-logging-in chess-ics-server chess-ics-handle))
+           (chess-ics-send chess-ics-handle)
+           'once)))
+   (cons "[Pp]assword:"
+        (function
+         (lambda ()
+           (when chess-ics-handling-login
+             (chess-ics-send chess-ics-password))
+           'once)))
+   (cons "\\(Logging you in as\\|Your name for this session will be\\) 
\"\\([^\"]+\\)\""
+        (function
+         (lambda ()
+           (setq chess-ics-handle (match-string 2))
+           'once)))
+   (cons "Press return to enter the server as"
+        (function
+         (lambda ()
+           (chess-ics-send "")
+           'once)))
+   (cons "Press return to enter chess.net as \"\\([^\"]+\\)\":"
+        (function
+         (lambda ()
+           (setq chess-ics-handle (match-string 1))
+           (chess-ics-send "")
+           'once)))
+   (cons "%\\s-*$"
+        (function
+         (lambda ()
+           (chess-ics-send
+            (mapconcat 'identity
+                       (cdr
+                        (or
+                         (assoc chess-ics-server chess-ics-initial-commands)
+                         (assoc nil chess-ics-initial-commands))) "\n"))
+           (setq chess-ics-handling-login nil)
+           (chess-message 'ics-logged-in chess-ics-server chess-ics-handle)
+           'once)))
+   (cons "fics%\\s-+startpos set.$"
+        (function
+         (lambda ()
+           (setq chess-ics-movelist-start-position nil)
+           'once)))
+   (cons (concat "^Game [0-9]+: \\S-+ moves: " chess-algebraic-regexp-entire)
+        (function
+         (lambda ()
+           (save-excursion
+             (while (and (forward-line -1)
+                         (or (looking-at "^[ \t]*$")
+                             (looking-at
+                              (concat "^" chess-ics-prompt-regexp))))
+               (delete-region (match-beginning 0) (1+ (match-end 0)))))
+           t)))
+   (cons 
"^\\([A-Za-z0-9]+\\)\\((\\*)\\|(B)\\|(CA?)\\|(H)\\|(DM)\\|(T[DM]?)\\|(SR)\\|(FM)\\|(W?[GI]M)\\|(U)\\|([0-9-]+)\\)*\\((\\([0-9]+\\))\\|
 tells you\\| s-shouts\\|\\[\\([0-9]+\\)\\] kibitzes\\): \\(.+\\)$"
+        (function
+         (lambda ()
+           (let ((fill-prefix (make-string
+                               (- (match-end 1) (match-beginning 1)) ? ))
+                 (game-num (match-string 5))
+                 (text-begin (match-beginning 6)))
+             (goto-char (match-beginning 0))
+             (save-excursion
+               (while (and (forward-line 1)
+                           (looking-at "^\\\\\\s-+"))
+                 (delete-region (1- (match-beginning 0)) (match-end 0))))
+             (when game-num
+               (chess-game-run-hooks
+                (chess-ics-game (string-to-number game-num))
+                'kibitz (buffer-substring text-begin (line-end-position))))
+             (when (> (- (line-end-position) (line-beginning-position))
+                      fill-column)
+               (save-excursion
+                (fill-region (point) (line-end-position))))
+             (save-excursion
+               (while (and (forward-line -1)
+                           (or (looking-at "^[ \t]*$")
+                               (looking-at "^[af]ics%\\s-*$")))
+                 (delete-region (match-beginning 0) (1+ (match-end 0)))))))))
+   (cons "{Game \\([0-9]+\\) (\\(\\S-+\\) vs\\. \\(\\S-+\\)) Creating [^ ]+ 
\\([^ ]+\\).*}"
+        (function
+         (lambda ()
+           (let ((game-number (string-to-number (match-string 1)))
+                 (white (match-string-no-properties 2))
+                 (black (match-string-no-properties 3)))
+             (message "Creating game %d (%s vs. %s)" game-number white black)
+             (chess-ics-game game-number :White white :Black black)))))
+   (cons "^<10>$" (function (lambda () (chess-ics-send "style 12\nrefresh"))))
+   (cons "^Game \\([0-9]+\\): \\S-+ backs up \\([0-9]+\\).$"
+        (function
+         (lambda ()
+           (chess-game-undo (chess-ics-game (string-to-number (match-string 
1)))
+                            (string-to-number (match-string 2))))))
+   (cons chess-ics-style12-regexp #'chess-ics-handle-style12)
+   (cons "Removing game \\([0-9]+\\) from observation list.$"
+        (function
+         (lambda ()
+           (chess-ics-game-destroy (string-to-number (match-string 1))))))
+   (cons "You are no longer examining game \\([0-9]+\\).$"
+        (function
+         (lambda ()
+           (chess-ics-game-destroy (string-to-number (match-string 1))))))
+   (cons "^Movelist for game \\([0-9]+\\):$"
+        (function
+         (lambda ()
+           (if (or chess-ics-movelist-game-number
+                   chess-ics-movelist-game)
+               (message "[movelist] left-over movelist-game[-number]")
+             (setq chess-ics-movelist-game-number
+                   (string-to-number (match-string 1)))))))
+   (cons "^Move\\s-+\\*?\\(\\S-+\\)\\s-+\\*?\\(\\S-+\\)\\s-*$"
+        (function
+         (lambda ()
+           (if (not chess-ics-movelist-game-number)
+               (progn
+                 (goto-char (match-beginning 0))
+                 (insert "(no game# known) "))
+             (setq chess-ics-movelist-game
+                   (chess-ics-game chess-ics-movelist-game-number
+                                   :White (match-string 1)
+                                   :Black (match-string 2)))
+             (when chess-ics-movelist-start-position
+             (chess-game-set-start-position
+              chess-ics-movelist-game chess-ics-movelist-start-position)))
+           t)))
+   ;; Movelist item
+   (cons (concat "^\\s-*\\([0-9]+\\)\\.\\s-+\\(" chess-algebraic-regexp "\\)"
+                "\\s-+\\(([0-9][0-9]?:[0-9][0-9])\\)\\s-*"
+                "\\(\\(" chess-algebraic-regexp "\\)\\s-+"
+                "\\(([0-9][0-9]?:[0-9][0-9])\\)\\s-*\\)?$")
+        #'chess-ics-handle-movelist-item)
+   (cons "\\s-+{Still in progress}\\s-+\\*$"
+        (function
+         (lambda ()
+           (if (integerp chess-ics-movelist-game-number)
+               (setq chess-ics-movelist-game-number nil
+                     chess-ics-movelist-game nil)
+             (message "[movelist] end of movelist seen where no game known 
about")))))
+   (cons "\\S-+ would like to take back \\([0-9]+\\) half move(s)."
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'undo
+                    (string-to-number (match-string 1))))))
+   (cons "The game has been aborted on move [^.]+\\."
+        (function
+         (lambda ()
+           (let ((chess-engine-pending-offer 'abort))
+             (funcall chess-engine-response-handler 'accept)))))
+   (cons "\\S-+ accepts the takeback request\\."
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'accept))))
+   (cons ;; resign announcement
+    "{Game \\([0-9]+\\) (\\(\\S-+\\) vs\\. \\(\\S-+\\)) \\(\\S-+\\) resigns}"
+    (function
+     (lambda ()
+       (let ((chess-engine-handling-event t)
+            (opponent-p (not (string= chess-ics-handle (match-string 4))))
+            (game (chess-ics-game (string-to-number (match-string 1))
+                                  :White (match-string 2)
+                                  :Black (match-string 3))))
+        (with-current-buffer (chess-game-data game 'engine)
+          (if opponent-p
+              (funcall chess-engine-response-handler 'resign)
+            (unless (chess-game-status game)
+              (chess-game-end game :resign))))
+        t))))
+   (cons "\\(\\S-+\\) forfeits on time}"
+        (function
+         (lambda ()
+           (if (string= (match-string 1) chess-engine-opponent-name)
+               (funcall chess-engine-response-handler 'flag-fell)
+             (funcall chess-engine-response-handler 'call-flag t)))))
+   (cons "Illegal move (\\([^)]+\\))\\."
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'illegal
+                    (match-string 1)))))
+   (cons "Challenge: \\(\\S-+\\) \\S-+ \\S-+ \\S-+ .+"
+        (function
+         (lambda ()
+           (let ((opponent (match-string 1)))
+             (if (y-or-n-p (chess-string 'want-to-play opponent))
+                 (chess-ics-send (concat "accept " opponent))
+               (chess-ics-send "decline match"))))))
+   ;; Buttonize URLs.
+   (cons "\"?\\(\\(https?\\|ftp\\)://[^ \t\n\r\"]+\\)\"?"
+        (function
+         (lambda ()
+           (make-button (match-beginning 1) (match-end 1)
+                        'action (lambda (button)
+                                  (browse-url (button-label button))))))))
+  "An alist of regular expressions to use to scan ICS server output.
+The car of each element is the regexp to try, and the cdr is a function
+to run whenever the regexp matches.")
+
+(defvar chess-ics-sessions nil
+  "A list of chess-sessions spawned from an Internet Chess Server connection.
+See `chess-ics-game'.")
+(make-variable-buffer-local 'chess-ics-sessions)
+
+(defun chess-ics-game (game-number &rest tags)
+  "Either create, or retrieve an existing game object with GAME-NUMBER."
+  (cl-assert (integerp game-number))
+  (cl-assert (or (zerop (logand (length tags) 1)) (eq (car tags) t)))
+  (or
+   ;; First try to find a game which matches the constraints in TAGS
+   (catch 'ics-game
+     (let ((sessions chess-ics-sessions))
+       (while sessions
+        (if (not (buffer-live-p (caar sessions)))
+            (message "Found dead engine session in `chess-ics-sessions'")
+          (let ((game (chess-engine-game (caar sessions)))
+                (tag-pairs tags))
+            (when (= game-number (chess-game-data game 'ics-game-number))
+              (if (or (null tags) (eq (car tags) t))
+                  (throw 'ics-game game)
+                (while tag-pairs
+                  (cl-assert (symbolp (car tag-pairs)))
+                  (let ((tag (substring (symbol-name (car tag-pairs)) 1))
+                        (val (cadr tag-pairs)))
+                    (cl-assert (stringp val))
+                    (if (string= (chess-game-tag game tag) val)
+                        (setq tag-pairs (cddr tag-pairs))
+                      (if (not (string= (chess-game-tag game tag) "?"))
+                          (message "Game %d %s %s != %s"
+                                 game-number tag (chess-game-tag game tag) 
val))
+                      ;; Update tag and proceed
+                      (chess-game-set-tag game tag val)
+                      (setq tags (cddr tags)))))
+                (throw 'ics-game game)))))
+        (setq sessions (cdr sessions)))))
+   ;; if we are allowed to, create a new session for this game number
+   (unless (eq (car tags) t)
+     (push (let (chess-engine-handling-event)
+            (chess-session 'chess-ics))
+          chess-ics-sessions)
+     (cl-assert (caar chess-ics-sessions))
+     (with-current-buffer (caar chess-ics-sessions)
+       (setq chess-ply-allow-interactive-query t))
+     (let ((game (chess-engine-game (caar chess-ics-sessions))))
+       (chess-game-set-data game 'ics-game-number game-number)
+       (chess-game-set-data game 'ics-buffer (current-buffer))
+       (chess-game-set-tag game "Site" chess-ics-server)
+       (while tags
+        (cl-assert (keywordp (car tags)))
+        (chess-game-set-tag
+         game (substring (symbol-name (car tags)) 1) (cadr tags))
+        (setq tags (cddr tags)))
+       game))))
+
+(defun chess-ics-game-destroy (game-number &rest tags)
+  (let ((sessions chess-ics-sessions)
+       last-session)
+    (while sessions
+      (if (not (buffer-live-p (caar sessions)))
+         (message "Found dead engine session in `chess-ics-sessions'")
+       (let ((game (chess-display-game (cl-cadar sessions)))
+             (tag-pairs tags)
+             (found t))
+         (when (= game-number (chess-game-data game 'ics-game-number))
+           (if (null tags)
+               (progn
+                 (chess-display-destroy (cl-cadar sessions))
+                 (if last-session
+                     (setcdr last-session (cdr sessions))
+                   (setq chess-ics-sessions (cdr sessions))))
+             (while (and tag-pairs found)
+               (cl-assert (symbolp (car tag-pairs)))
+               (let ((tag (substring (symbol-name (car tag-pairs)) 1))
+                     (val (cadr tag-pairs)))
+                 (cl-assert (stringp val))
+                 (if (string= (chess-game-tag game tag) val)
+                     (setq tag-pairs (cddr tag-pairs))
+                   (setq found nil))))
+             (if (not found)
+                 (error "Game not found")
+               (chess-engine-destroy (cl-cadar sessions))
+               (if last-session
+                   (setcdr last-session (cdr sessions))
+                 (setq chess-ics-sessions (cdr sessions))))))))
+      (setq last-session sessions
+           sessions (cdr sessions)))))
+
+(defun chess-ics-handle-movelist-item ()
+  ;; TBD: time taken per ply
+  (let ((chess-engine-handling-event t)
+       (seq (string-to-number (match-string 1)))
+       (wmove (match-string 2))
+       (bmove (match-string 14))
+       (game chess-ics-movelist-game))
+    (when game
+      (if (/= (chess-game-seq game) seq)
+         (progn
+           (goto-char (match-beginning 0))
+           (insert (format "SeqNr. unmatched (%d): " seq)))
+       (when (chess-pos-side-to-move (chess-game-pos game))
+         (chess-game-move
+          game (chess-algebraic-to-ply (chess-game-pos game) wmove))
+         (when bmove
+           (chess-game-move
+            game (chess-algebraic-to-ply (chess-game-pos game) bmove))))))
+    t))
+
+;; ICS style12 format (with artificial line breaks):
+;;
+;; <12> rnbqkbnr pppppppp -------- -------- \
+;;      -------- -------- PPPPPPPP RNBQKBNR W -1 1 1 1 1 0 \
+;;      65 jwiegley GuestZYNJ 1 5 0 39 39 300 300 1 P/e2-e4 (0:00) e4 0 0 0
+
+(defun chess-ics-handle-style12 ()
+  "Handle an ICS Style12 board string."
+  (let* ((chess-engine-handling-event t)
+        (begin (match-beginning 0))
+        (end (match-end 0))
+        (position (let ((pos (chess-pos-create t)))
+                    (dotimes (r 8)
+                      (let ((rank (match-string (1+ r))))
+                        (dotimes (f 8)
+                          (unless (= (aref rank f) ?-)
+                            (chess-pos-set-piece
+                             pos (chess-rf-to-index r f) (aref rank f))))))
+                    (chess-pos-set-side-to-move pos (string= (match-string 9) 
"W"))
+                    (let ((file (string-to-number (match-string 10))))
+                      (when (>= file 0)
+                        (chess-pos-set-en-passant
+                         pos (chess-rf-to-index
+                              (if (chess-pos-side-to-move pos) 3 4) file))))
+                    (mapc (lambda (info)
+                            (if (string= (match-string (cdr info)) "1")
+                                (chess-pos-set-can-castle pos (car info) t)))
+                          '((?K . 11) (?Q . 12) (?k . 13) (?q . 14))) pos))
+        (game (save-match-data
+                (chess-ics-game (string-to-number (match-string 16))
+                                :White (match-string 17)
+                                :Black (match-string 18))))
+        (status
+         ;; my relation to this game:
+         ;; -3 isolated position, such as for "ref 3" or the "sposition"
+         ;;    command
+         ;; -2 I am observing game being examined
+         ;;  2 I am the examiner of this game
+         ;; -1 I am playing, it is my opponent's move
+         ;;  1 I am playing and it is my move
+         ;;  0 I am observing a game being played
+         (string-to-number (match-string 19))))
+    (when (or (= status 2) (= status -2) (= status 0))
+      (chess-game-set-data game 'my-color (chess-pos-side-to-move position)))
+    ;; initial time and increment (in seconds) of the match
+    (chess-game-set-tag
+     game "TimeControl" (format "%s/%s" (match-string 20) (match-string 21)))
+    ;; material values for each side
+    (let ((centipawn (* 100 (- (string-to-number (match-string 22))
+                              (string-to-number (match-string 23))))))
+      (chess-pos-set-epd position 'ce (if (chess-pos-side-to-move position)
+                                         centipawn (- centipawn))))
+    ;; White's and Black's remaining time
+    (chess-game-set-data game 'white-remaining (string-to-number (match-string 
24)))
+    (chess-game-set-data game 'black-remaining (string-to-number (match-string 
25)))
+    (let ((index (- (* (string-to-number (match-string 26)) 2)
+                   (if (eq (chess-game-data game 'black-moved-first) t)
+                       (if (chess-pos-side-to-move position) 3 2)
+                     (if (chess-pos-side-to-move position) 2 1))))
+         (move (unless (string= (match-string 29) "none")
+                 (cl-case (aref (match-string 29) (1- (length (match-string 
29))))
+                   (?+ (chess-pos-set-status position :check))
+                   (?# (chess-pos-set-status position :checkmate)
+                       (chess-pos-set-epd position 'ce 32767)))
+                 ;; jww (2002-04-30): what about stalemate?  do I need to
+                 ;; calculate this each time?
+                 (when nil
+                   (chess-pos-set-status position :stalemate))
+                 (match-string 29)))
+         error)
+      (unwind-protect
+         (if move
+             (if (progn (setq error 'comparing-index)
+                        (= (1- index) (chess-game-index game)))
+                 (let ((ply (progn (setq error 'converting-ply)
+                                   (chess-algebraic-to-ply
+                                    (chess-game-pos game) move t))))
+                   ;; each move gives the _position occurring after the ply_
+                   (if (progn (setq error 'comparing-colors)
+                              (eq (chess-pos-side-to-move position)
+                                  (chess-game-data game 'my-color)))
+                       (setq error 'applying-opponent-move)
+                     (setq error 'applying-my-move))
+                   ;; save us from generating a position we already have
+                   (chess-ply-set-keyword ply :next-pos position)
+                   (chess-pos-set-preceding-ply position ply)
+                   ;; apply the move
+                   (chess-game-move game ply)
+                   (setq error nil))
+               (if (= index (chess-game-index game))
+                   ;; this is a refresh, which we can use to verify that our
+                   ;; notion of the game's current position is correct
+                   (let ((their-fen (chess-pos-to-fen position))
+                         (our-fen (chess-pos-to-fen (chess-game-pos game))))
+                     (if (string= their-fen our-fen)
+                         (setq error nil) ; ignore the refresh
+                       (setq error
+                             (format "comparing-position (%s != %s)"
+                                     their-fen our-fen))))
+                 (if (and (> index (1+ (chess-game-index game)))
+                          (= 1 (chess-game-seq game)))
+                     ;; we lack a complete game, try to get it via the
+                     ;; movelist
+                     (progn
+                       (setq error nil)
+                       (chess-ics-send
+                        (format "moves %d"
+                                (chess-game-data game 'ics-game-number))))
+                   (setq error
+                         (format "comparing-index (%d:%d)"
+                                 index (chess-game-index game))))))
+           ;; no preceeding ply supplied, so this is a starting position
+           (let ((chess-game-inhibit-events t)
+                 (color (chess-pos-side-to-move position))
+                 plies)
+             (when (or (= 1 status) (= -1 status))
+               (chess-game-set-data game 'my-color (if (= 1 status)
+                                                       color (not color)))
+               (chess-game-set-data game 'active t))
+             (setq error 'setting-start-position)
+             (chess-game-set-start-position game position)
+             (chess-game-set-data game 'black-moved-first (not color)))
+           (setq error 'orienting-board)
+           (chess-game-run-hooks game 'orient)
+           (setq error nil))
+       (goto-char begin)
+       (if error
+           (insert (chess-string 'failed-ics-parse error))
+         (delete-region begin end)
+         (save-excursion
+           (while (and (forward-line -1)
+                       (or (looking-at "^[ \t]*$")
+                           (looking-at "^[^% \t\n\r]+%\\s-*$")))
+             (delete-region (match-beginning 0) (1+ (match-end 0)))))
+         ;; we need to counter the forward-line in chess-engine-filter
+         (forward-line -1)))
+      t)))
+
+(defvar chess-ics-sought-parent-buffer nil
+  "Contains the buffer from which this seektable originates.")
+(make-variable-buffer-local 'chess-ics-sought-parent-buffer)
+
+(defun chess-ics-sought-accept (button)
+  "Perform the action specified by a BUTTON."
+  (let ((buffer (button-get button 'ics-buffer))
+       (command (button-get button 'ics-command)))
+    (when (and (buffer-live-p buffer) (stringp command))
+      (chess-ics-send command buffer)
+      t)))
+
+(defcustom chess-ics-popup-sought t
+  "If non-nil, display the sought buffer automatically."
+  :group 'chess-ics
+  :type 'boolean)
+
+(defcustom chess-ics-sought-buffer-name "*chess-ics-sought*"
+  "The name of the buffer which accumulates seek ads."
+  :group 'chess-ics
+  :type 'string)
+
+(define-derived-mode chess-ics-ads-mode tabulated-list-mode "ICSAds"
+  "Mode for displaying sought games from Internet Chess Servers."
+  :group 'chess-ics
+  (setq tabulated-list-format [("Player" 20 t)
+                              ("Rating" 10 t :right-align t)
+                              ("Rated" 5 nil :right-align t)
+                              ("Time" 4 t :right-align t)
+                              ("Inc" 4 t)
+                              ("Variant" 40 t)])
+  (setq tabulated-list-entries nil)
+  (tabulated-list-init-header)
+  (tabulated-list-print))
+
+(defun chess-ics-sought-add (id name rating rated time inc variant
+                            ics-buffer cmd)
+  (let ((inhibit-redisplay t))
+    (with-current-buffer
+      (or (get-buffer chess-ics-sought-buffer-name)
+         (with-current-buffer (get-buffer-create
+                               chess-ics-sought-buffer-name)
+           (chess-ics-ads-mode)
+           (and chess-ics-popup-sought (display-buffer (current-buffer)))
+           (current-buffer)))
+      (setq chess-ics-sought-parent-buffer ics-buffer)
+      (add-to-list 'tabulated-list-entries
+                  (list id
+                        (vector (list name
+                                      'ics-buffer ics-buffer
+                                      'ics-command cmd
+                                      'action #'chess-ics-sought-accept)
+                                (number-to-string rating)
+                                rated
+                                (number-to-string time)
+                                (number-to-string inc)
+                                variant)))
+      (tabulated-list-revert))))
+
+(defun chess-ics-seeking (string)
+  ;; jww (2008-09-02): we should use rx for this regular expression also
+  (while (string-match
+         (concat "[\n\r]+\\(\\S-+\\) (\\([0-9+ -]+\\)) seeking \\([a-z]\\S-+ 
\\)?\\([0-9]+\\) \\([0-9]+\\) \\(\\(un\\)?rated\\) \\([^(]*\\)(\"\\([^\"]+\\)\" 
to respond)\\s-*[\n\r]+"
+                 chess-ics-prompt-regexp)
+         string)
+    (let* ((pre (substring string 0 (match-beginning 0)))
+          (post (substring string (match-end 0))))
+      (chess-ics-sought-add (string-to-number (substring (match-string 9 
string) 5))
+                           (match-string 1 string)
+                           (string-to-number (match-string 2 string))
+                           (if (string= (match-string 6 string) "rated")
+                               "yes" "no")
+                           (string-to-number (match-string 4 string))
+                           (string-to-number (match-string 5 string))
+                           (concat
+                            (if (match-string 3 string)
+                                (concat (match-string 3 string) " ") "")
+                            (match-string 8 string))
+                           (current-buffer)
+                           (match-string 9 string))
+      (setq string (concat pre post))))
+  string)
+
+(defun chess-ics-ads-removed (string)
+  "Look for Seek ad removal announcements in the output stream.
+This function should be put on `comint-preoutput-filter-functions'."
+  (let (ids)
+    (while (string-match
+           (concat "[\n\r]+Ads removed: \\([0-9 ]+\\)\\s-*[\n\r]+"
+                   chess-ics-prompt-regexp)
+           string)
+      (setq ids (append (mapcar #'string-to-number
+                               (save-match-data
+                                 (split-string (match-string 1 string) " +")))
+                       ids)
+           string (concat (substring string 0 (match-beginning 0))
+                          (substring string (match-end 0)))))
+    (when ids
+      (let ((buf (get-buffer chess-ics-sought-buffer-name))
+           (inhibit-redisplay t))
+       (when (buffer-live-p buf)
+         (with-current-buffer buf
+           (let ((old-length (length tabulated-list-entries)))
+             (setq tabulated-list-entries
+                   (cl-remove-if (lambda (entry) (member (car entry) ids))
+                                 tabulated-list-entries))
+             (when (/= (length tabulated-list-entries) old-length)
+               (tabulated-list-revert))))))))
+  string)
+
+(make-variable-buffer-local 'comint-preoutput-filter-functions)
+
+;;;###autoload
+(defun chess-ics (server port &optional handle password-or-filename
+                        helper &rest helper-args)
+  "Connect to an Internet Chess Server."
+  (interactive
+   (let ((args (if (= (length chess-ics-server-list) 1)
+                  (car chess-ics-server-list)
+                (assoc (completing-read (chess-string 'ics-server-prompt)
+                                        chess-ics-server-list
+                                        nil t (caar chess-ics-server-list))
+                       chess-ics-server-list))))
+     (if (and (nth 2 args) (not (nth 3 args)))
+        (append (list (nth 0 args) (nth 1 args) (nth 2 args)
+                      (read-passwd "Password: ")
+                      (nth 4 args))
+                (nthcdr 5 args))
+       args)))
+  (unless handle
+    (setq handle "guest"))
+  (chess-message 'ics-connecting server)
+  (let ((buf (if helper
+                (apply 'make-comint "chess-ics" helper nil helper-args)
+              (make-comint "chess-ics" (cons server port)))))
+    (chess-message 'ics-connected server)
+    (set-buffer buf)
+    (setq chess-ics-server server
+         chess-ics-handle handle
+         chess-ics-password
+         (if (and password-or-filename
+                  (file-readable-p password-or-filename))
+             (with-temp-buffer
+               (insert-file-contents password-or-filename)
+               (buffer-string))
+           password-or-filename)
+         chess-ics-handling-login t
+         chess-engine-regexp-alist (copy-alist chess-ics-matcher-alist)
+         comint-prompt-regexp "^[^%\n]*% *"
+         comint-scroll-show-maximum-output t)
+    (add-hook 'comint-output-filter-functions 'chess-engine-filter t t)
+    (setq comint-preoutput-filter-functions
+         '(chess-ics-ads-removed chess-ics-seeking))
+    (let ((ntimes 50))
+      (while (and chess-ics-handling-login
+                 (> (setq ntimes (1- ntimes)) 0))
+       (accept-process-output (get-buffer-process (current-buffer)) 0 100)))
+    (switch-to-buffer buf)))
+
+;;; ICC datagrams
+
+;; See http://www.chessclub.com/resources/formats/formats.txt
+
+(defvar chess-icc-unprocessed nil)
+
+(defun chess-icc-datagram-handler (string)
+  (if (not (string-match "^\\([0-9]+\\) \\(.*\\)$" string))
+      (format "\nUnknown datagram format: %s\n" string)
+    (let ((chess-engine-handling-event t)
+         (dg (string-to-number (match-string 1 string)))
+         (args (match-string 2 string)))
+      (cond
+       ((and (or (= dg 22) (= dg 23))
+            (string-match "\\([0-9]+\\) \\([1-9][0-9]*\\)" args))
+       (chess-game-undo (chess-ics-game (string-to-number (match-string 1 
args)))
+                        (string-to-number (match-string 2 args)))
+       "")
+       ((and (or (= dg 101) (= dg 110))
+            (string-match "\\([0-9]+\\) {\\(.+\\) \\(?:[0-9]+\\) 
\\(?:[0-9]+\\)} \\([0-9]+\\)" args))
+       (let ((pos (chess-fen-to-pos (match-string 2 args))))
+         (chess-game-set-start-position
+          (chess-ics-game (string-to-number (match-string 1 args))) pos))
+       "")
+       ((and (or (= dg 24) (= dg 111))
+            (string-match "^\\([0-9]+\\) \\(.+\\)$" args))
+       (let* ((move (match-string 2 args))
+              (game (chess-ics-game (string-to-number (match-string 1 args))))
+              (pos (chess-game-pos game))
+              (ply (chess-algebraic-to-ply pos move)))
+         (chess-game-move game ply)
+         ""))
+       ((and (= dg 26)
+            (string-match "^\\([0-9]+\\) \\(\\S-+\\) {\\([^}]*\\)} \\([01]\\) 
{\\(.*\\)}"
+                          args))
+       (let ((game-number (match-string 1 args))
+             (action (if (string= (match-string 4 args) "1")
+                         "kibitzes" "whispers"))
+             (name (match-string 2 args))
+             (titles (match-string 3 args))
+             (text (match-string 5 args)))
+         (setq name
+               (concat name
+                       (mapconcat (lambda (title)
+                                    (concat "(" title ")"))
+                                  (split-string titles " ") "")))
+         (format "\n%s[%s] %s: %s\n" name game-number action text)))
+       ((and (= dg 56)
+            (string-match "^\\([0-9]+\\) \\([WB]\\) \\([0-9]+\\) \\([01]\\)"
+                          args))
+       (let ((sec (/ (string-to-number (match-string 3 args)) 1000))
+             (color (if (string= (match-string 2 args) "W")
+                        'white-remaining 'black-remaining))
+             (game (chess-ics-game (string-to-number (match-string 1 args)))))
+         (chess-game-set-data game color sec))
+       "")
+       ((and (= dg 50)
+            (string-match "^\\([0-9]+\\) \\(\\S-+\\) {\\([^}]*\\)} 
\\([0-9]+\\) \\([0-2]\\) \\([0-9]+\\) \\(\\S-+\\) \\([0-9]+\\) \\([0-9]+\\) 
\\([01]\\) \\(-?[01]\\) \\([0-9]+\\) \\([0-9]+\\) \\([01]\\) \\([01]\\) 
{\\([^}]*\\)}" args))
+       (chess-ics-sought-add
+        (string-to-number (match-string 1 args))
+        (concat (match-string 2 args)
+                (if (not (string= (match-string 3 args) ""))
+                    (format "(%s)" (match-string 3 args))
+                  ""))
+        (string-to-number (match-string 4 args))
+        (if (string= (match-string 10 args) "1") "yes" "no")
+        (string-to-number (match-string 8 args))
+        (string-to-number (match-string 9 args))
+        (concat (match-string 7 args)
+                (if (not (string= (match-string 6 args) "0"))
+                    (concat " " (match-string 6 args)) "")
+                (if (string= (match-string 14 args) "0")
+                    " m" "")
+                (if (string= (match-string 15 args) "1")
+                    " f" ""))
+        (current-buffer)
+        (concat "play " (match-string 1 args)))
+       "")
+       ((= dg 51)
+       (let ((id (string-to-number (car (split-string args " +"))))
+             (buf (get-buffer chess-ics-sought-buffer-name)))
+         (when (buffer-live-p buf)
+           (with-current-buffer buf
+             (setq tabulated-list-entries
+                   (cl-remove-if (lambda (entry) (equal (car entry) id))
+                                 tabulated-list-entries))
+             (tabulated-list-revert))))
+       "")
+       (t
+       (format "\nIgnoring unhandled datagram DG%03d: %s\n" dg args))))))
+
+(defun chess-icc-preoutput-filter (string)
+  (if chess-icc-unprocessed
+      (let ((string (concat chess-icc-unprocessed string)))
+       (if (string-match ")" string)
+           (let ((newstr (unwind-protect
+                             (chess-icc-datagram-handler
+                              (substring string 0 (match-beginning 0)))
+                           (setq chess-icc-unprocessed nil))))
+             (chess-icc-preoutput-filter (concat (or newstr "")
+                                                 (substring string
+                                                            (match-end 0)))))
+         (setq chess-icc-unprocessed string)
+         ""))
+    (if (string-match "(" string)
+       (let ((pre (substring string 0 (match-beginning 0)))
+             (substr (substring string (match-end 0))))
+         (if (string-match ")" substr)
+             (let ((post (substring substr (match-end 0)))
+                   (newstr (chess-icc-datagram-handler
+                            (substring substr 0 (match-beginning 0)))))
+               (chess-icc-preoutput-filter (concat pre newstr post)))
+           (setq chess-icc-unprocessed substr)
+           pre))
+      string)))
+
+(defun chess-ics-icc-preoutput-filter (string)
+  (while (string-match "(\\([0-9]+\\) \\(.*?\\))" string)
+    (let ((dg (string-to-number (match-string 1 string)))
+         (args (match-string 2 string))
+         (pre (substring string 0 (match-beginning 0)))
+         (post (substring string (match-end 0))))
+      (cond
+       ((and (or (= dg 101) (= dg 110))
+            (string-match "\\([0-9]+\\) {\\(.+\\) \\(?:[0-9]+\\) 
\\(?:[0-9]+\\)} \\([0-9]+\\)" args))
+       (let ((pos (chess-fen-to-pos (match-string 2 args))))
+         (chess-game-set-start-position
+          (chess-ics-game (string-to-number (match-string 1 args))) pos))
+       (setq string (concat pre post)))
+       ((and (or (= dg 24) (= dg 111))
+            (string-match "\\([0-9]+\\) \\(.+\\)$" args))
+       (let* ((chess-engine-handling-event t)
+              (move (match-string 2 args))
+              (game (chess-ics-game (string-to-number (match-string 1 args))))
+              (pos (chess-game-pos game))
+              (ply (chess-algebraic-to-ply pos move)))
+         (if ply
+             (chess-game-move game ply)
+           (setq pre (format "%s\nunable to apply move %s\n" pre move))))
+       (setq string (concat pre post)))
+       ((and (= dg 26)
+            (string-match "\\([0-9]+\\) \\(\\S-+\\) {\\([^}]*\\)} \\([01]\\) 
{\\(.*\\)}"
+                          args))
+       (let ((game-number (match-string 1 args))
+             (action (if (string= (match-string 4 args) "1")
+                         "kibitzes" "whispers"))
+             (name (match-string 2 args))
+             (titles (match-string 3 args))
+             (text (match-string 5 args)))
+         (setq name
+               (concat name
+                       (mapconcat (lambda (title)
+                                    (concat "(" title ")"))
+                                  (split-string titles " ") "")))
+         (setq string
+               (format "%s\n%s[%s] %s: %s\n%s"
+                       pre name game-number action text post))))
+       ((and (= dg 56)
+            (string-match "\\([0-9]+\\) \\([WB]\\) \\([0-9]+\\) \\([01]\\)"
+                          args))
+       (let ((sec (/ (string-to-number (match-string 3 args)) 1000))
+             (color (if (string= (match-string 2 args) "W")
+                        'white-remaining 'black-remaining))
+             (game (chess-ics-game (string-to-number (match-string 1 args)))))
+         (chess-game-set-data game color sec))
+       (setq string (concat pre post)))
+       ((and (= dg 50)
+            (string-match "\\([0-9]+\\) \\(\\S-+\\) {\\([^}]*\\)} \\([0-9]+\\) 
\\([0-2]\\) \\([0-9]+\\) \\(\\S-+\\) \\([0-9]+\\) \\([0-9]+\\) \\([01]\\) 
\\(-?[01]\\) \\([0-9]+\\) \\([0-9]+\\) \\([01]\\) \\([01]\\) {\\([^}]*\\)}" 
args))
+       (chess-ics-sought-add
+        (match-string 1 args)
+        (concat (match-string 2 args)
+                (if (not (string= (match-string 3 args) ""))
+                    (format "(%s)" (match-string 3 args))
+                  ""))
+        (string-to-number (match-string 4 args))
+        (if (string= (match-string 10 args) "1")
+            "yes" "no")
+        (string-to-number (match-string 8 args))
+        (string-to-number (match-string 9 args))
+        (concat (match-string 7 args)
+                (if (not (string= (match-string 6 args) "0"))
+                    (concat " " (match-string 6 args)) "")
+                (if (string= (match-string 14 args) "0")
+                    " m" "")
+                (if (string= (match-string 15 args) "1")
+                    " f" ""))
+        (current-buffer)
+        (concat "play " (match-string 1 args)))
+       (setq string (concat pre post)))
+       ((= dg 51)
+       (let ((id (car (split-string args " ")))
+             (buf (get-buffer chess-ics-sought-buffer-name)))
+         (when (buffer-live-p buf)
+           (with-current-buffer buf
+             (let ((here (point)))
+               (goto-char (point-min))
+               (when (re-search-forward (concat "^" id " ") nil t)
+                 (delete-region (line-beginning-position)
+                                (1+ (line-end-position))))
+               (goto-char here)))))
+       (setq string (concat pre post)))
+       (t
+       (message "Ignoring Datagram %03d: %s" dg args)
+       (setq string (concat pre post))))))
+  string)
+
+(defun chess-ics-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize))
+
+     ((eq event 'ready)
+      (chess-game-run-hooks game 'announce-autosave))
+
+     ((eq event 'busy))                        ; ICS will inform them
+
+     ((eq event 'match)
+      (setq chess-engine-pending-offer 'match)
+      (chess-engine-send
+       nil (format "match %s\n"
+                  (read-string (chess-string 'challenge-whom)))))
+
+     ;; this handler is taken from chess-common; we need to send long
+     ;; algebraic notation to the ICS server, not short
+     ((eq event 'move)
+      (chess-ics-send
+       (if (chess-ply-any-keyword (car args) :castle :long-castle)
+          (chess-ply-to-algebraic (car args))
+        (concat (chess-index-to-coord
+                 (chess-ply-source (car args))) "-"
+                 (chess-index-to-coord
+                  (chess-ply-target (car args)))))
+       (chess-game-data game 'ics-buffer))
+      (if (chess-game-over-p game)
+         (chess-game-set-data game 'active nil)))
+
+     ((eq event 'flag-fell)
+      (chess-common-handler game 'flag-fell))
+
+     ((eq event 'forward)
+      (chess-ics-send "forward" (chess-game-data game 'ics-buffer)))
+
+     ((eq event 'undo)
+      (chess-ics-send (format "takeback %d" (car args))
+                     (chess-game-data game 'ics-buffer)))
+
+     ((eq event 'abort)
+      (chess-ics-send "abort" (chess-game-data game 'ics-buffer)))
+
+     ((eq event 'call-flag)
+      (chess-ics-send "flag" (chess-game-data game 'ics-buffer)))
+
+     ((eq event 'draw)
+      (chess-ics-send "draw" (chess-game-data game 'ics-buffer)))
+
+     ((eq event 'resign)
+      (chess-ics-send "resign" (chess-game-data game 'ics-buffer)))
+
+     (t
+      (apply 'chess-network-handler game event args)))))
+
+(provide 'chess-ics)
+
+;;; chess-ics.el ends here
diff --git a/packages/chess/chess-ics1.el b/packages/chess/chess-ics1.el
new file mode 100644
index 0000000..33105b7
--- /dev/null
+++ b/packages/chess/chess-ics1.el
@@ -0,0 +1,139 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; ICS1 style display
+;;
+
+(require 'chess-display)
+
+(defgroup chess-ics1 nil
+  "The ICS1 style ASCII display."
+  :group 'chess-display)
+
+(defface chess-ics1-black-face
+  '((((class color) (background light)) (:foreground "Green"))
+    (((class color) (background dark)) (:foreground "Green"))
+    (t (:bold t)))
+  "*The face used for black pieces on the ASCII display."
+  :group 'chess-ics1)
+
+(defface chess-ics1-white-face
+  '((((class color) (background light)) (:foreground "Yellow"))
+    (((class color) (background dark)) (:foreground "Yellow"))
+    (t (:bold t)))
+  "*The face used for white pieces on the ASCII display."
+  :group 'chess-ics1)
+
+(defface chess-ics1-highlight-face
+  '((((class color) (background light)) (:background "#add8e6"))
+    (((class color) (background dark)) (:background "#add8e6")))
+  "Face to use for highlighting pieces that have been selected."
+  :group 'chess-ics1)
+
+(defcustom chess-ics1-popup-function 'chess-ics1-popup
+  "The function used to popup a chess-ics1 display."
+  :type 'function
+  :group 'chess-ics1)
+
+(defcustom chess-ics1-separate-frame nil
+  "If non-nil, display the chessboard in its own frame."
+  :type 'boolean
+  :group 'chess-ics1)
+
+;;; Code:
+
+(defun chess-ics1-handler (event &rest args)
+  (cond
+   ((eq event 'initialize) t)
+
+   ((eq event 'popup)
+    (funcall chess-ics1-popup-function))
+
+   ((eq event 'draw)
+    (apply 'chess-ics1-draw args))
+
+   ((eq event 'draw-square)
+    (apply 'chess-ics1-draw-square args))
+
+   ((eq event 'highlight)
+    (apply 'chess-ics1-highlight args))))
+
+(defun chess-ics1-popup ()
+  (if chess-ics1-separate-frame
+      (chess-display-popup-in-frame 21 43 nil nil t)
+    (chess-display-popup-in-window)))
+
+(defsubst chess-ics1-piece-text (piece)
+  (let ((p (char-to-string piece)))
+    (add-text-properties 0 1 (list 'face (if (> piece ?a)
+                                            'chess-ics1-black-face
+                                          'chess-ics1-white-face)) p)
+    p))
+
+(defsubst chess-ics1-draw-square (pos piece index)
+  "Draw a piece image at point on an already drawn display."
+  (save-excursion
+    (let ((inhibit-redisplay t))
+      (goto-char pos)
+      (delete-char 3)
+      (insert ?  (chess-ics1-piece-text piece) ? )
+      (add-text-properties pos (point) (list 'chess-coord index)))))
+
+(defun chess-ics1-draw (position perspective)
+  "Draw the given POSITION from PERSPECTIVE's point of view.
+PERSPECTIVE is t for white or nil for black."
+  (let ((inhibit-redisplay t)
+       (pos (point)))
+    (erase-buffer)
+    (let* ((inverted (not perspective))
+          (rank (if inverted 7 0))
+          (file (if inverted 7 0)) beg)
+      (insert "\n      +---+---+---+---+---+---+---+---+\n")
+      (while (if inverted (>= rank 0) (< rank 8))
+       (if (/= rank (if inverted 7 0))
+           (insert "      +---+---+---+---+---+---+---+---+\n"))
+       (while (if inverted (>= file 0) (< file 8))
+         (let ((piece (chess-pos-piece position
+                                       (chess-rf-to-index rank file)))
+               begin)
+           (if (= file (if inverted 7 0))
+               (insert (format "    %d " (1+ (- 7 rank)))))
+           (insert "| ")
+           (setq begin (1- (point)))
+           (insert (chess-ics1-piece-text piece) ? )
+           (add-text-properties begin (point)
+                                (list 'chess-coord
+                                      (chess-rf-to-index rank file))))
+         (setq file (if inverted (1- file) (1+ file))))
+       (insert "|\n")
+       (setq file (if inverted 7 0)
+             rank (if inverted (1- rank) (1+ rank))))
+      (insert "      +---+---+---+---+---+---+---+---+\n")
+      (if inverted
+         (insert "        h   g   f   e   d   c   b   a\n\n")
+       (insert "        a   b   c   d   e   f   g   h\n\n")))
+    (set-buffer-modified-p nil)
+    (goto-char pos)))
+
+(defun chess-ics1-highlight (index &optional mode)
+  (let ((pos (chess-display-index-pos nil index)))
+    (put-text-property pos (save-excursion
+                            (goto-char pos)
+                            (skip-chars-forward "^|")
+                            (point))
+                      'face (cond
+                             ((eq mode :selected)
+                              'chess-ics1-highlight-face)
+                             (t
+                              (chess-display-get-face mode))))))
+
+(defun chess-debug-position (&optional position)
+  "This is a debugging function, and not meant from general use."
+  (interactive)
+  (let ((pos (or position (chess-engine-position nil))))
+    (with-current-buffer (get-buffer-create "*scratch*")
+      (chess-ics1-draw pos t)
+      (funcall chess-ics1-popup-function))))
+
+(provide 'chess-ics1)
+
+;;; chess-ics1.el ends here
diff --git a/packages/chess/chess-images.el b/packages/chess/chess-images.el
new file mode 100644
index 0000000..ca11ac9
--- /dev/null
+++ b/packages/chess/chess-images.el
@@ -0,0 +1,569 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Chessboard display style using graphical images
+;;
+
+;;; Commentary:
+
+;; In addition to what all displays offer, the images display adds a
+;; few commands:
+;;
+;;   ^  increase the size of the display (if larger pieces exist)
+;;   V  decrease the size of the display (if smaller pieces exist)
+;;   D  use pieces from another directory
+;;
+;; When using pieces from another directory, they will be loaded and
+;; displayed immediately, allowing you to easily browse among
+;; different piece sets if you have them (such as the ZIICS set, see
+;; the xboard man page).
+
+(require 'chess-display)
+
+(defgroup chess-images nil
+  "Module for drawing a chess-display using graphical images."
+  :group 'chess-display)
+
+(defvar chess-images-cache nil)
+(defvar chess-images-size nil)
+(defvar chess-images-sizes nil)
+
+(make-variable-buffer-local 'chess-images-cache)
+(make-variable-buffer-local 'chess-images-size)
+(make-variable-buffer-local 'chess-images-sizes)
+
+(defun chess-images-clear-image-cache (sym value)
+  (set sym value)
+  (setq chess-images-cache nil))
+
+(defcustom chess-images-separate-frame (display-multi-frame-p)
+  "If non-nil, display the chessboard in its own frame."
+  :type 'boolean
+  :group 'chess-images)
+
+(defcustom chess-images-directory
+  (if (file-directory-p "/usr/share/games/xboard/pixmaps")
+      "/usr/share/games/xboard/pixmaps"
+    (expand-file-name "pieces/xboard"
+                     (file-name-directory
+                      (or load-file-name buffer-file-name))))
+  "Directory containing the chess piece bitmap images.
+You are free to use your own chess pieces, of any size.  By default, I
+assume you have xboard installed, or can go get the pixmaps that come
+with xboard.  I am not an artist, and have not taken the time to draw
+my own set of pieces.
+
+If you want to draw your own images, each piece must be named
+COLOR-PIECE.EXT, where COLOR is either black or white, and PIECE is
+one of rook, knight, bishop, queen, king or pawn.
+
+At the moment only XPM has been tested, and I'm afraid it's probably
+the only one that will work.  ImageMagick can be used to convert other
+graphics formats into XPM for you.
+
+Each piece must define the background color to use the symbolic color
+name \"background\", so that the chess program can use the same pieces
+for all squares.  If you want really custom pieces, you can use the
+symbolic colors dark_square, light_square and dark_piece and
+light_piece."
+  :type 'directory
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-default-size nil
+  "The default pixel width to use for chess pieces.
+If this width is not available, then next smallest will be chosen.
+If there is none smaller, then the best size available will be chosen.
+If `chess-images-default-size' is nil (the default), then the best
+width for the current display is calculated used."
+  :type '(choice integer (const :tag "Best fit" nil))
+  :group 'chess-images)
+
+(defcustom chess-images-background-image "blank"
+  "The name of the file used for background squares.
+This file is optional.  If there is no file available by this name, a
+solid color square will be created and used.  This option exists so
+that specialized squares may be used such as marble tiles, etc."
+  :type 'file
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-border-color (cdr (assq 'background-color
+                                               (frame-parameters)))
+  "Color to use for the border around pieces."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-dark-color
+  (if (display-color-p) "#77a26d" "gray60")
+  "Color to use for \"dark\" background squares."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-light-color
+  (if (display-color-p) "#c8c365" "gray80")
+  "Color to use for \"light\" background squares."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-black-color
+  (if (display-color-p) "#202020" "gray0")
+  "Color to use for \"black\" pieces."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-white-color
+  (if (display-color-p) "#ffffcc" "gray100")
+  "Color to use for \"white\" pieces."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-highlight-color
+  (if (display-color-p) "#add8e6" "gray90")
+  "Color to use for highlighting pieces that have been selected."
+  :type 'color
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-extension "xpm"
+  "The file extension used for chess display bitmaps."
+  :type 'file
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-border-width 2
+  "This defines the width of the border that surrounds each piece."
+  :type '(choice integer (const :tag "No border" nil))
+  :set 'chess-images-clear-image-cache
+  :group 'chess-images)
+
+(defcustom chess-images-popup-function 'chess-images-popup
+  "The function used to popup a chess-images display.
+The current-buffer is set to the display buffer when this function is
+called."
+  :type 'function
+  :group 'chess-images)
+
+;;; Code:
+
+(defconst chess-images-piece-names
+  '((?r "rook"   0)
+    (?n "knight" 1)
+    (?b "bishop" 2)
+    (?q "queen"  3)
+    (?k "king"   4)
+    (?p "pawn"   5))
+  "The names and index values of the different pieces.")
+
+(chess-message-catalog 'english
+  '((no-images-fallback . "Could not find any suitable or properly sized chess 
images")))
+
+(defun chess-images-handler (event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (when (display-graphic-p)
+      (chess-images-initialize)
+      (or chess-images-size
+         (ignore
+          (chess-message 'no-images-fallback)))))
+
+   ((eq event 'popup)
+    (funcall chess-images-popup-function))
+
+   ((eq event 'draw)
+    (apply 'chess-images-draw args))
+
+   ((eq event 'draw-square)
+    (apply 'chess-images-draw-square args))
+
+   ((eq event 'highlight)
+    (apply 'chess-images-highlight args))
+
+   ((eq event 'start-edit)
+    (setq cursor-type t))
+
+   ((eq event 'end-edit)
+    (setq cursor-type nil))))
+
+(defun chess-images-determine-size ()
+  (let ((display (and (stringp chess-images-separate-frame)
+                     chess-images-separate-frame)))
+    (setq cursor-type nil
+         chess-images-cache nil
+         chess-images-size (chess-images-best-size
+                            (- (if display
+                                   (x-display-pixel-height display)
+                                 (display-pixel-height))
+                               ;; On Macs and Windows, account for
+                               ;; the Start/Status bar
+                               (if (memq window-system '(mac windows w32))
+                                   80 20))
+                            (- (if display
+                                   (x-display-pixel-width display)
+                                 (display-pixel-width)) 20)))))
+
+(defun chess-images-initialize ()
+  (let ((map (current-local-map)))
+    (define-key map [?^] 'chess-images-increase-size)
+    (define-key map [?V] 'chess-images-decrease-size)
+    (define-key map [?P] 'chess-images-set-directory))
+  (chess-images-determine-size))
+
+(chess-message-catalog 'english
+  '((no-images . "Cannot find any piece images; check 
`chess-images-directory'")))
+
+(defun chess-images-popup ()
+  (unless chess-images-size
+    (chess-error 'no-images))
+  (if chess-images-separate-frame
+      (let* ((size (float (+ (* (or chess-images-border-width 0) 8)
+                            (* chess-images-size 8))))
+            (max-char-height (ceiling (/ size (frame-char-height))))
+            (max-char-width  (ceiling (/ size (frame-char-width))))
+            (display (and (stringp chess-images-separate-frame)
+                          chess-images-separate-frame)))
+       ;; create the frame whenever necessary
+       (chess-display-popup-in-frame (+ max-char-height 2)
+                                     max-char-width
+                                     (cdr (assq 'font (frame-parameters)))))
+    (chess-display-popup-in-window)))
+
+(defun chess-images-piece-image (piece rank file)
+  "Return the image used for PIECE at RANK and FILE.
+Rank and file are important because the colors of the squares on the
+chess board are light or dark depending on location."
+  (let ((square-color (% (+ file rank) 2))) ; 0 is white
+    (if (= piece ? )
+       (aref chess-images-cache (- 3 square-color))
+      (aref (aref (aref chess-images-cache
+                       (if (> piece ?a) 0 1))
+                 (if (= square-color 0) 1 0))
+           (nth 2 (assq (downcase piece)
+                        chess-images-piece-names))))))
+
+(defsubst chess-images-draw-square (pos piece index)
+  "Draw a piece image at point on an already drawn display."
+  (put-text-property pos (1+ pos) 'display
+                    (chess-images-piece-image piece (chess-index-rank index)
+                                              (chess-index-file index))))
+
+(defun chess-images-draw (position perspective)
+  "Draw the current chess display position."
+  (let* ((inhibit-redisplay t)
+        (inverted (not perspective))
+        (rank (if inverted 7 0))
+        (file (if inverted 7 0))
+        (pos (point)) new beg)
+    (unless chess-images-cache
+      (chess-images-init-cache)
+      (erase-buffer))
+    (unless (setq new (= (point-min) (point-max)))
+      (goto-char (point-min)))
+    (while (if inverted (>= rank 0) (< rank 8))
+      (while (if inverted (>= file 0) (< file 8))
+       (let* ((piece (chess-pos-piece position
+                                      (chess-rf-to-index rank file)))
+              (image (chess-images-piece-image piece rank file)))
+         (if (not new)
+             (progn
+               (put-text-property (point) (1+ (point)) 'display image)
+               (unless (= (1+ (point)) (point-max))
+                 (forward-char 2)))
+           (setq beg (point))
+           (insert-image image)
+           (if (= file (if inverted 0 7))
+               (unless (= rank (if inverted 0 7))
+                 (insert ?\n))
+             (insert-image (aref chess-images-cache 5)))
+           (add-text-properties
+            beg (point) (list 'intangible (chess-rf-to-index rank file)
+                              'rear-nonsticky '(intangible)
+                              'chess-coord (chess-rf-to-index rank file)))))
+       (setq file (if inverted (1- file) (1+ file))))
+      (setq file (if inverted 7 0)
+           rank (if inverted (1- rank) (1+ rank))))
+    (set-buffer-modified-p nil)
+    (goto-char pos)))
+
+(defun chess-images-highlight (index &optional mode)
+  "Highlight the piece on the board at INDEX, using the given MODE.
+Common modes are:
+  `selected'    show that the piece has been selected for movement.
+  `unselected'  show that the piece has been unselected."
+  (let* ((inverted (not (chess-display-perspective nil)))
+        (pos (chess-display-index-pos nil index))
+        (highlight (copy-alist (get-text-property pos 'display))))
+    (setcar (last highlight)
+           (list (cons "light_square" (if (eq mode :selected)
+                                          chess-images-highlight-color
+                                        mode))
+                 (cons "dark_square" (if (eq mode :selected)
+                                         chess-images-highlight-color
+                                       mode))
+                 (cons "background" (if (eq mode :selected)
+                                        chess-images-highlight-color
+                                      mode))))
+    (put-text-property pos (1+ pos) 'display highlight)))
+
+(chess-message-catalog 'english
+  '((redrawing-frame . "Redrawing chess display with different size...")
+    (redrawing-frame-done . "Redrawing chess display with different 
size...done")))
+
+(defun chess-images-change-size (size)
+  (let* ((buffer (current-buffer))
+        (window (get-buffer-window buffer))
+        (frame (and window (window-frame window))))
+    (setq chess-images-size size
+         chess-images-cache nil)
+    (if frame
+       (delete-frame frame t))
+    (chess-message 'redrawing-frame)
+    (chess-display-update buffer t)
+    (chess-display-popup buffer)
+    (chess-message 'redrawing-frame-done)))
+
+(defun chess-images-resize ()
+  "Resize the chessboard based on the frame or window's new size."
+  (chess-images-determine-size)
+  (if chess-images-size
+      (chess-images-change-size chess-images-size)
+    (chess-message 'no-images-fallback)))
+
+(defun chess-images-alter-size (test)
+  (let ((sizes chess-images-sizes))
+    (if (eq test '<)
+       (setq sizes (reverse sizes)))
+    (while sizes
+      (if (funcall test (car sizes) chess-images-size)
+         (progn
+           (chess-images-change-size (car sizes))
+           (setq sizes nil))
+       (setq sizes (cdr sizes))))))
+
+(defun chess-images-increase-size ()
+  "Increase the size of the pieces on the board."
+  (interactive)
+  (chess-images-alter-size '>))
+
+(defun chess-images-decrease-size ()
+  "Increase the size of the pieces on the board."
+  (interactive)
+  (chess-images-alter-size '<))
+
+(defun chess-images-sizes ()
+  "Return the set of available sizes for the current piece set.
+They are returned in ascending order, or nil for no sizes available."
+  (let ((file (expand-file-name (format "black-rook.%s"
+                                       chess-images-extension)
+                               chess-images-directory)))
+    (if (file-readable-p file)
+       (with-temp-buffer
+         (insert-file-contents-literally file)
+         (re-search-forward "\"\\([0-9]+\\)")
+         (setq chess-images-sizes (list (string-to-number (match-string 1)))))
+      (let (sizes)
+       (dolist (file (directory-files chess-images-directory nil
+                                      (format "rdd[0-9]+\\.%s"
+                                              chess-images-extension)))
+         (if (string-match "rdd\\([0-9]+\\)\\." file)
+             (push (string-to-number (match-string 1 file)) sizes)))
+       (setq chess-images-sizes (sort sizes '<))))))
+
+(defun chess-images-best-size (&optional height width)
+  "Return the piece size that works best for a window of HEIGHT."
+  (let* ((size (or chess-images-default-size
+                  (min (- (/ (or height (frame-pixel-height)) 8)
+                          (or chess-images-border-width 0))
+                       (- (/ (or width (frame-pixel-width)) 8)
+                          (or chess-images-border-width 0)))))
+        (sizes (chess-images-sizes))
+        (last (car sizes)))
+    (while sizes
+      (if (> (car sizes) size)
+         (setq sizes nil)
+       (setq last (car sizes)
+             sizes (cdr sizes))))
+    (or last (and chess-images-default-size
+                 (let (chess-images-default-size)
+                   (chess-images-best-size height width))))))
+
+(defun chess-images-set-directory (directory)
+  "Increase the size of the pieces on the board."
+  (interactive "DUse chess pieces in: ")
+  (setq chess-images-directory directory
+       chess-images-sizes (chess-images-sizes)
+       chess-images-size (chess-images-best-size)
+       chess-images-cache nil)
+  (chess-images-alter-size '=))
+
+(defun chess-images-create-xpm (height &optional width)
+  (with-temp-buffer
+    (insert "/* XPM */\n")
+    (insert "static char *chessdotel[] = {\n")
+    (insert "/* columns rows colors chars-per-pixel */\n")
+    (insert (format "\"%d %d 2 1\",\n" (or width height) height))
+    (insert "\"  c red s void\",\n")
+    (insert "\". c red s background\",\n")
+    (insert "/* pixels */\n")
+    (dotimes (i height)
+      (insert ?\" (make-string (or width height) ?.) ?\" ?, ?\n))
+    (delete-char -2)
+    (insert "\n};\n")
+    (buffer-string)))
+
+(defun chess-images-hack-xpm (file add-height color)
+  "Hack an XPM to append ADD-HEIGHT rows of COLOR.
+This is necessary for bizzare Emacs reasons."
+  (with-temp-buffer
+    (if (string-match "\\`/\\* XPM \\*/" file)
+       (insert file)
+      (insert-file-contents-literally file))
+    (goto-char (point-min))
+    (if (re-search-forward (concat "\"\\([0-9]+\\)\\s-+\\([0-9]+\\)\\s-+"
+                                  "\\([0-9]+\\)\\s-+\\([0-9]+\\)\"") nil t)
+       (let* ((width (string-to-number (match-string 1)))
+              (height (string-to-number (match-string 2)))
+              (colors (string-to-number (match-string 3)))
+              (chars-per-color (string-to-number (match-string 4)))
+              (color-char (make-string chars-per-color ?~)))
+         (replace-match (int-to-string (+ height add-height)) t t nil 2)
+         (unless
+             (save-match-data
+               (save-excursion
+                 (if (re-search-forward
+                      (format "^\"\\(..\\)\\s-*c\\s-+%s" color) nil t)
+                     (setq color-char
+                           (substring (match-string 1) 0 chars-per-color)))))
+           (replace-match (int-to-string (1+ colors)) t t nil 3)
+           (end-of-line)
+           (insert "\n\"" color-char "\tc " color "\","))
+         (beginning-of-line)
+         (forward-line (1+ colors))
+         (while (looking-at "/\\*")
+           (forward-line))
+         (dotimes (i add-height)
+           (insert "\"")
+           (dotimes (j width)
+             (insert color-char))
+           (insert "\",\n"))))
+    (buffer-string)))
+
+(defsubst chess-images-create-image (file background &optional foreground)
+  "Create an Emacs image object, for insertion on the board."
+  (let ((syms (list (nth background
+                        `(("dark_square"  . ,chess-images-dark-color)
+                          ("light_square" . ,chess-images-light-color)))
+                   (nth background
+                        `(("background"   . ,chess-images-dark-color)
+                          ("background"   . ,chess-images-light-color))))))
+    (if foreground
+       (nconc syms
+              (list (nth foreground
+                         `(("dark_piece"   . ,chess-images-black-color)
+                           ("light_piece"  . ,chess-images-white-color))))))
+    (if chess-images-border-width
+       (create-image
+        (chess-images-hack-xpm file chess-images-border-width
+                               chess-images-border-color)
+        nil t :color-symbols syms)
+      (create-image file nil (string-match "\\`/\\* XPM \\*/" file)
+                   :color-symbols syms))))
+
+(chess-message-catalog 'english
+  '((piece-images-loading . "Loading chess piece images...")
+    (piece-images-loaded  . "Loading chess piece images...done")))
+
+(defun chess-images-init-cache ()
+  "Initialize the display image cache."
+  (chess-message 'piece-images-loading)
+
+  ;; Make a vector of two vectors of 6-item vectors: each piece of
+  ;; each color on each color square; and lastly two slots for the
+  ;; blank squares
+  (setq chess-images-cache
+       (vector (vector (make-vector 6 nil)
+                       (make-vector 6 nil))
+               (vector (make-vector 6 nil)
+                       (make-vector 6 nil))
+               nil nil nil nil))
+
+  (let* ((colors '("black" "white"))
+        (backgrounds (list chess-images-dark-color
+                           chess-images-light-color))
+        (piece-colors (list chess-images-black-color
+                            chess-images-white-color))
+        blank name image-data)
+    (dotimes (c 2)
+      (dotimes (b 2)
+       (dolist (piece chess-images-piece-names)
+         (let ((file (expand-file-name
+                      (format "%s-%s.%s" (nth c colors) (nth 1 piece)
+                              chess-images-extension)
+                      chess-images-directory)))
+           (if (file-readable-p file)
+               (aset (aref (aref chess-images-cache c) b)
+                     (nth 2 piece)
+                     (chess-images-create-image file b c))
+             ;; try loading an xboard format file
+             (setq file (expand-file-name
+                         (format "%c%c%c%d.%s" (car piece)
+                                 (if (= c 0) ?d ?l)
+                                 (if (= b 0) ?d ?l) chess-images-size
+                                 chess-images-extension)
+                         chess-images-directory))
+             (aset (aref (aref chess-images-cache c) b)
+                   (nth 2 piece)
+                   (chess-images-create-image file b c)))))))
+    (cond
+     ((file-readable-p
+       (setq blank (expand-file-name
+                   (format "%s.%s" chess-images-background-image
+                           chess-images-extension)
+                   chess-images-directory)))
+      (aset chess-images-cache 2 (chess-images-create-image blank 0))
+      (aset chess-images-cache 3 (chess-images-create-image blank 1)))
+     ;; try loading an xboard format file
+     ((file-readable-p
+       (setq name (format "dsq%d.%s" chess-images-size
+                         chess-images-extension)
+            blank (expand-file-name name chess-images-directory)))
+      (aset chess-images-cache 2 (chess-images-create-image blank 0))
+      (aset name 0 ?l)
+      (setq blank (expand-file-name name chess-images-directory))
+      (aset chess-images-cache 3 (chess-images-create-image blank 1)))
+     ;; if all else fails, create one
+     (t
+      (setq image-data
+           (cond
+            ((string= chess-images-extension "xpm")
+             (chess-images-create-xpm chess-images-size))))
+      (aset chess-images-cache 2 (chess-images-create-image image-data 0))
+      (aset chess-images-cache 3 (chess-images-create-image image-data 1))))
+
+    (when chess-images-border-width
+      (aset chess-images-cache 4
+           (create-image
+            (chess-images-create-xpm
+             chess-images-border-width
+             (+ (* 8 chess-images-size)
+                (* 9 chess-images-border-width)))
+            nil t :color-symbols
+            (list (cons "background" chess-images-border-color))))
+      (aset chess-images-cache 5
+           (create-image
+            (chess-images-create-xpm chess-images-size
+                                     chess-images-border-width)
+            nil t :color-symbols
+            (list (cons "background" chess-images-border-color))))))
+
+  ;; let the garbage collector know we're through here
+  (garbage-collect)
+  (chess-message 'piece-images-loaded))
+
+(provide 'chess-images)
+
+;;; chess-images.el ends here
diff --git a/packages/chess/chess-input.el b/packages/chess/chess-input.el
new file mode 100644
index 0000000..2a9b63f
--- /dev/null
+++ b/packages/chess/chess-input.el
@@ -0,0 +1,138 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Keyboard entry of algebraic notation, using shortcut notation
+;;
+;; This scheme was adapted from the way SCID
+;; (http://scid.sourceforge.net), by Shane Hudson, behaves.  It's the
+;; only way to move your pieces around!
+;;
+
+(require 'chess-algebraic)
+(require 'chess-ply)
+(require 'chess-pos)
+
+(defvar chess-input-move-string "")
+(defvar chess-input-moves-pos nil)
+(defvar chess-input-moves nil)
+(defvar chess-input-position-function nil)
+(defvar chess-input-move-function nil)
+
+(make-variable-buffer-local 'chess-input-move-string)
+(make-variable-buffer-local 'chess-input-moves-pos)
+(make-variable-buffer-local 'chess-input-moves)
+(make-variable-buffer-local 'chess-input-position-function)
+(make-variable-buffer-local 'chess-input-move-function)
+
+(defun chess-input-test-move (move-ply)
+  "Return the given MOVE if it matches the user's current input."
+  (let* ((move (cdr move-ply))
+        (i 0) (x 0) (l (length move))
+        (xl (length chess-input-move-string))
+        (match t))
+    (unless (or (and (equal (downcase chess-input-move-string) "ok")
+                    (string-match "\\`O-O[+#]?\\'" move))
+               (and (equal (downcase chess-input-move-string) "oq")
+                    (string-match "\\`O-O-O[+#]?\\'" move)))
+      (while (and (< i l) (< x xl))
+       (let ((move-char (aref move i))
+             (entry-char (aref chess-input-move-string x)))
+         (if (and (= move-char ?x)
+                  (/= entry-char ?x))
+             (setq i (1+ i))
+           (if (/= entry-char (if (< entry-char ?a)
+                                  move-char
+                                (downcase move-char)))
+               (setq match nil i l)
+             (setq i (1+ i) x (1+ x)))))))
+    (if match
+       move-ply)))
+
+(defsubst chess-input-display-moves (&optional move-list)
+  (if (> (length chess-input-move-string) 0)
+      (message "[%s] %s" chess-input-move-string
+              (mapconcat 'cdr
+                         (or move-list
+                             (delq nil (mapcar 'chess-input-test-move
+                                               (cdr chess-input-moves))))
+                         " "))))
+
+(defun chess-input-shortcut-delete ()
+  (interactive)
+  (when (and chess-input-move-string
+            (stringp chess-input-move-string)
+            (> (length chess-input-move-string) 0))
+    (setq chess-input-move-string
+         (substring chess-input-move-string 0 (1- (length 
chess-input-move-string))))
+    (chess-input-display-moves)))
+
+(defun chess-input-shortcut (&optional display-only)
+  (interactive)
+  (let* ((position (funcall chess-input-position-function))
+        (color (chess-pos-side-to-move position))
+        char)
+    (unless (memq last-command '(chess-input-shortcut
+                                chess-input-shortcut-delete))
+      (setq chess-input-move-string nil))
+    (unless display-only
+      (setq chess-input-move-string
+           (concat chess-input-move-string
+                   (char-to-string last-command-event))))
+    (unless (and chess-input-moves
+                (eq position chess-input-moves-pos)
+                (or (> (length chess-input-move-string) 1)
+                    (eq (car chess-input-moves) last-command-event)))
+      (setq char (if (eq (downcase last-command-event) ?o)
+                    ?k
+                  last-command-event))
+      (if (or (memq (upcase char) '(?K ?Q ?N ?B ?R ?P))
+             (and (>= char ?a) (<= char ?h)))
+         (setq chess-input-moves-pos position
+               chess-input-moves
+               (cons
+                char
+                (sort
+                 (mapcar
+                  (function
+                   (lambda (ply)
+                     (cons ply (chess-ply-to-algebraic ply))))
+                  (if (eq char ?b)
+                      (append (chess-legal-plies
+                               position :piece (if color ?P ?p) :file 1)
+                              (chess-legal-plies
+                               position :piece (if color ?B ?b)))
+                    (if (and (>= char ?a)
+                             (<= char ?h))
+                        (chess-legal-plies position
+                                           :piece (if color ?P ?p)
+                                           :file (- char ?a))
+                      (chess-legal-plies position
+                                         :piece (if color
+                                                    (upcase char)
+                                                  (downcase char))))))
+                 (function
+                  (lambda (left right)
+                    (string-lessp (cdr left) (cdr right))))))))))
+  (let ((moves (delq nil (mapcar 'chess-input-test-move
+                                (cdr chess-input-moves)))))
+    (cond
+     ((or (= (length moves) 1)
+         ;; if there is an exact match except for case, it must be an
+         ;; abiguity between a bishop and a b-pawn move.  In this
+         ;; case, always take the b-pawn move; to select the bishop
+         ;; move, use B to begin the keyboard shortcut
+         (and (= (length moves) 2)
+              (string= (downcase (cdr (car moves)))
+                       (downcase (cdr (cadr moves))))
+              (setq moves (cdr moves))))
+      (funcall chess-input-move-function nil (caar moves))
+      (setq chess-input-move-string nil
+           chess-input-moves nil
+           chess-input-moves-pos nil))
+     ((null moves)
+      (chess-input-shortcut-delete))
+     (t
+      (chess-input-display-moves moves)))))
+
+(provide 'chess-input)
+
+;;; chess-input.el ends here
diff --git a/packages/chess/chess-irc.el b/packages/chess/chess-irc.el
new file mode 100644
index 0000000..d2133d0
--- /dev/null
+++ b/packages/chess/chess-irc.el
@@ -0,0 +1,148 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This transport uses an IRC bot to send/receive moves.
+;;
+
+(require 'chess-network)
+
+(defgroup chess-irc nil
+  "Use an IRC bot for sending/receiving moves."
+  :group 'chess-engine)
+
+(defcustom chess-irc-server "irc.openprojects.net"
+  "The IRC host to connect your chess-irc engine to."
+  :type 'string
+  :group 'chess-irc)
+
+(defcustom chess-irc-port 6667
+  "The port of the IRC host specified by `chess-irc-server'."
+  :type 'string
+  :group 'chess-irc)
+
+(defcustom chess-irc-nick (user-login-name)
+  "The nick you wish to use for sending/receiving IRC chess moves."
+  :type 'string
+  :group 'chess-irc)
+
+;;; Code:
+
+(chess-message-catalog 'english
+  '((opponent-says  . "Your opponent says: %s")
+    (irc-connecting . "Connecting to IRC server '%s:%d'...")
+    (irc-logging-in . "Connected, now logging in as '%s'...")
+    (irc-waiting    . "Now waiting for 'name USER' via /msg, or `M-x 
chess-irc-engage'")
+    (irc-challenge  . "IRC nick of user to challenge: ")))
+
+(defvar chess-irc-regexp-alist
+  (append chess-network-regexp-alist
+         (list (cons ".+"
+                     (function
+                      (lambda ()
+                        (chess-message 'opponent-says
+                                       (match-string 0))))))))
+
+(defvar chess-irc-process)
+(defvar chess-irc-engine)
+(defvar chess-irc-opponent)
+(defvar chess-irc-working nil)
+(defvar chess-irc-last-pos nil)
+(defvar chess-irc-use-ctcp nil)
+
+(make-variable-buffer-local 'chess-irc-process)
+(make-variable-buffer-local 'chess-irc-engine)
+(make-variable-buffer-local 'chess-irc-opponent)
+(make-variable-buffer-local 'chess-irc-working)
+(make-variable-buffer-local 'chess-irc-last-pos)
+(make-variable-buffer-local 'chess-irc-use-ctcp)
+
+(defun chess-irc-handler (game event &rest args)
+  "This is an example of a generic transport engine."
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (chess-message 'irc-connecting chess-irc-server chess-irc-port)
+      (let ((engine (current-buffer)) proc)
+       (with-current-buffer (generate-new-buffer " *chess-irc*")
+         (setq chess-irc-engine engine
+               proc (open-network-stream "*chess-irc*" (current-buffer)
+                                         chess-irc-server chess-irc-port))
+         (chess-message 'irc-logging-in chess-irc-nick)
+         (when (and proc (processp proc)
+                    (eq (process-status proc) 'open))
+           (process-send-string proc (format "USER %s 0 * :%s\n"
+                                             (user-login-name)
+                                             chess-full-name))
+           (process-send-string proc (format "NICK %s\n" chess-irc-nick))
+           (set-process-filter proc 'chess-irc-filter)
+           (set-process-buffer proc (current-buffer))
+           (set-marker (process-mark proc) (point))
+           (chess-message 'irc-waiting)))
+       (setq chess-irc-process proc))
+      t)
+
+     ((eq event 'match)
+      (setq chess-irc-opponent (read-string (chess-string 'irc-challenge)))
+      (chess-network-handler 'match chess-irc-opponent))
+
+     ((eq event 'destroy)
+      (chess-engine-send nil "quit")
+      (process-send-string chess-irc-process "QUIT :Goodbye\n")
+      (kill-buffer (process-buffer chess-irc-process)))
+
+     ((eq event 'send)
+      (process-send-string chess-irc-process
+                          (if chess-irc-use-ctcp
+                              (format "PRIVMSG %s :\C-aCHESS %s\C-a\n"
+                                      chess-irc-opponent (car args))
+                            (format "PRIVMSG %s :%s\n"
+                                    chess-irc-opponent (car args)))))
+     (t
+      (apply 'chess-network-handler game event args)))))
+
+;; This filter translates IRC syntax into basic chess-network protocol
+(defun chess-irc-filter (proc string)
+  (let ((buf (process-buffer proc)))
+    (when (buffer-live-p buf)
+      (with-current-buffer buf
+       (let ((moving (= (point) (process-mark proc))))
+         (save-excursion
+           ;; Insert the text, advancing the marker.
+           (goto-char (process-mark proc))
+           (while (string-match "\r" string)
+             (setq string (replace-match "" t t string)))
+           (insert string)
+           (set-marker (process-mark proc) (point)))
+         (if moving (goto-char (process-mark proc))))
+       (unless chess-irc-working
+         (setq chess-irc-working t)
+         (unwind-protect
+             (progn
+               (if chess-irc-last-pos
+                   (goto-char chess-irc-last-pos)
+                 (goto-char (point-min)))
+               (beginning-of-line)
+               (while (not (eobp))
+                 (cond
+                  ((looking-at
+                    ":\\([^ \t\n!]+\\)!\\S-+ PRIVMSG \\(\\S-+\\) :\\(\C-aCHESS 
\\)?\\(.+\\)\C-a?\n")
+                   (let ((sender (match-string 1))
+                         (target (match-string 2))
+                         (ctcp (match-string 3))
+                         (msg (match-string 4)))
+                   (with-current-buffer chess-irc-engine
+                     (when (and (string= chess-irc-nick target)
+                                (or (null chess-irc-opponent)
+                                    (string= chess-irc-opponent sender)))
+                       (unless chess-irc-opponent
+                         (setq chess-irc-opponent sender))
+                       (if (and (not chess-irc-use-ctcp)
+                                ctcp (> (length ctcp) 0))
+                         (setq chess-irc-use-ctcp t))
+                       (chess-engine-submit nil (concat msg "\n")))))))
+                 (forward-line)))
+           (setq chess-irc-last-pos (point)
+                 chess-irc-working nil)))))))
+
+(provide 'chess-irc)
+
+;;; chess-irc.el ends here
diff --git a/packages/chess/chess-kibitz.el b/packages/chess/chess-kibitz.el
new file mode 100644
index 0000000..07b5600
--- /dev/null
+++ b/packages/chess/chess-kibitz.el
@@ -0,0 +1,68 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Implements chess kibitzing, stored as annotations to the game being
+;; viewed or played.  C-c C-c is used to save a kibitzing comment.
+;;
+
+(require 'chess-game)
+
+(defvar chess-kibitz-input-last nil)
+(defvar chess-kibitz-index nil)
+
+(make-variable-buffer-local 'chess-kibitz-input-last)
+(make-variable-buffer-local 'chess-kibitz-index)
+
+(define-derived-mode chess-kibitz-mode text-mode "Kibitz"
+  "A mode for editing chess annotations."
+  (set-buffer-modified-p nil)
+  (setq chess-kibitz-input-last (copy-marker (point-max) t))
+  (let ((map (current-local-map)))
+    (define-key map [(control ?c) (control ?c)] 'chess-kibitz-save)))
+
+(defun chess-kibitz-save ()
+  (interactive)
+  (let ((ann (buffer-substring-no-properties chess-kibitz-input-last
+                                            (point-max))))
+    (chess-game-run-hooks chess-module-game 'kibitz ann)
+    (chess-pos-add-annotation (chess-game-pos chess-kibitz-index) ann))
+  (set-marker chess-kibitz-input-last (point-max))
+  (set-buffer-modified-p nil))
+
+(defun chess-kibitz-show-annotations (index)
+  (setq chess-kibitz-index index)
+  (erase-buffer)
+  (let ((position (chess-game-pos chess-module-game index))
+       popup)
+    (dolist (ann (chess-pos-annotations position))
+      (when (stringp ann)
+       (insert ann ?\n)
+       (setq popup t)))
+    (if popup
+       (display-buffer (current-buffer)))))
+
+(defun chess-kibitz-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (kill-buffer (current-buffer))
+    (set-buffer (generate-new-buffer "*Annotations*"))
+    (chess-kibitz-mode)
+    t)
+
+   ((eq event 'switch-to-annotations)
+    (switch-to-buffer-other-window (current-buffer)))
+
+   ((eq event 'kibitz)
+    (chess-kibitz-handler 'switch-to-annotations)
+    (save-excursion
+      (goto-char chess-kibitz-input-last)
+      (insert (car args))))
+
+   ((eq event 'set-index)
+    (chess-kibitz-show-annotations (car args)))
+
+   ((memq event '(post-undo move))
+    (chess-kibitz-show-annotations (chess-game-index game)))))
+
+(provide 'chess-kibitz)
+
+;;; chess-kibitz.el ends here
diff --git a/packages/chess/chess-link.el b/packages/chess/chess-link.el
new file mode 100644
index 0000000..04fa439
--- /dev/null
+++ b/packages/chess/chess-link.el
@@ -0,0 +1,84 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A module for connecting two engines.  If one is a protocol
+;; transport (like chess-network), and the other is a computing engine
+;; (like chess-gnuchess), this will allow you to expose a bot over the
+;; channel.
+;;
+
+(require 'chess)
+(require 'chess-engine)
+
+(defun chess-link-response-handler (event &rest args)
+  "This function handles responses from the bot's computing engine."
+  (let ((first-engine
+        (chess-game-data (chess-engine-game nil) 'first-engine))
+       (second-engine
+        (chess-game-data (chess-engine-game nil) 'second-engine))
+       return-value)
+    (cond
+     ((eq event 'match)
+      (chess-engine-command nil 'accept)
+      t)
+
+     (t
+      (let ((chess-engine-inhibit-auto-pass t))
+       (setq return-value
+             (apply 'chess-engine-default-handler event args)))
+
+      ;; but now transfer the event to the other engine
+      (apply 'chess-engine-command
+            (if (eq (current-buffer) first-engine)
+                second-engine
+              first-engine) event args)
+
+      return-value))))
+
+(defun chess-link-connect (first-engine second-engine)
+  "Connect two engines, so that they rely events back and forth."
+  (chess-engine-set-response-handler first-engine
+                                    'chess-link-response-handler)
+  (chess-engine-set-response-handler second-engine
+                                    'chess-link-response-handler))
+
+;;;###autoload
+(defun chess-link (first-engine-type second-engine-type)
+  "Play out a game between two engines, and watch the progress.
+If you want to run an engine as a bot, make the transport the first
+engine, and the computer the second engine."
+  (interactive "sFirst engine: \nsSecond engine: ")
+  (setq first-engine-type (intern (concat "chess-" first-engine-type))
+       second-engine-type (intern (concat "chess-" second-engine-type)))
+  (let* ((my-color t)                  ; we start out as white always
+        (display (chess-create-display my-color))
+        (game (chess-display-game display)))
+    (chess-game-set-data game 'my-color my-color)
+    (chess-module-set-leader display)
+    (chess-display-disable-popup display)
+    (condition-case err
+       (when (and (require first-engine-type)
+                  (require second-engine-type))
+         (let ((first-engine
+                (chess-engine-create first-engine-type game))
+               (second-engine
+                (chess-engine-create second-engine-type game)))
+
+           (chess-game-set-data game 'first-engine first-engine)
+           (chess-engine-command first-engine 'ready)
+
+           (chess-game-set-data game 'second-engine second-engine)
+           (chess-link-connect first-engine second-engine)
+           (chess-engine-command second-engine 'ready)
+
+           ;; tell the first engine to start moving
+           (chess-engine-command first-engine 'pass))
+
+         (chess-display-update display)
+         (chess-display-popup display))
+      (error
+       (chess-module-destroy display)
+       (error (error-message-string err))))))
+
+(provide 'chess-link)
+
+;;; chess-link.el ends here
diff --git a/packages/chess/chess-log.el b/packages/chess/chess-log.el
new file mode 100644
index 0000000..383da10
--- /dev/null
+++ b/packages/chess/chess-log.el
@@ -0,0 +1,20 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Log chess events, as an aid to debugging
+;;
+
+;;; Commentary:
+
+(require 'chess-module)
+
+(defgroup chess-log nil
+  "Code for logging chess events."
+  :group 'chess)
+
+(defun chess-log (&rest args)
+  (with-current-buffer (get-buffer-create "*Chess Log*")
+    (insert (apply 'format args) ?\n)))
+
+(provide 'chess-log)
+
+;;; chess-log.el ends here
diff --git a/packages/chess/chess-message.el b/packages/chess/chess-message.el
new file mode 100644
index 0000000..9ac8b32
--- /dev/null
+++ b/packages/chess/chess-message.el
@@ -0,0 +1,46 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Code shared by all chess displays
+;;
+
+(defgroup chess-message nil
+  "Support for message catalogs in chess.el."
+  :group 'chess)
+
+(defcustom chess-message-language 'english
+  "The language to use when reporting messages."
+  :type 'symbol
+  :group 'chess-message)
+
+;;; Code:
+
+(defvar chess-message-catalog nil)
+
+(defun chess-message-catalog (catalog definitions)
+  (let ((entry (assq catalog chess-message-catalog)))
+    (if entry
+       (dolist (def definitions)
+         (let ((str (assq (car def) (cdr entry))))
+           (if str
+               (setcdr str (cdr def))
+             (setcdr entry (cons def (cdr entry))))))
+      (push (cons catalog definitions) chess-message-catalog))))
+
+(defun chess-string (key &rest arguments)
+  (let* ((entry (assq chess-message-language chess-message-catalog))
+        (msg (and entry (cdr (assq key (cdr entry))))))
+    (if msg
+       (apply 'format msg arguments)
+      (format "Message not found: %s" key))))
+
+(defsubst chess-message (key &rest arguments)
+  (message (apply 'chess-string key arguments)))
+
+(defsubst chess-error (key &rest arguments)
+  (error (apply 'chess-string key arguments)))
+
+(put 'chess-message-catalog 'lisp-indent-function 1)
+
+(provide 'chess-message)
+
+;;; chess-message.el ends here
diff --git a/packages/chess/chess-module.el b/packages/chess/chess-module.el
new file mode 100644
index 0000000..a4263c9
--- /dev/null
+++ b/packages/chess/chess-module.el
@@ -0,0 +1,108 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Basic module support code underlying all chess.el modules
+;;
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'chess-game)
+
+(defvar chess-module-game nil)
+(defvar chess-module-event-handler nil)
+(defvar chess-module-leader nil)
+
+(make-variable-buffer-local 'chess-module-game)
+(make-variable-buffer-local 'chess-module-event-handler)
+(make-variable-buffer-local 'chess-module-leader)
+
+(chess-message-catalog 'english
+  '((no-such-module . "There is no module named '%s'")))
+
+(defmacro chess-with-current-buffer (buffer &rest body)
+  `(let ((buf ,buffer))
+     (if buf
+        (with-current-buffer buf
+          ,@body)
+       ,@body)))
+
+(put 'chess-with-current-buffer 'lisp-indent-function 1)
+
+(defun chess-module-create (derived game &optional buffer-name
+                                   &rest ctor-args)
+  (let* ((name (symbol-name derived))
+        handler buffer)
+    (unless (and (require derived nil t)
+                (setq handler (intern-soft (concat name "-handler"))))
+      (chess-error 'no-such-module name))
+    (with-current-buffer (generate-new-buffer (or buffer-name
+                                                 (format " *%s*" name)))
+      (if (not (apply handler game 'initialize ctor-args))
+         (ignore
+          (kill-buffer (current-buffer)))
+       (add-hook 'kill-buffer-hook 'chess-module-destroy nil t)
+       (setq chess-module-event-handler handler)
+       (chess-module-set-game* nil game)
+       (current-buffer)))))
+
+(defun chess-module-game (module)
+  (chess-with-current-buffer module
+    chess-module-game))
+
+(defun chess-module-game-index (module)
+  (chess-with-current-buffer module
+    (chess-game-index chess-module-game)))
+
+(defun chess-module-detach-game (module)
+  (chess-with-current-buffer module
+    (chess-game-remove-hook chess-module-game
+                           'chess-module-event-handler
+                           (or module (current-buffer)))
+    ;; if we are the leader, shutdown the game we were attached to
+    ;; previously
+    (if chess-module-leader
+       (chess-game-run-hooks chess-module-game 'destroy))))
+
+(defun chess-module-set-game (module game &optional no-setup)
+  (chess-with-current-buffer module
+    (let ((chess-game-inhibit-events no-setup))
+      (chess-game-copy-game chess-module-game game))))
+
+(defun chess-module-set-game* (module game)
+  (chess-with-current-buffer module
+    (assert game)
+    (if chess-module-game
+       (chess-module-detach-game nil))
+    (setq chess-module-game game)
+    (chess-game-add-hook game 'chess-module-event-handler
+                        (or module (current-buffer)))))
+
+(defsubst chess-module-leader-p (module)
+  (chess-with-current-buffer module
+    chess-module-leader))
+
+(defsubst chess-module-set-leader (module)
+  (chess-with-current-buffer module
+    (setq chess-module-leader t)))
+
+(defsubst chess-module-clear-leader (module)
+  (chess-with-current-buffer module
+    (setq chess-module-leader nil)))
+
+(defun chess-module-destroy (&optional module)
+  (let ((buf (or module (current-buffer))))
+    (when (buffer-live-p buf)
+      (with-current-buffer buf
+       (remove-hook 'kill-buffer-hook 'chess-module-destroy t)
+       (chess-module-detach-game nil))
+      (kill-buffer buf))))
+
+(defun chess-module-event-handler (game object event &rest args)
+  (with-current-buffer object
+    (apply chess-module-event-handler game event args)
+    (if (eq event 'destroy)
+       (chess-module-destroy nil))))
+
+(provide 'chess-module)
+
+;;; chess-module.el ends here
diff --git a/packages/chess/chess-network.el b/packages/chess/chess-network.el
new file mode 100644
index 0000000..efc9d28
--- /dev/null
+++ b/packages/chess/chess-network.el
@@ -0,0 +1,220 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Play against an opponent over the network
+;;
+
+(require 'chess-common)
+
+(defvar chess-network-regexp-alist
+  (list
+   (cons (concat chess-algebraic-regexp "$")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-engine-convert-algebraic (match-string 0))))))
+   (cons "chess match\\(\\s-+\\(.+\\)\\)?$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'match
+                    (match-string 2)))))
+   (cons "fen\\s-+\\(.+\\)"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'setup-pos
+                    (chess-engine-convert-fen (match-string 1))))))
+   (cons "pgn\\s-+\\(.+\\)"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'setup-game
+                    (chess-engine-convert-pgn
+                     (chess-network-parse-multiline (match-string 1)))))))
+   (cons "pass$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'pass))))
+   (cons "quit$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'quit))))
+   (cons "resign$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'resign))))
+   (cons "draw$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'draw))))
+   (cons "abort$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'abort))))
+   (cons "takeback\\s-+\\([0-9]+\\)$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'undo
+                    (string-to-number (match-string 1))))))
+   (cons "accept\\(\\s-+\\(.+\\)\\)?$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'accept
+                    (match-string 2)))))
+   (cons "decline$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'decline))))
+   (cons "retract$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'retract))))
+   (cons "illegal$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'illegal))))
+   (cons "flag$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'call-flag))))
+   (cons "forfeit$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'flag-fell))))
+   (cons "kibitz\\s-+\\(.+\\)$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'kibitz
+                    (chess-network-parse-multiline (match-string 1))))))
+   (cons "chat\\s-+\\(.+\\)$"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'chat
+                    (chess-network-parse-multiline (match-string 1))))))))
+
+(chess-message-catalog 'english
+  '((network-starting  . "Starting network client/server...")
+    (network-waiting   . "Now waiting for your opponent to connect...")
+    (takeback-sent     . "Sent request to undo %d ply(s) to your opponent")))
+
+(defun chess-network-flatten-multiline (str)
+  (while (string-match "\n" str)
+    (setq str (replace-match "\C-k" t t str)))
+  str)
+
+(defun chess-network-parse-multiline (str)
+  (while (string-match "\C-k" str)
+    (setq str (replace-match "\n" t t str)))
+  str)
+
+(defvar chess-network-kind)
+(make-variable-buffer-local 'chess-network-kind)
+
+(defun chess-network-handler (game event &rest args)
+  "Initialize the network chess engine."
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((which (read-char "Are you the c)lient or s)erver? "))
+           proc)
+       (chess-message 'network-starting)
+       (setq proc
+             (if (eq which ?s)
+                 (if (fboundp 'open-network-stream-server)
+                     (open-network-stream-server "*chess-network*"
+                                                 (current-buffer)
+                                                 (string-to-number
+                                                  (read-string "Port: ")))
+                   (start-process "*chess-network*"
+                                  (current-buffer) "/usr/bin/nc"
+                                  "-l" "-p" (read-string "Port: ")))
+               (open-network-stream "*chess-network*" (current-buffer)
+                                    (read-string "Host: ")
+                                    (read-string "Port: "))))
+       (setq chess-engine-process proc
+             chess-network-kind (if (eq which ?s) 'server 'client))
+       t))
+
+     ((eq event 'ready)                        ; don't set active yet
+      (chess-game-run-hooks game 'announce-autosave)
+      (if (eq chess-network-kind 'server)
+         (chess-message 'network-waiting)
+       (chess-network-handler game 'match)))
+
+     ((eq event 'setup-pos)
+      (chess-engine-send nil (format "fen %s\n"
+                                    (chess-pos-to-string (car args)))))
+
+     ((eq event 'setup-game)
+      (chess-engine-send nil (format "pgn %s\n"
+                                    (chess-network-flatten-multiline
+                                     (chess-game-to-string (car args))))))
+
+     ((eq event 'pass)
+      (chess-engine-send nil "pass\n"))
+
+     ((eq event 'busy)
+      (chess-engine-send nil "playing\n"))
+
+     ((eq event 'match)
+      (setq chess-engine-pending-offer 'match)
+      (chess-engine-send nil (format "chess match %s\n" chess-full-name)))
+
+     ((eq event 'draw)
+      (if chess-engine-pending-offer
+         (chess-engine-command nil 'retract))
+      (setq chess-engine-pending-offer 'draw)
+      (chess-engine-send nil "draw\n"))
+
+     ((eq event 'abort)
+      (if chess-engine-pending-offer
+         (chess-engine-command nil 'retract))
+      (setq chess-engine-pending-offer 'abort)
+      (chess-engine-send nil "abort\n"))
+
+     ((eq event 'undo)
+      (if chess-engine-pending-offer
+         (chess-engine-command nil 'retract))
+      (setq chess-engine-pending-offer 'undo
+           chess-engine-pending-arg (car args))
+
+      (chess-engine-send nil (format "takeback %d\n" (car args)))
+      (chess-message 'takeback-sent (car args)))
+
+     ((eq event 'accept)
+      (chess-engine-send nil (if (car args)
+                                (format "accept %s\n" (car args))
+                              "accept\n")))
+
+     ((eq event 'decline)
+      (chess-engine-send nil "decline\n"))
+
+     ((eq event 'retract)
+      (chess-engine-send nil "retract\n"))
+
+     ((eq event 'illegal)
+      (chess-engine-send nil "illegal\n"))
+
+     ((eq event 'call-flag)
+      (chess-engine-send nil "flag\n"))
+
+     ((eq event 'kibitz)
+      (chess-engine-send nil (format "kibitz %s\n"
+                                    (chess-network-flatten-multiline
+                                     (car args)))))
+
+     ((eq event 'chat)
+      (chess-engine-send nil (format "chat %s\n"
+                                    (chess-network-flatten-multiline
+                                     (car args)))))
+
+     ((eq event 'set-index)
+      (chess-engine-send nil (format "index %d\n" (car args))))
+
+     ((eq event 'flag-fell)
+      (chess-engine-send nil "forfeit\n")
+      (chess-common-handler game 'flag-fell))
+
+     (t
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-network)
+
+;;; chess-network.el ends here
diff --git a/packages/chess/chess-none.el b/packages/chess/chess-none.el
new file mode 100644
index 0000000..efc3afe
--- /dev/null
+++ b/packages/chess/chess-none.el
@@ -0,0 +1,28 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A null engine, used when two humans play against each other on the
+;; same display.
+;;
+
+(require 'chess-engine)
+
+(defvar chess-none-regexp-alist nil)
+
+(defun chess-none-handler (game event &rest args)
+  "An empty chess engine, used for fielding key events.
+This is only useful when two humans are playing each other, in which
+case this engine will do the job of accepting undos, handling
+resignations, etc."
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize) t)
+
+     ((memq event '(resign abort))
+      (chess-engine-set-position nil))
+
+     ((eq event 'undo)
+      (chess-game-undo game (car args))))))
+
+(provide 'chess-none)
+
+;;; chess-none.el ends here
diff --git a/packages/chess/chess-perft.el b/packages/chess/chess-perft.el
new file mode 100644
index 0000000..c3881ca
--- /dev/null
+++ b/packages/chess/chess-perft.el
@@ -0,0 +1,225 @@
+;;; chess-perft.el --- Perft tests for emacs-chess   -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2014  Mario Lang
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The classic perft function counts all leaf nodes at a certain depth.
+;; To make it easier to identify specific problems we also count properties
+;; of the (final) plies.  We count capturing plies, en passant plies,
+;; castling plies, plies that promote to a piece,
+;; plies which bring the opponent king in check and plies which result in
+;; checkmate.
+
+;; For more details about perft in general, see
+;; <URL:https://chessprogramming.wikispaces.com/Perft>.
+
+;; Typically, depths greater than 4 will result in very long runtimes.
+;; We only define tests which don't take a lot of execution time
+;; (less than a million nodes).
+
+;; To make it easier to selectively run tests, most tests provide tags
+;; to indentify which types of plies they are covering.
+;; The available ERT tags are:
+;; `:capture', `:en-passant', `:castle', `:promotion',
+;; `:check' and `:checkmate'.
+;;
+;; For instance, to make sure castling plies work as expected, you might run
+;; M-: (ert '(tag :castle)) RET
+
+;;; Code:
+
+(require 'chess-fen)
+(require 'chess-ply)
+(require 'chess-pos)
+(require 'cl-lib)
+(require 'ert)
+
+(defun chess-perft (position depth)
+  "Count all leaf nodes of the tree starting at POSITION pruned at DEPTH.
+If not called interactively the result is a list of the form
+\(LEAFS CAPTURES EN-PASSANTS CASTLES PROMOTIONS CHECKS CHECKMATES)."
+  (interactive (list (or (ignore-errors (chess-display-position nil))
+                        (chess-fen-to-pos (read-string "FEN: " nil nil
+                                                       (chess-pos-to-fen
+                                                        (chess-pos-create)))))
+                    (read-number "Depth: " 1)))
+  (if (zerop depth)
+      (cl-values 1 0 0 0 0 0 0)
+    (let ((plies (chess-legal-plies position
+                                   :color (chess-pos-side-to-move position)))
+         (nodes 0) (captures 0) (en-passants 0) (castles 0) (promotions 0)
+         (checks 0) (checkmates 0))
+      (if (= depth 1)
+         (dolist (ply plies)
+           (cl-incf nodes)
+           (when (let ((position (chess-ply-pos ply)))
+                   (chess-pos-piece-p position (chess-ply-target ply)
+                                      (not (chess-pos-side-to-move position))))
+             (cl-incf captures))
+           (when (chess-ply-keyword ply :en-passant)
+             (cl-incf captures)
+             (cl-incf en-passants))
+           (if (chess-ply-any-keyword ply :castle :long-castle)
+               (cl-incf castles)
+             (when (chess-ply-keyword ply :promote)
+               (cl-incf promotions)))
+           (when (chess-ply-any-keyword ply :check :checkmate)
+             (cl-incf checks))
+           (when (chess-ply-any-keyword ply :checkmate)
+             (cl-incf checkmates))         )
+       (let ((progress (when (called-interactively-p 'any)
+                         (make-progress-reporter "Perft... " 0 (length 
plies))))
+             (index 0))
+         (when (and (not noninteractive) (= depth 2)) (accept-process-output))
+         (dolist (ply plies)
+           (unless (chess-ply-final-p ply)
+             (cl-multiple-value-bind (n c e ca p ch cm)
+                 (chess-perft (chess-ply-next-pos ply) (1- depth))
+               (cl-incf nodes n)
+               (cl-incf captures c)
+               (cl-incf en-passants e)
+               (cl-incf castles ca)
+               (cl-incf promotions p)
+               (cl-incf checks ch)
+               (cl-incf checkmates cm)))
+           
+           (when progress
+             (cl-incf index)
+             (progress-reporter-force-update
+              progress index (format "Perft... (%d nodes) " nodes))))))
+
+      (if (called-interactively-p 'any)
+         (message "%d nodes (%d captures (%d ep), %d castles, %d promotions 
and %d checks (%d mate))"
+                  nodes captures en-passants castles promotions checks 
checkmates)
+       (cl-values nodes
+                  captures en-passants castles promotions checks 
checkmates)))))
+
+(ert-deftest chess-perft-startpos-depth1 ()
+  (should (equal (chess-perft (chess-pos-create) 1) '(20 0 0 0 0 0 0))))
+
+(ert-deftest chess-perft-startpos-depth2 ()
+  (should (equal (chess-perft (chess-pos-create) 2) '(400 0 0 0 0 0 0))))
+
+(ert-deftest chess-perft-startpos-depth3 ()
+  :tags '(:capture :check)
+  (should (equal (chess-perft (chess-pos-create) 3) '(8902 34 0 0 0 12 0))))
+
+(ert-deftest chess-perft-startpos-depth4 ()
+  :tags '(:capture :check :checkmate)
+  (should (equal (chess-perft (chess-pos-create) 4)
+                '(197281 1576 0 0 0 469 8))))
+
+(ert-deftest chess-perft-startpos-depth5 ()
+  :tags '(:capture :en-passant :check :checkmate)
+  (should (equal (chess-perft (chess-pos-create) 5)
+                '(4865609 82719 258 0 0 27351 347))))
+
+;(ert-deftest chess-perft-startpos-depth6 ()
+;  :tags '(:capture :en-passant :check :checkmate)
+;  (should (equal (chess-perft (chess-pos-create) 6)
+;               '(119060324 2812008 5248 0 0 809099 10828))))
+
+(ert-deftest chess-perft-kiwipete-depth1 ()
+  :tags '(:capture :castle)
+  (let ((position
+        (chess-fen-to-pos
+         "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -")))
+    (should (equal (chess-perft position 1) '(48 8 0 2 0 0 0)))))
+
+(ert-deftest chess-perft-kiwipete-depth2 ()
+  :tags '(:capture :en-passant :castle :check)
+  (let ((position
+        (chess-fen-to-pos
+         "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -")))
+    (should (equal (chess-perft position 2) '(2039 351 1 91 0 3 0)))))
+
+(ert-deftest chess-perft-kiwipete-depth3 ()
+  :tags '(:capture :en-passant :castle :check :checkmate)
+  (let ((position
+        (chess-fen-to-pos
+         "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -")))
+    (should (equal (chess-perft position 3) '(97862 17102 45 3162 0 993 1)))))
+
+(ert-deftest chess-perft-kiwipete-depth4 ()
+  :tags '(:capture :en-passant :castle :promote :check :checkmate)
+  (let ((position
+        (chess-fen-to-pos
+         "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -")))
+    (should (equal (chess-perft position 4)
+                  '(4085603 757163 1929 128013 15172 25523 43)))))
+
+(ert-deftest chess-perft-pos3-depth1 ()
+  :tags '(:capture :check)
+  (let ((position (chess-fen-to-pos "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -")))
+    (should (equal (chess-perft position 1) '(14 1 0 0 0 2 0)))))
+
+(ert-deftest chess-perft-pos3-depth2 ()
+  :tags '(:capture :check)
+  (let ((position (chess-fen-to-pos "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -")))
+    (should (equal (chess-perft position 2) '(191 14 0 0 0 10 0)))))
+
+(ert-deftest chess-perft-pos3-depth3 ()
+  :tags '(:capture :en-passant :check)
+  (let ((position (chess-fen-to-pos "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -")))
+    (should (equal (chess-perft position 3) '(2812 209 2 0 0 267 0)))))
+
+(ert-deftest chess-perft-pos3-depth4 ()
+  :tags '(:capture :en-passant :check :checkmate)
+  (let ((position (chess-fen-to-pos "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -")))
+    (should (equal (chess-perft position 4) '(43238 3348 123 0 0 1680 17)))))
+
+(ert-deftest chess-perft-pos3-depth5 ()
+  :tags '(:capture :en-passant :check)
+  (let ((position (chess-fen-to-pos "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -")))
+    (should (equal (chess-perft position 5) '(674624 52051 1165 0 0 52950 
0)))))
+
+(ert-deftest chess-perft-pos4-depth1 ()
+  (let ((chess-ply-allow-interactive-query nil)
+       (position
+        (chess-fen-to-pos
+         "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq -")))
+    (should (equal (chess-perft position 1) '(6 0 0 0 0 0 0)))))
+
+(ert-deftest chess-perft-pos4-depth2 ()
+  :tags '(:capture :castle :promotion :check)
+  (let ((chess-ply-allow-interactive-query nil)
+       (position
+        (chess-fen-to-pos
+         "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq -")))
+    (should (equal (chess-perft position 2) '(264 87 0 6 48 10 0)))))
+
+(ert-deftest chess-perft-pos4-depth3 ()
+  :tags '(:capture :en-passant :promotion :check :checkmate)
+  (let ((chess-ply-allow-interactive-query nil)
+       (position
+        (chess-fen-to-pos
+         "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq -")))
+    (should (equal (chess-perft position 3) '(9467 1021 4 0 120 38 22)))))
+
+(ert-deftest chess-perft-pos4-depth4 ()
+  :tags '(:capture :castle :promotion :check :checkmate)
+  (let ((chess-ply-allow-interactive-query nil)
+       (position
+        (chess-fen-to-pos
+         "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq -")))
+    (should (equal (chess-perft position 4) '(422333 131393 0 7795 60032 15492 
5)))))
+
+(provide 'chess-perft)
+;;; chess-perft.el ends here
diff --git a/packages/chess/chess-pgn.el b/packages/chess/chess-pgn.el
new file mode 100644
index 0000000..da1aa62
--- /dev/null
+++ b/packages/chess/chess-pgn.el
@@ -0,0 +1,426 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Convert a chess game to/from PGN notation
+;;
+
+(require 'chess-algebraic)
+(require 'chess-fen)
+(require 'chess-ply)
+(require 'chess-message)
+
+(eval-when-compile
+  (require 'pcomplete nil t))
+
+(defvar chess-pgn-fill-column 60)
+
+(chess-message-catalog 'english
+  '((pgn-read-error  . "Error reading move: %s")
+    (pgn-parse-error . "Error parsing PGN syntax")))
+
+(defun chess-pgn-read-plies (game position &optional top-level)
+  (let ((plies (list t)) (begin (point)) move-beg prevpos)
+    (catch 'done
+      (while (not (eobp))
+       (cond
+        ((looking-at "[1-9][0-9]*\\.[. ]*")
+         (goto-char (match-end 0)))
+
+        ((looking-at chess-algebraic-regexp-ws)
+         (setq move-beg (point))
+         (goto-char (match-end 0))
+         (skip-syntax-backward " ")
+         (setq prevpos position)
+         (let* ((move (buffer-substring-no-properties move-beg (point)))
+                (ply (condition-case err
+                         (chess-algebraic-to-ply position move)
+                       (error
+                        (message "PGN: %s" (buffer-substring begin 
(point-max)))
+                        (error (error-message-string err))))))
+           (unless ply
+             (chess-error 'pgn-read-error move))
+           (setq position (chess-ply-next-pos ply))
+           (nconc plies (list ply))))
+
+        ((and top-level
+              (looking-at "\\(\\*\\|1-0\\|0-1\\|1/2-1/2\\)"))
+         (goto-char (match-end 0))
+         (chess-game-set-tag game "Result" (match-string-no-properties 0))
+         (unless (eq t (car (last plies)))
+           (cond
+            ((string= "1/2-1/2" (match-string 1))
+             (nconc plies (list (chess-ply-create
+                                 (chess-ply-next-pos (car (last plies)))
+                                 t :drawn))))
+            (t
+             (nconc plies (list (chess-ply-create*
+                                 (chess-ply-next-pos (car (last plies)))))))))
+         (throw 'done t))
+
+        ((looking-at "{")
+         (forward-char)
+         (let ((begin (point)))
+           (search-forward "}")
+           (forward-char)
+           (chess-pos-add-annotation position (buffer-substring-no-properties
+                                               begin (- (point) 2)))))
+        ((looking-at "(")
+         (forward-char)
+         (skip-chars-forward " \t\n")
+         (chess-pos-add-annotation prevpos
+                                   (chess-pgn-read-plies game prevpos)))
+
+        ((and (not top-level)
+              (looking-at ")"))
+         (forward-char)
+         (throw 'done t))
+
+        (t
+         (if (eq t (car (last plies)))
+             (error "PGN parser: Expected a ply here: '%s'"
+                    (buffer-substring (point) (point-max))))
+         (nconc plies (list (chess-ply-create*
+                             (chess-ply-next-pos (car (last plies))))))
+         (throw 'done t)))
+       (skip-chars-forward " \t\n\r")))
+    (cdr plies)))
+
+(defun chess-pgn-to-game (&optional string)
+  "Convert PGN notation at point into a chess game.
+Optionally use the supplied STRING instead of the current buffer."
+  (if string
+      (with-temp-buffer
+       (insert string)
+       (goto-char (point-min))
+       (chess-pgn-parse))
+    (chess-pgn-parse)))
+
+(defun chess-pgn-parse ()
+  (if (or (looking-at "\\[")
+         (and (search-forward "[" nil t)
+              (goto-char (match-beginning 0))))
+      (let ((game (chess-game-create))
+           (begin (point)))
+       (chess-game-set-tags game nil)
+       (while (looking-at "\\[\\(\\S-+\\)\\s-+\\(\".*?\"\\)\\][ \t\n\r]+")
+         (chess-game-set-tag game (match-string-no-properties 1)
+                             (let ((str (match-string-no-properties 2)))
+                               (substring str 1 (1- (length str)))))
+         (goto-char (match-end 0)))
+       (let ((fen (chess-game-tag game "FEN")))
+         (if fen
+             (chess-game-set-start-position game (chess-fen-to-pos fen)))
+         (chess-game-set-plies game (chess-pgn-read-plies game (chess-game-pos 
game) t)))
+       game)
+    (error "Data not in legal PGN format: '%s'"
+          (buffer-substring (point) (point-max)))))
+
+(defun chess-pgn-insert-annotations (game index ply)
+  (dolist (ann (chess-pos-annotations (chess-ply-pos ply)))
+    (if (stringp ann)
+       (insert "\n{" ann "}")
+      (assert (listp ann))
+      (chess-pgn-insert-plies game index ann))))
+
+(defun chess-pgn-insert-plies (game index plies &optional
+                                    for-black indented no-annotations)
+  "NYI: Still have to implement INDENTED argument."
+  (while plies
+    (unless for-black
+      (when (chess-ply-changes (car plies))
+       (if (> (current-column) chess-pgn-fill-column)
+           (insert ?\n))
+       (insert (format "%d. %s" index (chess-ply-to-algebraic (car plies))))
+       (unless no-annotations
+         (chess-pgn-insert-annotations game index (car plies))))
+      (setq plies (cdr plies) index (1+ index)))
+    (when plies
+      (when (chess-ply-changes (car plies))
+       (when for-black
+         (if (> (current-column) chess-pgn-fill-column)
+             (insert ?\n))
+         (insert (format "%d. ..." index))
+         (setq for-black nil))
+       (insert (format " %s" (chess-ply-to-algebraic (car plies))))
+       (unless no-annotations
+         (chess-pgn-insert-annotations game index (car plies))))
+      (setq plies (cdr plies)))
+    (if plies
+       (insert ? ))))
+
+(defvar chess-pgn-tag-order
+  '("Event" "Site" "Date" "Round"
+    "White" "WhiteElo" "Black" "BlackElo"
+    "Result" "TimeControl"))
+
+(defun chess-game-to-pgn (game &optional indented to-string)
+  "Convert a chess GAME to PGN notation.
+If INDENTED is non-nil, indent the move texts.
+If TO-STRING is non-nil, return a string instead of inserting the resulting
+PGN text."
+  (if to-string
+      (with-temp-buffer
+       (chess-insert-pgn game indented)
+       (buffer-string))
+    (chess-insert-pgn game indented)))
+
+(defun chess-member-index (tag)
+  (let ((index 0)
+       (tags chess-pgn-tag-order))
+    (while tags
+      (if (equal tag (car tags))
+         (setq tags nil)
+       (setq index (1+ index)
+             tags (cdr tags))))
+    index))
+
+(defun chess-insert-pgn (game &optional indented)
+  (let ((fen (chess-game-tag game "FEN"))
+       (first-pos (chess-game-pos game 0)))
+    (when (and fen (not (string= fen (chess-pos-to-fen first-pos))))
+      (chess-game-del-tag game "FEN")
+      (setq fen nil))
+    (if (and (not fen)
+            (not (eq chess-starting-position first-pos)))
+       (chess-game-set-tag game "FEN" (chess-pos-to-fen first-pos))))
+  (dolist (tag (sort (copy-alist (chess-game-tags game))
+                    (function
+                     (lambda (left right)
+                       (setq left (car left) right (car right))
+                       (let ((l-idx (chess-member-index left))
+                             (r-idx (chess-member-index right)))
+                         (cond
+                          ((and l-idx (not r-idx)) t)
+                          ((and (not l-idx) r-idx) nil)
+                          ((and l-idx r-idx) (< l-idx r-idx))
+                          (t (string-lessp left right))))))))
+    (insert (format "[%s \"%s\"]\n" (car tag) (cdr tag))))
+  (insert ?\n)
+  (let ((begin (point)))
+    (chess-pgn-insert-plies game 1 (chess-game-plies game))
+    (insert (or (chess-game-tag game "Result") "*") ?\n)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; chess-pgn-mode for editing and browsing PGN files.
+;;
+
+(require 'chess-database)
+(require 'chess-file)
+
+(defvar chess-pgn-database nil
+  "Chess database object.")
+(make-variable-buffer-local 'chess-pgn-database)
+
+(defvar chess-pgn-display nil
+  "If non-nil, the chess display object used for this buffer.")
+(make-variable-buffer-local 'chess-pgn-display)
+
+(defvar chess-pgn-current-game)
+(defvar chess-pgn-current-index)
+
+(make-variable-buffer-local 'chess-pgn-current-game)
+(make-variable-buffer-local 'chess-pgn-current-index)
+
+(chess-message-catalog 'english
+  '((could-not-read-pgn . "Could not read or find a PGN game")))
+
+;;;###autoload
+(defun chess-pgn-read (&optional file)
+  "Read and display a PGN game after point."
+  (interactive "P")
+  (if (or file (not (search-forward "[Event " nil t)))
+      (setq file (read-file-name "Read a PGN game from file: ")))
+  (if file
+      (find-file file))
+  (let ((game (chess-pgn-to-game)))
+    (if game
+       (chess-display-set-game
+        (setq chess-pgn-display (chess-create-display t))
+        game)
+      (chess-error 'could-not-read-pgn))))
+
+(eval-after-load "pcomplete"
+  '(progn
+     (make-variable-buffer-local 'pcomplete-default-completion-function)
+     (make-variable-buffer-local 'pcomplete-command-completion-function)
+     (make-variable-buffer-local 'pcomplete-parse-arguments-function)))
+
+;;;###autoload
+(define-derived-mode chess-pgn-mode text-mode "PGN"
+  "A mode for editing chess PGN files."
+  (setq comment-start "{"
+       comment-end "}")
+
+  (modify-syntax-entry ?\{ "<")
+  (modify-syntax-entry ?\} ">")
+  (modify-syntax-entry ?\" "\"")
+
+  (if (fboundp 'font-lock-mode)
+      (font-lock-mode 1))
+
+  (let ((map (current-local-map)))
+    (define-key map [(control ?c) (control ?c)] 'chess-pgn-show-position)
+    (define-key map [mouse-2] 'chess-pgn-mouse-show-position)
+
+    ;;(define-key map [(control ?m)] 'chess-pgn-move)
+    ;;(define-key map [space] 'chess-pgn-move)
+    (define-key map [? ] 'chess-pgn-insert-and-show-position)
+
+    (when (require 'pcomplete nil t)
+      (setq pcomplete-default-completion-function 'chess-pgn-completions)
+      (setq pcomplete-command-completion-function 'chess-pgn-completions)
+      (setq pcomplete-parse-arguments-function 'chess-pgn-current-word)
+      (define-key map [tab] 'chess-pgn-complete-move))))
+
+;;;###autoload
+(defalias 'pgn-mode 'chess-pgn-mode)
+
+(defvar chess-pgn-bold-face 'bold)
+
+(defconst chess-pgn-move-regexp
+  (concat "[^0-9]\\(\\([1-9][0-9]*\\)\\.\\s-+"
+         "\\(\\.\\.\\.\\|" chess-algebraic-regexp "\\)"
+         "\\(\\s-+\\(" chess-algebraic-regexp "\\)\\)?\\)"))
+
+(if (fboundp 'font-lock-add-keywords)
+    (font-lock-add-keywords
+     'chess-pgn-mode
+     (list (list "\\[\\(\\S-+\\)\\s-+\".*\"\\]" 1 'font-lock-keyword-face)
+          (cons "\\(1-0\\|0-1\\|1/2-1/2\\|\\*\\)$" 'chess-pgn-bold-face))))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.pgn\\'" . chess-pgn-mode))
+
+(eval-after-load "mm-decode"
+  '(unless (fboundp 'mm-display-pgn-inline)
+     (defun mm-display-pgn-inline (handle)
+       (mm-display-inline-fontify handle 'chess-pgn-mode))
+     (push '("application/x-chess-pgn" mm-display-pgn-inline identity)
+          mm-inline-media-tests)
+     (push "application/x-chess-pgn" mm-inlined-types)
+     (push "application/x-chess-pgn" mm-automatic-display)))
+
+(defun chess-pgn-completions ()
+  "Return a list of possible completions for the current move."
+  (let ((position (chess-game-pos chess-pgn-current-game
+                                 chess-pgn-current-index)))
+    (while (pcomplete-here
+           (mapcar 'chess-ply-to-algebraic
+                   (chess-legal-plies position :color
+                                      (chess-pos-side-to-move position)))))))
+
+(defun chess-pgn-current-word ()
+  (let ((here (point)))
+    (if (setq chess-pgn-current-index (chess-pgn-index))
+       (save-restriction
+         (narrow-to-region (match-beginning 3) here)
+         (pcomplete-parse-buffer-arguments)))))
+
+(defun chess-pgn-complete-move ()
+  (interactive)
+  (save-restriction
+    (narrow-to-region (point-min) (point))
+    (chess-pgn-read-game))
+  (if (eq last-command 'chess-pgn-complete-move)
+      (setq last-command 'pcomplete))
+  (call-interactively 'pcomplete))
+
+(defun chess-pgn-index (&optional location)
+  "Return the move index associated with point."
+  (save-excursion
+    (when location (goto-char location))
+    (if (re-search-backward chess-pgn-move-regexp nil t)
+       (let* ((index (string-to-number (match-string 2)))
+              (first-move (match-string 3))
+              (second-move (match-string 14))
+              (ply (1+ (* 2 (1- index)))))
+         (if second-move
+             (setq ply (1+ ply)))
+         ply))))
+
+(defun chess-pgn-read-game ()
+  "Load a database to represent this file if not already up."
+  (unless chess-pgn-database
+    (setq chess-pgn-database
+         (chess-database-open buffer-file-name 'chess-file)))
+
+  ;; a hack for speed's sake to read the current game text
+  (save-excursion
+    (let ((locations chess-file-locations)
+         (here (point))
+         last-location index)
+      (while locations
+       (if (> (car locations) here)
+           (setq locations nil)
+         (setq last-location locations
+               locations (cdr locations))))
+      (setq index (if last-location
+                     (- (length chess-file-locations) (length last-location))
+                   0))
+      (when (or (null chess-pgn-current-game)
+               (/= index (chess-game-data chess-pgn-current-game
+                                          'database-index)))
+       (setq chess-pgn-current-game
+             (chess-database-read chess-pgn-database index))))))
+
+(defun chess-pgn-create-display ()
+  "Return the move index associated with point."
+  ;; now find what position we're at in the game
+  (save-excursion
+    (when chess-pgn-current-game
+      (let ((index (chess-pgn-index)))
+       (if (or (and (or (null chess-pgn-display)
+                        (not (buffer-live-p chess-pgn-display)))
+                    (let ((chess-game-inhibit-events t))
+                      (setq chess-pgn-display (chess-create-display t))))
+               (/= (chess-game-data chess-pgn-current-game 'database-index)
+                   (or (chess-game-data (chess-display-game chess-pgn-display)
+                                        'database-index) -1)))
+           (progn
+             (chess-display-disable-popup chess-pgn-display)
+             (chess-display-set-game chess-pgn-display
+                                     chess-pgn-current-game index)
+             (chess-game-set-tag (chess-display-game chess-pgn-display)
+                                 'database-index
+                                 (chess-game-data chess-pgn-current-game
+                                                  'database-index)))
+         (chess-display-set-index chess-pgn-display index))
+       (chess-display-popup chess-pgn-display)))))
+
+(defun chess-pgn-visualize ()
+  "Visualize the move for the PGN game under point.
+This does not require that the buffer be in PGN mode."
+  (let (game)
+    (save-excursion
+      (if (search-backward "[Event " nil t)
+         (setq game (chess-pgn-to-game))))
+    (if game
+       (let ((chess-pgn-current-game game))
+         (chess-pgn-show-position))
+      (chess-error 'could-not-read-pgn))))
+
+(defun chess-pgn-show-position ()
+  (interactive)
+  (if (not (eq major-mode 'chess-pgn-mode))
+      (chess-pgn-visualize)
+    (chess-pgn-read-game)
+    (chess-pgn-create-display)))
+
+(defun chess-pgn-mouse-show-position (event)
+  (interactive "e")
+  (if (fboundp 'event-window)          ; XEmacs
+      (progn
+       (set-buffer (window-buffer (event-window event)))
+       (and (event-point event) (goto-char (event-point event))))
+    (set-buffer (window-buffer (posn-window (event-start event))))
+    (goto-char (posn-point (event-start event))))
+  (chess-pgn-show-position))
+
+(defun chess-pgn-insert-and-show-position ()
+  (interactive)
+  (self-insert-command 1)
+  (chess-pgn-show-position))
+
+(provide 'chess-pgn)
+
+;;; chess-pgn.el ends here
diff --git a/packages/chess/chess-phalanx.el b/packages/chess/chess-phalanx.el
new file mode 100644
index 0000000..4d60b43
--- /dev/null
+++ b/packages/chess/chess-phalanx.el
@@ -0,0 +1,68 @@
+;;; chess-phalanx.el --- Play chess against phalanx!
+
+;; Copyright (C) 2002, 2004  Free Software Foundation, Inc.
+
+;; Author: John Wiegley
+;; Maintainer: Mario Lang <address@hidden>
+;; Keywords: games, processes
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+(require 'chess-common)
+
+(defgroup chess-phalanx nil
+  "The publically available chess engine 'phalanx'."
+  :group 'chess-engine
+  :link '(url-link "http://phalanx.sourceforge.net/";))
+
+(defcustom chess-phalanx-path (executable-find "phalanx")
+  "The path to the phalanx executable."
+  :type 'file
+  :group 'chess-phalanx)
+
+(defvar chess-phalanx-regexp-alist
+  (list
+   (cons (concat "my move is P?\\(" chess-algebraic-regexp "\\)\\s-*$")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-engine-convert-algebraic (match-string 1) t)))))
+   (cons "Illegal move:\\s-*\\(.*\\)"
+        (function
+         (lambda ()
+           (error (match-string 1)))))))
+
+(defun chess-phalanx-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-common-handler game 'initialize "phalanx")))
+       (when (and proc (processp proc)
+                  (eq (process-status proc) 'run))
+         (process-send-string proc "nopost\n")
+         (setq chess-engine-process proc
+               chess-engine-opponent-name "Phalanx")
+         t)))
+
+     ((eq event 'resign)
+      (chess-game-set-data game 'active nil))
+
+     (t
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-phalanx)
+
+;;; chess-phalanx.el ends here
diff --git a/packages/chess/chess-plain.el b/packages/chess/chess-plain.el
new file mode 100644
index 0000000..1682533
--- /dev/null
+++ b/packages/chess/chess-plain.el
@@ -0,0 +1,311 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Plain ASCII chess display
+;;
+
+(require 'chess-display)
+
+;;; Code:
+
+(defgroup chess-plain nil
+  "A minimal, customizable ASCII display."
+  :group 'chess-display)
+
+(defcustom chess-plain-border-style [?+ ?- ?+ ?| ?| ?+ ?- ?+]
+  "If non-nil, a vector describing the border characters."
+  :group 'chess-plain
+  :type '(choice (const :tag "No border" nil)
+                (vector :tag "Plain ASCII"
+                        (const :value ?+ :tag "Upper left corner: +")
+                        (const :value ?- :tag "Upper border: -")
+                        (const :value ?+ :tag "Upper right corner: +")
+                        (const :value ?| :tag "Left border: |")
+                        (const :value ?| :tag "Right border: |")
+                        (const :value ?+ :tag "Lower left corrner: +")
+                        (const :value ?- :tag "Lower border: -")
+                        (const :value ?+ :tag "Lower right corner: +"))
+                (vector :tag "Unicode box drawing characters"
+                        (const :value ?┌ :tag "Upper left corner: ┌")
+                        (const :value ?╶ :tag "Upper border: ╶")
+                        (const :value ?┐ :tag "Upper right corner: ┐")
+                        (const :value ?╷ :tag "Left border: ╷")
+                        (const :value ?╷ :tag "Right border: ╷")
+                        (const :value ?└ :tag "Lower left corrner: └")
+                        (const :value ?╶ :tag "Lower border: ╶")
+                        (const :value ?┘ :tag "Lower right corner: ┘"))
+                (vector :tag "Custom"
+                        (character :tag "Upper left corner")
+                        (character :tag "Upper border")
+                        (character :tag "Upper right corner")
+                        (character :tag "Left border")
+                        (character :tag "Right border")
+                        (character :tag "Lower left corner")
+                        (character :tag "Lower border")
+                        (character :tag "Lower right corner"))))
+
+(defcustom chess-plain-black-square-char ?.
+  "Character used to indicate empty black squares."
+  :group 'chess-plain
+  :type 'character)
+
+(defcustom chess-plain-white-square-char ?.
+  "Character used to indicate empty white squares."
+  :group 'chess-plain
+  :type 'character)
+
+(defcustom chess-plain-piece-chars '((?K . ?K)
+                                    (?Q . ?Q)
+                                    (?R . ?R)
+                                    (?B . ?B)
+                                    (?N . ?N)
+                                    (?P . ?P)
+                                    (?k . ?k)
+                                    (?q . ?q)
+                                    (?r . ?r)
+                                    (?b . ?b)
+                                    (?n . ?n)
+                                    (?p . ?p))
+  "Alist of pieces and their corresponding characters.
+Characters defined here should make sense in respect to the current setting
+of `chess-plain-upcase-indicates'."
+  :group 'chess-plain
+  :type '(choice (list :tag "White has uppercase english letters and black has 
lowercase english letters"
+                      (const :tag "White King: K"   (?K . ?K))
+                      (const :tag "White Queen: Q"  (?Q . ?Q))
+                      (const :tag "White Rook: R"   (?R . ?R))
+                      (const :tag "White Bishop: B" (?B . ?B))
+                      (const :tag "White Knight: N" (?N . ?N))
+                      (const :tag "White Pawn: P"   (?P . ?P))
+                      (const :tag "Black King: k"   (?k . ?k))
+                      (const :tag "Black Queen: q"  (?q . ?q))
+                      (const :tag "Black Rook: r"   (?r . ?r))
+                      (const :tag "Black Bishop: b" (?b . ?b))
+                      (const :tag "Black Knight: n" (?n . ?n))
+                      (const :tag "Black Pawn: p"   (?p . ?p)))
+                (list :tag "White has uppercase german letters and black has 
lowercase german letters"
+                      (const :tag "White King: K"   (?K . ?K))
+                      (const :tag "White Queen: D"  (?Q . ?D))
+                      (const :tag "White Rook: T"   (?R . ?T))
+                      (const :tag "White Bishop: L" (?B . ?L))
+                      (const :tag "White Knight: S" (?N . ?S))
+                      (const :tag "White Pawn: B"   (?P . ?B))
+                      (const :tag "Black King: k"   (?k . ?k))
+                      (const :tag "Black Queen: d"  (?q . ?d))
+                      (const :tag "Black Rook: t"   (?r . ?t))
+                      (const :tag "Black Bishop: l" (?b . ?l))
+                      (const :tag "Black Knight: s" (?n . ?s))
+                      (const :tag "Black Pawn: b"   (?p . ?b)))
+                (list :tag "White has english letters and black has german 
letters"
+                      (const :tag "White King: K"   (?K . ?K))
+                      (const :tag "White Queen: Q"  (?Q . ?Q))
+                      (const :tag "White Rook: R"   (?R . ?R))
+                      (const :tag "White Bishop: B" (?B . ?B))
+                      (const :tag "White Knight: N" (?N . ?N))
+                      (const :tag "White Pawn: P"   (?P . ?P))
+                      (const :tag "Black King: J"   (?k . ?J))
+                      (const :tag "Black Queen: D"  (?q . ?D))
+                      (const :tag "Black Rook: T"   (?r . ?T))
+                      (const :tag "Black Bishop: L" (?b . ?L))
+                      (const :tag "Black Knight: S" (?n . ?S))
+                      (const :tag "Black Pawn: X"   (?p . ?X)))
+                (list :tag "White has german letters and black has english 
letters"
+                      (const :tag "White King: J"   (?K . ?J))
+                      (const :tag "White Queen: D"  (?Q . ?D))
+                      (const :tag "White Rook: T"   (?R . ?T))
+                      (const :tag "White Bishop: L" (?B . ?L))
+                      (const :tag "White Knight: S" (?N . ?S))
+                      (const :tag "White Pawn: X"   (?P . ?X))
+                      (const :tag "Black King: K"   (?k . ?K))
+                      (const :tag "Black Queen: Q"  (?q . ?Q))
+                      (const :tag "Black Rook: R"   (?r . ?R))
+                      (const :tag "Black Bishop: B" (?b . ?B))
+                      (const :tag "Black Knight: N" (?n . ?N))
+                      (const :tag "Black Pawn: P"   (?p . ?P)))
+                (list :tag "Unicode figure pieces"
+                      (const :tag "White King: ♔"   (?K . ?♔))
+                      (const :tag "White Queen: ♕"  (?Q . ?♕))
+                      (const :tag "White Rook: ♖"   (?R . ?♖))
+                      (const :tag "White Bishop: ♗" (?B . ?♗))
+                      (const :tag "White Knight: ♘" (?N . ?♘))
+                      (const :tag "White Pawn: ♙"   (?P . ?♙))
+                      (const :tag "Black King: ♚"   (?k . ?♚))
+                      (const :tag "Black Queen: ♛"  (?q . ?♛))
+                      (const :tag "Black Rook: ♜"   (?r . ?♜))
+                      (const :tag "Black Bishop: ♝" (?b . ?♝))
+                      (const :tag "Black Knight: ♞" (?n . ?♞))
+                      (const :tag "Black Pawn: ♟"   (?p . ?♟)))
+                (list :tag "User defined"
+                      (cons :format "%v"
+                            (const :format "" ?K) (character :tag "White 
King"))
+                      (cons :format "%v"
+                            (const :format "" ?Q) (character :tag "White 
Queen"))
+                      (cons :format "%v"
+                            (const :format "" ?R) (character :tag "White 
Rook"))
+                      (cons :format "%v"
+                            (const :format "" ?B) (character :tag "White 
Bishop"))
+                      (cons :format "%v"
+                            (const :format "" ?N) (character :tag "White 
Knight"))
+                      (cons :format "%v"
+                            (const :format "" ?P) (character :tag "White 
Pawn"))
+                      (cons :format "%v"
+                            (const :format "" ?k) (character :tag "Black 
King"))
+                      (cons :format "%v"
+                            (const :format "" ?q) (character :tag "Black 
Queen"))
+                      (cons :format "%v"
+                            (const :format "" ?r) (character :tag "Black 
Rook"))
+                      (cons :format "%v"
+                            (const :format "" ?b) (character :tag "Black 
Bishop"))
+                      (cons :format "%v"
+                            (const :format "" ?n) (character :tag "Black 
Knight"))
+                      (cons :format "%v"
+                            (const :format "" ?p) (character :tag "Black 
Pawn")))
+                (function :tag "Function")))
+
+(defcustom chess-plain-upcase-indicates 'color
+  "Defines what a upcase char should indicate.
+The default is 'color, meaning a upcase char is a white piece, a
+lowercase char a black piece.  Possible values: 'color (default),
+'square-color.  If set to 'square-color, a uppercase character
+indicates a piece on a black square. (Note that you also need to
+modify `chess-plain-piece-chars' to avoid real confusion.)"
+  :group 'chess-plain
+  :type '(choice (const :tag "Upcase indicates white piece" color)
+                (const :tag "Upcase indicates black square" square-color)))
+
+(defcustom chess-plain-spacing 1
+  "Number of spaces between files."
+  :group 'chess-plain
+  :type 'integer)
+
+(defface chess-plain-black-face
+  '((((class color) (background light)) (:foreground "Black"))
+    (((class color) (background dark)) (:foreground "Green"))
+    (t (:bold t)))
+  "The face used for black pieces on the ASCII display."
+  :group 'chess-plain)
+
+(defface chess-plain-white-face
+  '((((class color) (background light)) (:foreground "Blue"))
+    (((class color) (background dark)) (:foreground "Yellow"))
+    (t (:bold t)))
+  "The face used for white pieces on the ASCII display."
+  :group 'chess-plain)
+
+(defface chess-plain-highlight-face
+  '((((class color) (background light)) (:background "#add8e6"))
+    (((class color) (background dark)) (:background "#add8e6")))
+  "Face to use for highlighting pieces that have been selected."
+  :group 'chess-plain)
+
+(defcustom chess-plain-popup-function 'chess-plain-popup
+  "The function used to popup a chess-plain display."
+  :type 'function
+  :group 'chess-plain)
+
+(defcustom chess-plain-separate-frame nil
+  "If non-nil, display the chessboard in its own frame."
+  :type 'boolean
+  :group 'chess-plain)
+
+;;; Code:
+
+(defun chess-plain-customize ()
+  "Show possible customisations for the plain chessboard display."
+  (interactive)
+  (customize-group 'chess-plain))
+
+(defun chess-plain-handler (event &rest args)
+  (cond
+   ((eq event 'initialize) t)
+   ((eq event 'popup) (funcall chess-plain-popup-function))
+   (t (apply (intern-soft (concat "chess-plain-" (symbol-name event))) args))))
+
+(defun chess-plain-popup ()
+  (if chess-plain-separate-frame
+      (chess-display-popup-in-frame 9 (* (1+ chess-plain-spacing) 8)
+                                   nil nil t)
+    (chess-display-popup-in-window)))
+
+(defun chess-plain-piece-text (piece rank file)
+  (let ((white-square (zerop (% (+ file rank) 2))))
+    (if (eq piece ? )
+       (if white-square
+           chess-plain-white-square-char
+         chess-plain-black-square-char)
+      (let* ((pchar (cdr (assq piece chess-plain-piece-chars)))
+            (p (char-to-string
+                (if (eq chess-plain-upcase-indicates 'square-color)
+                    (if white-square (downcase pchar) (upcase pchar))
+                  pchar))))
+       (add-text-properties 0 1 (list 'face (if (> piece ?a)
+                                                'chess-plain-black-face
+                                              'chess-plain-white-face)) p)
+       p))))
+
+(defun chess-plain-draw-square (pos piece index)
+  "Draw a piece at POS on an already drawn display."
+  (save-excursion
+    (goto-char pos)
+    (delete-char 1)
+    (insert (chess-plain-piece-text piece (chess-index-rank index)
+                                   (chess-index-file index)))
+    (add-text-properties pos (point) (list 'chess-coord index))))
+
+(defun chess-plain-draw (position perspective)
+  "Draw the given POSITION from PERSPECTIVE's point of view.
+PERSPECTIVE is t for white or nil for black."
+  (let ((inhibit-redisplay t)
+       (pos (point)))
+    (erase-buffer)
+    (let* ((inverted (not perspective))
+          (rank (if inverted 7 0))
+          (file (if inverted 7 0)) beg)
+      (when chess-plain-border-style
+       (insert ?  (aref chess-plain-border-style 0)
+               (make-string (+ 8 (* 7 chess-plain-spacing))
+                            (aref chess-plain-border-style 1))
+               (aref chess-plain-border-style 2) ?\n))
+      (while (if inverted (>= rank 0) (< rank 8))
+       (when chess-plain-border-style
+         (insert (number-to-string (- 8 rank))
+                 (aref chess-plain-border-style 3)))
+       (while (if inverted (>= file 0) (< file 8))
+         (let ((piece (chess-pos-piece position
+                                       (chess-rf-to-index rank file)))
+               (begin (point)))
+           (insert (chess-plain-piece-text piece rank file))
+           (add-text-properties begin (point)
+                                (list 'chess-coord
+                                      (chess-rf-to-index rank file)))
+           (when (if inverted (>= file 1) (< file 7))
+             (insert (make-string chess-plain-spacing ? ))))
+         (setq file (if inverted (1- file) (1+ file))))
+       (when chess-plain-border-style
+         (insert (aref chess-plain-border-style 4)))
+       (insert ?\n)
+       (setq file (if inverted 7 0)
+             rank (if inverted (1- rank) (1+ rank))))
+      (if chess-plain-border-style
+         (insert ?  (aref chess-plain-border-style 5)
+                 (make-string (+ 8 (* 7 chess-plain-spacing))
+                              (aref chess-plain-border-style 6))
+                 (aref chess-plain-border-style 7) ?\n
+                 ? ?  
+                 (let ((string (if (not inverted) "abcdefgh" "hgfedcba")))
+                   (mapconcat 'string (string-to-list string) 
+                              (make-string chess-plain-spacing ? )))))
+      (set-buffer-modified-p nil)
+      (goto-char pos))))
+
+(defun chess-plain-highlight (index &optional mode)
+  (let ((pos (chess-display-index-pos nil index)))
+    (put-text-property pos (1+ pos) 'face
+                      (cond
+                       ((eq mode :selected)
+                        'chess-plain-highlight-face)
+                       (t
+                        (chess-display-get-face mode))))))
+
+(provide 'chess-plain)
+
+;;; chess-plain.el ends here
diff --git a/packages/chess/chess-ply.el b/packages/chess/chess-ply.el
new file mode 100644
index 0000000..a506b79
--- /dev/null
+++ b/packages/chess/chess-ply.el
@@ -0,0 +1,474 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Routines for manipulating chess plies
+;;
+
+;;; Commentary:
+
+;; A ply is the differential between two positions.  Or, it is the
+;; coordinate transformations applied to one position in order to
+;; arrive at the following position.  It is also informally called "a
+;; move".
+;;
+;; A ply is represented in Lisp using a cons cell of the form:
+;;
+;;   (BASE-POSITION .
+;;    (FROM-COORD1 TO-COORD1 [FROM-COORD2 TO-COORD2] [KEYWORDS]))
+;;
+;; The KEYWORDS indicate special actions that are not really chess
+;; moves:
+;;
+;;   :promote PIECE     ; promote pawn to PIECE on arrival
+;;   :resign            ; a resignation causes the game to end
+;;   :stalemate
+;;   :repetition
+;;   :perpetual
+;;   :check             ; check is announced
+;;   :checkmate
+;;   :draw              ; a draw was offered and accepted
+;;   :draw-offered      ; a draw was offered but not accepted
+;;
+;; A ply may be represented in ASCII by printing the FEN string of the
+;; base position, and then printing the positional transformation in
+;; algebraic notation.  Since the starting position is usually known,
+;; the FEN string is optional.  A ply may be represented graphically
+;; by moving the chess piece(s) involved.  It may be rendered verbally
+;; by voicing which piece is to move, where it will move to, and what
+;; will happen a result of the move (piece capture, check, etc).
+;;
+;; Plies may be sent over network connections, postal mail, e-mail,
+;; etc., so long as the current position is maintained at both sides.
+;; Transmitting the base position's FEN string along with the ply
+;; offers a form of confirmation during the course of a game.
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'chess-pos)
+(require 'chess-algebraic)
+
+(defgroup chess-ply nil
+  "Routines for manipulating chess plies."
+  :group 'chess)
+
+(defsubst chess-ply-pos (ply)
+  "Returns the base position associated with PLY."
+  (assert (listp ply))
+  (car ply))
+
+(defsubst chess-ply-set-pos (ply position)
+  "Set the base position of PLY."
+  (assert (listp ply))
+  (assert (vectorp position))
+  (setcar ply position))
+
+(defsubst chess-ply-changes (ply)
+  (assert (listp ply))
+  (cdr ply))
+
+(defsubst chess-ply-set-changes (ply changes)
+  (assert (listp ply))
+  (assert (listp changes))
+  (setcdr ply changes))
+
+(defun chess-ply-any-keyword (ply &rest keywords)
+  (assert (listp ply))
+  (catch 'found
+    (dolist (keyword keywords)
+      (if (memq keyword (chess-ply-changes ply))
+         (throw 'found keyword)))))
+
+(defun chess-ply-keyword (ply keyword)
+  (assert (listp ply))
+  (assert (symbolp keyword))
+  (let ((item (memq keyword (chess-ply-changes ply))))
+    (if item
+       (if (eq item (last (chess-ply-changes ply)))
+           t
+         (cadr item)))))
+
+(defun chess-ply-set-keyword (ply keyword &optional value)
+  (assert (listp ply))
+  (assert (symbolp keyword))
+  (let* ((changes (chess-ply-changes ply))
+        (item (memq keyword changes)))
+    (if item
+       (if value
+           (setcar (cdr item) value))
+      (nconc changes (if value
+                        (list keyword value)
+                      (list keyword))))
+    value))
+
+(defsubst chess-ply-source (ply)
+  "Returns the source square index value of PLY."
+  (assert (listp ply))
+  (let ((changes (chess-ply-changes ply)))
+    (and (listp changes) (not (symbolp (car changes)))
+        (car changes))))
+
+(defsubst chess-ply-target (ply)
+  "Returns the target square index value of PLY."
+  (assert (listp ply))
+  (let ((changes (chess-ply-changes ply)))
+    (and (listp changes) (not (symbolp (car changes)))
+        (cadr changes))))
+
+(defsubst chess-ply-next-pos (ply)
+  (assert (listp ply))
+  (or (chess-ply-keyword ply :next-pos)
+      (let ((position (apply 'chess-pos-move
+                            (chess-pos-copy (chess-ply-pos ply))
+                            (chess-ply-changes ply))))
+       (chess-pos-set-preceding-ply position ply)
+       (chess-ply-set-keyword ply :next-pos position))))
+
+(defsubst chess-ply-to-string (ply &optional long)
+  (assert (listp ply))
+  (chess-ply-to-algebraic ply long))
+
+(defsubst chess-ply-from-string (position move)
+  (assert (vectorp position))
+  (assert (stringp move))
+  (chess-algebraic-to-ply position move))
+
+(defconst chess-piece-name-table
+  '(("queen"  . ?q)
+    ("rook"   . ?r)
+    ("knight" . ?n)
+    ("bishop" . ?b)))
+
+(defun chess-ply-castling-changes (position &optional long king-index)
+  "Create castling changes; this function supports Fischer Random castling."
+  (assert (vectorp position))
+  (let* ((color (chess-pos-side-to-move position))
+        (king (or king-index (chess-pos-king-index position color)))
+        (rook (chess-pos-can-castle position (if color
+                                                 (if long ?Q ?K)
+                                               (if long ?q ?k))))
+        (bias (if long -1 1)) pos)
+    (when rook
+      (setq pos (chess-incr-index king 0 bias))
+      (while (and pos (not (equal pos rook))
+                 (chess-pos-piece-p position pos ? )
+                 (or (and long (< (chess-index-file pos) 2))
+                     (chess-pos-legal-candidates
+                      position color pos (list king))))
+       (setq pos (chess-incr-index pos 0 bias)))
+      (if (equal pos rook)
+         (list king (chess-rf-to-index (if color 7 0) (if long 2 6))
+               rook (chess-rf-to-index (if color 7 0) (if long 3 5))
+               (if long :long-castle :castle))))))
+
+(chess-message-catalog 'english
+  '((pawn-promote-query  . "Promote to queen? ")
+    (ambiguous-promotion . "Promotion without :promote keyword")))
+
+(defvar chess-ply-checking-mate nil)
+(defvar chess-ply-allow-interactive-query nil)
+
+(defsubst chess-ply-create* (position)
+  (assert (vectorp position))
+  (list position))
+
+(defun chess-ply-create (position &optional valid-p &rest changes)
+  "Create a ply from the given POSITION by applying the supplied CHANGES.
+This function will guarantee the resulting ply is legal, and will also
+annotate the ply with :check or other modifiers as necessary.  It will
+also extend castling, and will prompt for a promotion piece.
+
+Note: Do not pass in the rook move if CHANGES represents a castling
+maneuver."
+  (assert (vectorp position))
+  (let* ((ply (cons position changes))
+        (color (chess-pos-side-to-move position))
+        piece)
+    (if (or (null changes) (symbolp (car changes)))
+       ply
+      ;; validate that `changes' can be legally applied to the given
+      ;; position
+      (when (or valid-p
+               (chess-legal-plies position :any :index (car changes)
+                                  :target (cadr changes)))
+       (unless chess-ply-checking-mate
+         (setq piece (chess-pos-piece position (car changes)))
+
+         ;; is this a castling maneuver?
+         (if (and (= piece (if color ?K ?k))
+                  (not (or (memq :castle changes)
+                           (memq :long-castle changes))))
+             (let* ((target (cadr changes))
+                    (file (chess-index-file target))
+                    (long (= 2 file))
+                    new-changes)
+               (if (and (or (and (= file 6)
+                                 (chess-pos-can-castle position
+                                                       (if color ?K ?k)))
+                            (and long
+                                 (chess-pos-can-castle position
+                                                       (if color ?Q ?q))))
+                        (setq new-changes
+                              (chess-ply-castling-changes position long
+                                                          (car changes))))
+                   (setcdr ply new-changes)))
+
+           (when (eq piece (if color ?P ?p))
+             ;; is this a pawn move to the ultimate rank?  if so, and
+             ;; we haven't already been told, ask for the piece to
+             ;; promote it to
+             (when (and (not (memq :promote changes))
+                        (= (if color 0 7)
+                           (chess-index-rank (cadr changes))))
+               ;; This does not always clear ALL input events
+               (discard-input) (sit-for 0) (sleep-for 0 1)
+               (discard-input)
+               (unless chess-ply-allow-interactive-query
+                 (chess-error 'ambiguous-promotion))
+               (let ((new-piece (if (yes-or-no-p
+                                     (chess-string 'pawn-promote-query))
+                                    ?Q ?N)))
+                 (nconc changes (list :promote (upcase new-piece)))))
+
+             ;; is this an en-passant capture?
+             (when (let ((ep (chess-pos-en-passant position)))
+                     (when ep
+                       (eq ep (funcall (if color #'+ #'-) (cadr changes) 8))))
+               (nconc changes (list :en-passant)))))
+
+         ;; we must determine whether this ply results in a check,
+         ;; checkmate or stalemate
+         (unless (or chess-pos-always-white
+                     (memq :check changes)
+                     (memq :checkmate changes)
+                     (memq :stalemate changes))
+           (let* ((chess-ply-checking-mate t)
+                  ;; jww (2002-04-17): this is a memory waste?
+                  (next-pos (chess-ply-next-pos ply))
+                  (next-color (not color))
+                  (king (chess-pos-king-index next-pos next-color))
+                  (in-check (catch 'in-check
+                              (chess-search-position next-pos king color t 
t))))
+             ;; first, see if the moves leaves the king in check.
+             ;; This is tested by seeing if any of the opponent's
+             ;; pieces can reach the king in the position that will
+             ;; result from this ply.  If the king is in check, we
+             ;; will then test for checkmate by seeing if any of his
+             ;; subjects can move or not.  That test will also
+             ;; confirm stalemate for us.
+             (if (or in-check
+                     (null (chess-legal-plies next-pos :any :index king)))
+                 ;; is the opponent's king in check/mate or stalemate
+                 ;; now, as a result of the changes?
+                 (if (chess-legal-plies next-pos :any :color next-color)
+                     (if in-check
+                         (nconc changes (list (chess-pos-set-status
+                                               next-pos :check))))
+                   (nconc changes (list (chess-pos-set-status
+                                         next-pos
+                                         (if in-check
+                                             :checkmate
+                                           :stalemate)))))))))
+       ;; return the annotated ply
+       ply))))
+
+(defsubst chess-ply-final-p (ply)
+  "Return non-nil if this is the last ply of a game/variation."
+  (or (chess-ply-any-keyword ply :drawn :perpetual :repetition
+                            :flag-fell :resign :aborted)
+      (chess-ply-any-keyword (chess-pos-preceding-ply
+                             (chess-ply-pos ply)) :stalemate :checkmate)))
+
+(eval-when-compile
+  (defvar position)
+  (defvar candidate)
+  (defvar color)
+  (defvar plies)
+  (defvar specific-target))
+
+(defvar chess-ply-throw-if-any nil)
+
+(defsubst chess-ply--add (rank-adj file-adj &optional pos)
+  "This is totally a shortcut."
+  (let ((target (or pos (chess-incr-index candidate rank-adj file-adj))))
+    (if (and (or (not specific-target)
+                (= target specific-target))
+            (chess-pos-legal-candidates position color target
+                                        (list candidate)))
+       (if chess-ply-throw-if-any
+           (throw 'any-found t)
+         (if (not chess-ply-allow-interactive-query)
+             (let ((promotion (and (chess-pos-piece-p position candidate
+                                                       (if color ?P ?p))
+                                    (= (chess-index-rank target)
+                                       (if color 0 7)))))
+               (if promotion
+                   (dolist (promote '(?Q ?R ?B ?N))
+                     (let ((ply (chess-ply-create position t candidate target
+                                                  :promote promote)))
+                       (when ply (push ply plies))))
+                 (let ((ply (chess-ply-create position t candidate target)))
+                   (when ply (push ply plies)))))
+           (let ((ply (chess-ply-create position t candidate target)))
+             (when ply (push ply plies))))))))
+
+(defun chess-legal-plies (position &rest keywords)
+  "Return a list of all legal plies in POSITION.
+KEYWORDS allowed are:
+
+  :any   return t if any piece can move at all
+  :color <t or nil>
+  :piece <piece character>
+  :file <number 0 to 7> [can only be used if :piece is present]
+  :index <coordinate index>
+  :target <specific target index>
+  :candidates <list of inddices>
+
+These will constrain the plies generated to those matching the above
+criteria.
+
+NOTE: All of the returned plies will reference the same copy of the
+position object passed in."
+  (assert (vectorp position))
+  (cond
+   ((null keywords)
+    (let ((plies (list t)))
+      (dolist (p '(?P ?R ?N ?B ?K ?Q ?p ?r ?n ?b ?k ?q))
+       (nconc plies (chess-legal-plies position :piece p)))
+      (cdr plies)))
+   ((memq :any keywords)
+    (let ((chess-ply-throw-if-any t))
+      (catch 'any-found
+       (apply 'chess-legal-plies position (delq :any keywords)))))
+   ((memq :color keywords)
+    (let ((plies (list t)))
+      (dolist (p (apply #'chess-pos-search* position (if (cadr (memq :color 
keywords))
+                                                        '(?P ?N ?B ?R ?Q ?K)
+                                                      '(?p ?n ?b ?r ?q ?k))))
+       (when (cdr p)
+         (nconc plies (chess-legal-plies position
+                                         :piece (car p) :candidates (cdr p)))))
+      (cdr plies)))
+   (t
+    (let* ((piece (cadr (memq :piece keywords)))
+          (color (if piece (< piece ?a)
+                   (chess-pos-side-to-move position)))
+          (specific-target (cadr (memq :target keywords)))
+          (test-piece
+           (upcase (or piece
+                       (chess-pos-piece position
+                                        (cadr (memq :index keywords))))))
+          (ep (when (eq test-piece ?P) (chess-pos-en-passant position)))
+          pos plies file)
+      ;; since we're looking for moves of a particular piece, do a
+      ;; more focused search
+      (dolist (candidate
+              (cond
+               ((cadr (memq :candidates keywords))
+                (cadr (memq :candidates keywords)))
+               ((setq pos (cadr (memq :index keywords)))
+                (list pos))
+               ((setq file (cadr (memq :file keywords)))
+                (let (candidates)
+                  (dotimes (rank 8)
+                    (setq pos (chess-rf-to-index rank file))
+                    (if (chess-pos-piece-p position pos piece)
+                        (push pos candidates)))
+                  candidates))
+               (t
+                (chess-pos-search position piece))))
+       (cond
+        ;; pawn movement, which is diagonal 1 when taking, but forward
+        ;; 1 or 2 when moving (the most complex piece, actually)
+        ((= test-piece ?P)
+         (let* ((bias  (if color -1 1))
+                (ahead (chess-next-index candidate (if color
+                                                       chess-direction-north
+                                                     chess-direction-south)))
+                (2ahead (when ahead (chess-next-index ahead (if color
+                                                                
chess-direction-north
+                                                       
chess-direction-south)))))
+           (when (chess-pos-piece-p position ahead ? )
+             (chess-ply--add nil nil ahead)
+             (if (and (= (if color 6 1) (chess-index-rank candidate))
+                      2ahead (chess-pos-piece-p position 2ahead ? ))
+                 (chess-ply--add nil nil 2ahead)))
+           (when (setq pos (chess-next-index candidate
+                                             (if color
+                                                 chess-direction-northeast
+                                               chess-direction-southwest)))
+             (if (chess-pos-piece-p position pos (not color))
+                 (chess-ply--add nil nil pos)
+               ;; check for en passant capture toward kingside
+               (when (and ep (= ep (funcall (if color #'+ #'-) pos 8)))
+                 (chess-ply--add nil nil pos))))
+           (when (setq pos (chess-next-index candidate
+                                             (if color
+                                                 chess-direction-northwest
+                                               chess-direction-southeast)))
+             (if (chess-pos-piece-p position pos (not color))
+                 (chess-ply--add nil nil pos)
+               ;; check for en passant capture toward queenside
+               (when (and ep (eq ep (funcall (if color #'+ #'-) pos 8)))
+                 (chess-ply--add nil nil pos))))))
+
+        ;; the rook, bishop and queen are the easiest; just look along
+        ;; rank and file and/or diagonal for the nearest pieces!
+        ((memq test-piece '(?R ?B ?Q))
+         (dolist (dir (cond
+                       ((= test-piece ?R) chess-rook-directions)
+                       ((= test-piece ?B) chess-bishop-directions)
+                       ((= test-piece ?Q) chess-queen-directions)))
+           (setq pos (chess-next-index candidate dir))
+           (while pos
+             (if (chess-pos-piece-p position pos ? )
+                 (progn
+                   (chess-ply--add nil nil pos)
+                   (setq pos (chess-next-index pos dir)))
+               (if (chess-pos-piece-p position pos (not color))
+                   (chess-ply--add nil nil pos))
+               (setq pos nil)))))
+
+        ;; the king is a trivial case of the queen, except when castling
+        ((= test-piece ?K)
+         (dolist (dir chess-king-directions)
+           (setq pos (chess-next-index candidate dir))
+           (if (and pos (or (chess-pos-piece-p position pos ? )
+                            (chess-pos-piece-p position pos (not color))))
+               (chess-ply--add nil nil pos)))
+
+         (unless (chess-search-position position candidate (not color) nil t)
+           (if (chess-pos-can-castle position (if color ?K ?k))
+               (let ((changes (chess-ply-castling-changes position nil
+                                                          candidate)))
+                 (if changes
+                     (if chess-ply-throw-if-any
+                         (throw 'any-found t)
+                       (push (cons position changes) plies)))))
+
+           (if (chess-pos-can-castle position (if color ?Q ?q))
+               (let ((changes (chess-ply-castling-changes position t
+                                                          candidate)))
+                 (if changes
+                     (if chess-ply-throw-if-any
+                         (throw 'any-found t)
+                       (push (cons position changes) plies)))))))
+
+        ;; the knight is a zesty little piece; there may be more than
+        ;; one, but at only one possible square in each direction
+        ((= test-piece ?N)
+         (dolist (dir chess-knight-directions)
+           ;; up the current file
+           (if (and (setq pos (chess-next-index candidate dir))
+                    (or (chess-pos-piece-p position pos ? )
+                        (chess-pos-piece-p position pos (not color))))
+               (chess-ply--add nil nil pos))))
+
+        (t (chess-error 'piece-unrecognized))))
+
+      plies))))
+
+(provide 'chess-ply)
+
+;;; chess-ply.el ends here
diff --git a/packages/chess/chess-polyglot.bin 
b/packages/chess/chess-polyglot.bin
new file mode 100644
index 0000000..07a2df6
Binary files /dev/null and b/packages/chess/chess-polyglot.bin differ
diff --git a/packages/chess/chess-polyglot.el b/packages/chess/chess-polyglot.el
new file mode 100644
index 0000000..58f2f94
--- /dev/null
+++ b/packages/chess/chess-polyglot.el
@@ -0,0 +1,549 @@
+;;; chess-polyglot.el --- Polyglot book access for Emacs  -*- lexical-binding: 
t; -*-
+
+;; Copyright (C) 2014  Mario Lang
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The polyglot book format uses a 64 bit zorbist hash to encode positions.
+;; Since 2 bits are used for tagging in Emacs Lisp, 64 bit values can not be
+;; represented as fixnums.  So we split the 64 bit value up into equally sized
+;; chunks (32 bit fixnums for now).  781 predefined zorbist hash keys are
+;; stored as constants (see `chess-polyglot-zorbist-keys') and used to 
calculate
+;; zorbist hashes from positions.
+
+;; Binary search is employed to quickly find all the moves from a certain
+;; position.  These moves are converted to proper chess ply objects (see
+;; chess-ply.el).
+
+;; The most interesting functions provided by this file are
+;; `chess-polyglot-book-open', `chess-polyglot-book-plies',
+;; `chess-polyglot-book-ply' and `chess-polyglot-book-close'.
+
+;; For a detailed description of the polyglot book format, see
+;; <URL:http://hardy.uhasselt.be/Toga/book_format.html> or
+;; <URL:http://hgm.nubati.net/book_format.html>.
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'chess-ply)
+(require 'chess-pos)
+
+(defgroup chess-polyglot ()
+  "Polyglot opening book support."
+  :group 'chess)
+
+(defcustom chess-polyglot-book-strength 1.0
+  "Influence random distribution when picking a ply from the book.
+
+A value above 1.0 means to prefer known good moves while a value below
+1.0 means to penalize known good moves.  0.0 will force uniform
+distribution of move weights.  For reasons of numerical overflow,
+this should be strictly less than 4.0."
+  :group 'chess-polyglot
+  :type '(float :match (lambda (widget value) (and (>= value 0) (< value 4)))))
+
+(defvar chess-polyglot-book nil
+  "The default polyglot book object.
+
+This is automatically set if `chess-polyglot-book-file' points to a valid
+polyglot book file.")
+
+(defsubst chess-polyglot-read-octets (n)
+  "Read N octets from the current buffer and advance point."
+  (let ((val 0))
+    (dotimes (_ n (progn (cl-assert (<= val most-positive-fixnum)) val))
+      (setq val (logior (lsh val 8)
+                       (progn (forward-char 1) (preceding-char)))))))
+
+(defsubst chess-polyglot-read-key ()
+  "Read a polyglot position hash (a 64 bit value) from the current buffer.
+A `cons' with the most significant 32 bits in `car' and the least significant
+32 bits in `cdr' is returned."
+  (cons (chess-polyglot-read-octets 4) (chess-polyglot-read-octets 4)))
+
+(defun chess-polyglot-read-move ()
+  "Read a polyglot move (a 32 bit value) from the current buffer.
+The result is a list of the form (FROM-INDEX TO-INDEX PROMOTION WEIGHT)."
+  (let ((mask (chess-polyglot-read-octets 2)))
+    (pcase (let (r)
+            (dotimes (_ 5 r)
+              (push (logand mask 7) r)
+              (setq mask (ash mask -3))))
+      (`(,promotion ,from-rank ,from-file ,to-rank ,to-file)
+       (list (chess-rf-to-index (- 7 from-rank) from-file)
+            (chess-rf-to-index (- 7 to-rank) to-file)
+            (nth promotion '(nil ?N ?B ?R ?Q))
+            (chess-polyglot-read-octets 2))))))
+
+(defun chess-polyglot-move-to-ply (position from to promotion weight)
+  "Convert a polyglot move for POSITION to a ply.
+FROM and TO are integers indicating the square indices.
+PROMOTION, if non-nil, indicates the piece to promote to.
+WEIGHT (an integer) is the relative weight of the move."
+  (cl-assert (vectorp position))
+  (cl-assert (and (integerp from) (>= from 0) (< from 64)))
+  (cl-assert (and (integerp to) (>= to 0) (< to 64)))
+  (cl-assert (memq promotion '(nil ?N ?B ?R ?Q)))
+  (cl-assert (integerp weight))
+  (let* ((color (chess-pos-side-to-move position))
+        (ply (apply #'chess-ply-create position nil
+                    (if (and (= from (chess-rf-to-index (if color 7 0) 4))
+                             (= from (chess-pos-king-index position color))
+                             (= (chess-index-rank from) (chess-index-rank to))
+                             (memq (chess-index-file to) '(0 7)))
+                        (chess-ply-castling-changes
+                         position (= (chess-index-file to) 0))
+                      (nconc (list from to)
+                             (when promotion (list :promote promotion)))))))
+    (chess-ply-set-keyword ply :polyglot-book-weight weight)
+    ply))
+
+(defsubst chess-polyglot-skip-learn ()
+  "Skip the (unused) 32 bit learn value."
+  (forward-char 4))
+
+(defconst chess-polyglot-record-size 16
+  "The size (in bytes) of a polyglot book entry.")
+
+(defsubst chess-polyglot-goto-record (record)
+  "Set point to the beginning of RECORD, a number starting from 0."
+  (goto-char (1+ (* record chess-polyglot-record-size))))
+
+(defsubst chess-polyglot-forward-record (n)
+  "Move point N book records forward (backward if N is negative).
+On reaching end or beginning of buffer, stop and signal error."
+  (forward-char (* n chess-polyglot-record-size)))
+
+(defsubst chess-polyglot-key-<= (lhs rhs)
+  "Non-nil if the polyglot key LHS is less than or equal to RHS."
+  (or (< (car lhs) (car rhs))
+      (and (= (car lhs) (car rhs)) (<= (cdr lhs) (cdr rhs)))))
+
+(defun chess-polyglot-read-moves (key)
+  "Read all moves associated with KEY from the current buffer."
+  (cl-assert (zerop (% (buffer-size) chess-polyglot-record-size)))
+  ;; Find leftmost entry.
+  (let ((left 0) (right (1- (/ (buffer-size) chess-polyglot-record-size))))
+    (while (< left right)
+      (let ((middle (/ (+ left right) 2)))
+       (if (chess-polyglot-key-<= key (progn (chess-polyglot-goto-record 
middle)
+                                             (chess-polyglot-read-key)))
+           (setq right middle)
+         (setq left (1+ middle)))))
+    (cl-assert (= left right))
+    (chess-polyglot-goto-record left))
+  ;; Read all entries with equal keys.
+  (let ((moves ()))
+    (while (equal key (chess-polyglot-read-key))
+      (setq moves (nconc moves (list (chess-polyglot-read-move))))
+      (chess-polyglot-skip-learn))
+    moves))
+
+(defconst chess-polyglot-zorbist-keys
+  [(2637767806 . 863464769) (720845184 . 95069639) (1155203408 . 610415943)
+   (2618685246 . 1655139042) (1971536997 . 1218186377) (848342074 . 540017087)
+   (263957791 . 1627660921) (3896152207 . 4076560586) (226391645 . 1484086288)
+   (436746274 . 3467632685) (2516964848 . 3797861296) (3491888988 . 3510251221)
+   (1086189917 . 1248276018) (18044180 . 1876255637) (1572111136 . 1190386149)
+   (597658413 . 2146900428) (97624494 . 2243205793) (1738507407 . 1854916977)
+   (1950989311 . 2149575947) (2098318769 . 3283594736) (2194108574 . 
2015279052)
+   (4079062812 . 2500884588) (856979699 . 2941369318) (1270058469 . 3877737539)
+   (2858720366 . 3170717948) (2378012835 . 1387254795) (2278688587 . 
2178388503)
+   (435406673 . 3555273441) (3031118064 . 1655806655) (2063925420 . 1107589828)
+   (3376753832 . 436852829) (615148625 . 1302492416) (1285502018 . 1963045959)
+   (346460119 . 1016137793) (2803604355 . 1176288659) (55085973 . 2968618255)
+   (1669016372 . 4287873088) (164740250 . 1037634196) (896886403 . 883023163)
+   (1935551383 . 2764331555) (410153072 . 4055711755) (533441746 . 1505690343)
+   (3541084098 . 3466290517) (3214426080 . 4267541060) (2675233103 . 
1951705124)
+   (1374411850 . 3115986997) (1552073989 . 3684348154) (4244110986 . 875606593)
+   (844343081 . 3115990494) (2356462440 . 135999605) (3116133511 . 377238503)
+   (2129956651 . 2197966368) (299173332 . 3276914047) (1701379241 . 745972291)
+   (1306570996 . 254977976) (2530644806 . 214138461) (1122123979 . 1667800879)
+   (1831591130 . 3801192033) (1116211970 . 920967505) (1594837592 . 2551651254)
+   (972591349 . 2046373768) (2479207924 . 1935030411) (1675376029 . 2367888248)
+   (3960916618 . 3935874422) (1398143232 . 3265801671) (133930885 . 1520005442)
+   (1351827834 . 2829577566) (2076951437 . 2723839804) (435980918 . 2364847828)
+   (1668970368 . 3738157273) (2185864314 . 3993911799) (2041407829 . 31969768)
+   (346864372 . 2004703094) (4047877822 . 3437142421) (3669961416 . 538399484)
+   (616810829 . 4190688246) (3144558884 . 4030272234) (216165387 . 2513010905)
+   (2761740594 . 3216997572) (3919406634 . 4096014649) (669429112 . 2434161727)
+   (2234904640 . 3111407601) (1421079802 . 1598085235) (1924213810 . 310373675)
+   (4002762044 . 2067865415) (2592451728 . 2586110625) (1890340057 . 
4031717877)
+   (4189625662 . 2577429954) (2276713138 . 3049850801) (2741429688 . 
3310307512)
+   (2924122950 . 3426712818) (421576781 . 1193704381) (2277442246 . 3030264553)
+   (153237420 . 595540057) (4278711886 . 4176286928) (2380848297 . 4030514510)
+   (2618700582 . 1303682185) (3018992701 . 185284845) (957243316 . 1291916363)
+   (1543415220 . 1898408169) (504378001 . 531073412) (2591337657 . 1692896435)
+   (1333852064 . 903543556) (1661259930 . 188168388) (561112646 . 2197961224)
+   (1536910315 . 2632972300) (1349168372 . 2307429186) (411152329 . 2745631190)
+   (1694697476 . 1081411140) (3755185459 . 2631660711) (4019355068 . 
4027326706)
+   (2066937809 . 3761668332) (3120395808 . 3878773315) (94890149 . 2109283191)
+   (3045629038 . 358812277) (1249184265 . 3465901047) (3477490924 . 2308583306)
+   (4114113436 . 3875911716) (1014604031 . 1434513279) (3991324799 . 
2222416029)
+   (2040431088 . 1539915569) (2253613964 . 4081224332) (2547464012 . 
1611168627)
+   (2722521980 . 4281500978) (71289574 . 213969824) (2450408597 . 903689630)
+   (1894451515 . 364024012) (1939968537 . 374938813) (1447259295 . 3785468557)
+   (4021046128 . 1664847745) (3139524504 . 3562928047) (1173487682 . 
4065269608)
+   (2467266804 . 3907744866) (4284945151 . 3486998177) (2925674454 . 
1953016432)
+   (3710671816 . 1271453948) (2129465869 . 1422863833) (587093076 . 18243356)
+   (3373793513 . 2411305257) (2156648078 . 1791034213) (3737413652 . 
1534461430)
+   (468575139 . 2935304962) (1129551363 . 3603256834) (2861996892 . 1763494778)
+   (2826449619 . 2465197654) (1704209531 . 1014895022) (3738359347 . 
3402630390)
+   (569410928 . 4095796581) (3021312909 . 2108247612) (2444777957 . 2664129360)
+   (282063667 . 3773661258) (682545472 . 3188439005) (3318488457 . 1917822038)
+   (1447622272 . 4045023041) (757420137 . 4038580915) (2613420942 . 4146703316)
+   (4012836163 . 150381244) (2938127093 . 3428591704) (1208226490 . 3086335530)
+   (2935205706 . 1446903363) (430957978 . 3830532479) (1381578755 . 3757172800)
+   (4109399782 . 1596778224) (288855589 . 1954372339) (3169178148 . 2256716053)
+   (2644780093 . 3895892303) (107966643 . 1071681559) (1304747544 . 2607225372)
+   (1359190711 . 1898207171) (3229237120 . 3273634996) (3027167685 . 
3863637628)
+   (3011615298 . 2883984519) (564135827 . 978463264) (770797430 . 362326607)
+   (1983662611 . 1907583229) (4153656423 . 48268960) (3609759233 . 720080177)
+   (3727911466 . 1270989899) (200708787 . 2366086947) (744508026 . 393422515)
+   (1213261630 . 65757284) (3485747185 . 3845951003) (2958861301 . 1680248217)
+   (2598470344 . 3163845864) (2767997908 . 4233451722) (3881113485 . 
1492930166)
+   (1773764017 . 2764062206) (4189435844 . 2898689174) (4234838742 . 
1267095035)
+   (2624081078 . 3302114327) (2395569449 . 390426320) (1728307101 . 690284926)
+   (3309827454 . 1118258254) (2028172868 . 3888829086) (4271523049 . 909051386)
+   (146617804 . 942892565) (2467685867 . 974297806) (2483428231 . 503635829)
+   (3743260573 . 2018222096) (1002067894 . 2289153437) (3535252974 . 
3738302271)
+   (4154611160 . 1002664952) (3623154244 . 2349656961) (3646679180 . 
3524329383)
+   (862933752 . 4282853607) (2806008282 . 3272780913) (2734037942 . 3828874677)
+   (1328176304 . 2137666995) (2278785213 . 2780788825) (381286368 . 1816476193)
+   (2074232908 . 2316293454) (4087773386 . 3651330956) (967884669 . 3728964514)
+   (4239349185 . 3213509668) (419231360 . 1463788948) (1275421624 . 2672384707)
+   (1088456595 . 436245261) (2365565249 . 783696577) (1758083333 . 845223583)
+   (2048846183 . 3530914274) (2635948261 . 124738415) (940630937 . 3069598626)
+   (839474029 . 1253439921) (902477345 . 165479306) (2836079689 . 2681188273)
+   (2007115168 . 2093139645) (1363041891 . 1282466609) (1130479818 . 
1063857938)
+   (3644959908 . 1260430427) (1385135238 . 46497915) (1386975934 . 3110156681)
+   (2635987502 . 4233461619) (1915744629 . 4117939016) (487743653 . 285736599)
+   (2049219159 . 3960249250) (69242857 . 3908563670) (1511066720 . 1488527520)
+   (215590039 . 1703564952) (1459430344 . 4184955468) (676103291 . 2642967214)
+   (83799035 . 3182827979) (1949179493 . 476101251) (2593534694 . 1493478716)
+   (2283504289 . 995211746) (1349412676 . 3449243940) (2954378677 . 1878813305)
+   (249149717 . 3329151870) (1578231917 . 1483986052) (4135085182 . 890874990)
+   (461755528 . 3505523909) (3669622373 . 634949665) (219487622 . 2914465301)
+   (2825233742 . 3703631897) (2479105382 . 2935590907) (2582097898 . 
3187672881)
+   (1221328648 . 1843341402) (2140891889 . 3958868911) (1482849818 . 345750049)
+   (751922730 . 3178831411) (3546542069 . 4036458902) (216179596 . 877293293)
+   (444615341 . 3117393729) (2424254530 . 494454238) (1344234989 . 3003337991)
+   (929188581 . 2760877801) (2507911009 . 1879899982) (980166547 . 1311840394)
+   (3566535507 . 1790747461) (143525013 . 2311336672) (4181962471 . 4273938872)
+   (1815842366 . 862009811) (911175674 . 1179575598) (3591335374 . 3694215714)
+   (1452686093 . 3393294272) (385158879 . 2447709103) (4011414929 . 1264623507)
+   (1448477120 . 911094312) (3971299641 . 2289992053) (3133647265 . 2234591563)
+   (3007628400 . 964409938) (1708345684 . 3673411261) (3031964479 . 2843021794)
+   (3022128657 . 2480338599) (118850112 . 473449293) (2048127371 . 3202109429)
+   (3158349745 . 382018770) (1505327237 . 3807570472) (2568424029 . 3272693060)
+   (1866609495 . 3888556537) (844703982 . 1852802964) (3504617058 . 682636099)
+   (1448882679 . 3733580327) (821387540 . 2215744532) (3631471417 . 311618895)
+   (2077838877 . 2383929020) (3352949096 . 1688694420) (2491080787 . 
3998672444)
+   (3368630402 . 4182204255) (983299419 . 2837414346) (3651215291 . 1033373924)
+   (265429091 . 3988955082) (3019003608 . 2896212153) (2955948456 . 3025235588)
+   (903690197 . 2266253487) (3925215275 . 89402958) (3959093811 . 3609545561)
+   (2455088053 . 223552128) (3115011301 . 2133669107) (1765081558 . 673805649)
+   (3324795129 . 2111392191) (3443871631 . 432345706) (3152559950 . 3425427147)
+   (3699649406 . 672784944) (3129545774 . 7668664) (2747044893 . 173040075)
+   (3925243406 . 852328481) (164095314 . 3161868591) (2234471571 . 1302682825)
+   (2164784335 . 105893718) (159995093 . 536831360) (599199451 . 425051327)
+   (3274759746 . 1680930461) (1192619331 . 3903085578) (2832721114 . 
3078660237)
+   (91404660 . 4030521531) (3044880024 . 1578375623) (3906596030 . 754177855)
+   (803516785 . 1894094672) (288455592 . 2030430096) (2143232492 . 2317305324)
+   (388352703 . 3406060288) (2521731420 . 3588403719) (1043041227 . 4028028525)
+   (3195290851 . 2468913324) (4166724431 . 3168683191) (1228226538 . 968516529)
+   (500177583 . 3444787306) (533367442 . 4252082053) (4236023256 . 657816314)
+   (413575568 . 3367198397) (3435884549 . 3334062733) (1004255532 . 1135705894)
+   (2859513268 . 4170618274) (3914086821 . 1251487871) (3080761716 . 
3489067886)
+   (3571165255 . 699353261) (773372954 . 3648014952) (769693293 . 2939128604)
+   (3116440923 . 507748478) (1687629160 . 3739431776) (2489486648 . 3502376324)
+   (3686847158 . 2878383449) (3530767427 . 902211375) (2121652637 . 2493976397)
+   (1827477891 . 930064171) (2549918411 . 4029725732) (2071415163 . 844118802)
+   (2236083679 . 3088894868) (2040110303 . 4144562891) (3489536313 . 
1133419300)
+   (2190878435 . 2301466071) (2465915458 . 2448602097) (1675766804 . 
2073834499)
+   (3329799896 . 1613253148) (1483966600 . 1348836071) (159505618 . 2527621997)
+   (2674227354 . 1695130688) (2683539437 . 1927873839) (3833196123 . 
2570082188)
+   (3891433165 . 759819981) (1455453349 . 2179602430) (1430583255 . 1957776111)
+   (2067726741 . 4235143439) (303380021 . 2998980439) (2136024795 . 3126725799)
+   (2054591852 . 1051702291) (1029141665 . 489794361) (2317027384 . 569642164)
+   (2068461795 . 624418658) (2499875684 . 1830645251) (1302894490 . 4319401)
+   (1002663431 . 2406815191) (1560941298 . 2060652753) (2141002286 . 515773223)
+   (3661248027 . 475092913) (3705503008 . 2419919909) (914567990 . 3496539911)
+   (3462935583 . 2039034761) (2878378006 . 2379243316) (1133857586 . 
1390159333)
+   (3023618742 . 2140726761) (282908558 . 944874642) (3686955701 . 1148723903)
+   (2604456805 . 4163675010) (3061545110 . 377179268) (3218002352 . 76459088)
+   (2836503392 . 916455101) (536836808 . 151306053) (2886925079 . 404221671)
+   (2936593041 . 2011015485) (453815187 . 1852163908) (3042568989 . 82176306)
+   (3279635891 . 4174836410) (3282689058 . 2360003049) (4088968807 . 
1516570623)
+   (2680453086 . 1322680794) (1731693966 . 3438253771) (1842894553 . 
1294307894)
+   (2736377365 . 2964642609) (121205621 . 521330014) (2324595870 . 3005710757)
+   (3784465521 . 676493813) (1958759409 . 2030833406) (1306150933 . 1016370058)
+   (2636541290 . 482366508) (1950415745 . 1695073534) (322077955 . 3746046623)
+   (3602873262 . 3829181504) (1211684447 . 1861645455) (504701736 . 4080111082)
+   (2407799203 . 1223857855) (1925743434 . 1498920209) (3617596327 . 845198428)
+   (2498480299 . 3484773806) (2680229135 . 2560201696) (3731399221 . 
1536412390)
+   (2756509305 . 2924710846) (2635957500 . 3459716133) (1372762539 . 769635894)
+   (802677945 . 3878474636) (1707760534 . 3075809808) (3714687192 . 2872792173)
+   (1615679922 . 1606381794) (1940556374 . 1337437342) (445390489 . 731124040)
+   (2864974375 . 64601760) (1984806574 . 2141516710) (513390958 . 1890172555)
+   (744398315 . 1475299139) (982749166 . 852662657) (652663695 . 4260736510)
+   (1184061125 . 82616221) (3363191899 . 147951756) (1064069880 . 1507328085)
+   (2138882964 . 547595589) (2616926846 . 3186935246) (2298715513 . 3606862940)
+   (2414381911 . 811477686) (2694745228 . 900437726) (4202576185 . 2201114451)
+   (3602305260 . 3323446937) (3756663274 . 2658490339) (3061587876 . 
2171079416)
+   (3390977925 . 2850497765) (486312941 . 224925241) (3515712841 . 3510684394)
+   (1322319486 . 2647200565) (3839619171 . 1148450258) (392296762 . 1154854654)
+   (1401523788 . 957405781) (1934485528 . 527352730) (645968162 . 3131215255)
+   (696971825 . 3361451947) (2038689491 . 1946699733) (1723966113 . 2785859721)
+   (2652365974 . 1118037185) (3988018407 . 3134982149) (1354171594 . 
3053634345)
+   (1287854075 . 2631782435) (1723106141 . 2662328866) (563845090 . 1878819261)
+   (639520332 . 171129501) (534957223 . 1696062352) (3612364282 . 2283204027)
+   (3109494688 . 1304463816) (500957989 . 630925278) (3477030536 . 2149497258)
+   (4109750364 . 281719363) (951472732 . 564407054) (922095147 . 2767874048)
+   (3946156928 . 829677774) (2622281253 . 2086286851) (2936811901 . 850242186)
+   (630086272 . 3340782667) (2340986210 . 1296336989) (4107355543 . 3865114709)
+   (3560210278 . 3968418243) (3868847493 . 2967450637) (611513888 . 2083325060)
+   (3265390517 . 3025776309) (2874106961 . 3424470508) (1668707698 . 
2923258228)
+   (2778598353 . 24320552) (292356118 . 3415510793) (754567370 . 86994591)
+   (185141877 . 1621715171) (2884558258 . 3722473457) (1492107531 . 111281805)
+   (3336927864 . 4225337056) (782994598 . 1021838039) (346133860 . 18281270)
+   (2080909533 . 1649329040) (3612065399 . 3859901127) (2151962287 . 284556115)
+   (3957975594 . 3745718727) (52533817 . 3998775856) (1232633839 . 397383972)
+   (2716413964 . 3629253960) (1531307298 . 3836851439) (3030137657 . 
2500401718)
+   (3561556693 . 653345841) (313061910 . 2945718466) (2065276 . 3342140708)
+   (410498334 . 1470588117) (2726640512 . 4051654894) (2570984935 . 758567696)
+   (3008987264 . 3462702678) (623860175 . 228525243) (3527183895 . 1829844480)
+   (467272850 . 3890501742) (568376656 . 650516927) (990477018 . 4035508558)
+   (2366955227 . 817792110) (4183621538 . 989198068) (946958343 . 1639184195)
+   (3395758993 . 3924097558) (1690887473 . 3220519765) (605184237 . 1255270525)
+   (275515833 . 1926424610) (2142902612 . 283494960) (2021972412 . 1823828440)
+   (105373677 . 3448326697) (1666662384 . 1042433908) (1338566998 . 261206307)
+   (498685668 . 1344755577) (3101233780 . 3119109371) (2733370951 . 3808165089)
+   (3656512268 . 3449289481) (4025308119 . 1607880299) (778896067 . 1612183167)
+   (2846510368 . 3674754715) (3058428120 . 2991822529) (1892379383 . 
3268787440)
+   (2565895844 . 4154602030) (3213117192 . 98999135) (2495816991 . 116985075)
+   (1040203361 . 1785041385) (3106252493 . 69316595) (1639829808 . 2087117568)
+   (3213709576 . 3799911752) (604681594 . 2340981536) (4236730699 . 2938666503)
+   (4009938384 . 1878897714) (2701667332 . 1725918218) (2182473079 . 1258184)
+   (3550198211 . 2760750799) (657991062 . 875584532) (1640976276 . 3380476221)
+   (460041378 . 2924352091) (1972323596 . 2287414795) (2510248061 . 1350206297)
+   (2959337826 . 3762681165) (1625877874 . 3235902929) (2070189957 . 
1429368735)
+   (4245163299 . 1839731898) (2358312347 . 138364248) (275739390 . 2179122576)
+   (2037777210 . 972544338) (2766930226 . 1984733259) (1933485829 . 4209310327)
+   (3034118011 . 3286589799) (2653025529 . 62078937) (2641780289 . 2679545709)
+   (3540781195 . 2787026415) (1569993599 . 3215949659) (441337890 . 3947723353)
+   (1878946792 . 459505587) (3724105660 . 920173002) (1691411102 . 3934795955)
+   (148741087 . 3647709027) (142506469 . 2776440083) (3811107376 . 3823285243)
+   (472209891 . 252266174) (1913386482 . 1867329194) (2960608550 . 482740699)
+   (1145005292 . 1513558421) (1091751784 . 1687823886) (3625186042 . 
3086337482)
+   (1712140887 . 940065262) (1504455800 . 1945702563) (3896940088 . 2003245591)
+   (2478191531 . 4197739000) (3233871270 . 250924495) (3404865229 . 1131917964)
+   (1462204167 . 429621621) (1349259705 . 3641608989) (3627860584 . 2048468319)
+   (1244251718 . 1513180369) (3979211282 . 371413143) (3043187861 . 4285699810)
+   (581894202 . 3060983825) (1390895705 . 1811317301) (2599134010 . 3337406128)
+   (2488233440 . 2436161462) (1816641224 . 2208816697) (1792034756 . 815866116)
+   (2779893723 . 2695577703) (2084952115 . 2951772258) (1351806869 . 169269771)
+   (2469979804 . 86740603) (1163545420 . 4264616949) (1795352113 . 2511146232)
+   (1796715044 . 3134635815) (3521170642 . 1538900329) (3725363621 . 
1455009392)
+   (1342594643 . 1512127734) (2618386938 . 662157428) (2028859350 . 2494504685)
+   (1841905045 . 648351336) (4002935891 . 4033319405) (850071259 . 1768358867)
+   (979915719 . 3876018087) (830889197 . 1629549437) (1744763229 . 2455795856)
+   (522919199 . 368499868) (3063822504 . 2522639205) (2861636095 . 407686388)
+   (4097602344 . 1945259027) (4215946617 . 1251639506) (894485042 . 534122652)
+   (924809191 . 1807237502) (1811585710 . 1589663609) (3439653887 . 1722232)
+   (3810997538 . 105152714) (2677100683 . 4291805514) (77233985 . 102407776)
+   (4239834691 . 2851274395) (148802076 . 2006440603) (2409138150 . 126301601)
+   (3048474397 . 3217504870) (588133437 . 4221603123) (1139638106 . 263087485)
+   (982032635 . 3165674595) (562514827 . 1294842959) (467575086 . 905357513)
+   (1405117894 . 3370530088) (3813285157 . 242912619) (3601878331 . 1985076606)
+   (1586505598 . 2092146221) (738488098 . 103663229) (2970334297 . 321718822)
+   (1068097019 . 1742926233) (235518094 . 420804527) (283685722 . 4092504887)
+   (2666392744 . 3799169331) (3569817788 . 1256762975) (2169728352 . 292617248)
+   (2444571896 . 2239859206) (3967907832 . 1066404216) (420376911 . 2913277294)
+   (3046293305 . 2956347747) (2311278792 . 2477686209) (2885955184 . 
4172514290)
+   (3030078181 . 2275536480) (4212469731 . 4280736393) (1046900335 . 
1773022229)
+   (995380926 . 1414273529) (3892683234 . 2429494358) (615726237 . 2127712535)
+   (3880203074 . 2071130305) (176180504 . 3070850165) (1474506861 . 2283723599)
+   (1256707747 . 1857412043) (764236850 . 359687368) (3521530334 . 511649419)
+   (2318567964 . 3992868140) (128167623 . 2518992858) (2220129756 . 1042300052)
+   (2567608573 . 1349636707) (441446694 . 384760969) (4143447316 . 829506048)
+   (817912603 . 2738025500) (2368091832 . 357934982) (1187643061 . 1561463042)
+   (3438021235 . 3030161697) (1318922279 . 895468690) (434876457 . 1130220303)
+   (1180291767 . 1132759596) (2520707785 . 1798553137) (1962430872 . 
2958700157)
+   (1510954061 . 3534879512) (57831539 . 3269538993) (3354831405 . 3852135009)
+   (891783098 . 2698494511) (2555636406 . 996018997) (2881342935 . 3982231648)
+   (3473267445 . 2894952368) (1238029452 . 3958679326) (2051805420 . 559465638)
+   (3655936674 . 1186951582) (330209165 . 167662935) (1929681327 . 2450868735)
+   (1313566811 . 2458925988) (4283920930 . 3243182650) (1438004300 . 
4185567150)
+   (3093439067 . 89876832) (3401620219 . 3721579956) (3673745794 . 2682874719)
+   (3053321309 . 825410712) (822915968 . 3681514755) (3900685126 . 561657358)
+   (553823814 . 1857753416) (4166295066 . 983949325) (128359165 . 3426887194)
+   (3300989119 . 3884968622) (4193552686 . 3647722552) (452189154 . 1569670618)
+   (4122259632 . 3537825460) (2519387887 . 2821594244) (74333898 . 2940550377)
+   (4032631446 . 2173999692) (2521268686 . 1934310532) (2620314688 . 
2177785789)
+   (1378755571 . 2455646622) (394133753 . 4231198609) (734399075 . 2800989170)
+   (573292462 . 1634883078) (1214417373 . 3426576256) (2110224475 . 2399009920)
+   (2331215665 . 3224086912) (531326186 . 698539511) (3839443603 . 583861850)
+   (2644531398 . 2017784332) (616620850 . 3070237104) (590349237 . 2798642861)
+   (3582377217 . 3317831670) (1582708616 . 1596570667) (2126148205 . 
2358511947)
+   (173450736 . 3219362418) (3616831144 . 1323437318) (2655785577 . 3131359031)
+   (401600069 . 2967397952) (496349349 . 4244179910) (2479612086 . 2579650653)
+   (1710903074 . 2049666425) (3589924952 . 690291925) (3266682943 . 1900485231)
+   (1496318498 . 3025542656) (3459221058 . 3389461212) (2091479615 . 
3140389256)
+   (663040899 . 1207089672) (3323704225 . 1105530508) (353318429 . 2879253542)
+   (2674540957 . 941987316) (1688550857 . 620657353) (338551967 . 4286217277)
+   (204689992 . 2239736295) (178008789 . 3940832005) (3871613304 . 3300636974)
+   (1911672356 . 2429684487) (4055679954 . 1974461722) (3878217928 . 
1009991796)
+   (2533095482 . 310920740) (2174833823 . 3596041637) (1604814460 . 2939543881)
+   (1452830254 . 4092397851) (2441027029 . 4169690209) (3524103304 . 
3372213855)
+
+   (836181454 . 1689436944) (4049974663 . 3750330768) (2776523577 . 3710710688)
+   (519497435 . 2979405513)
+
+   (1892447193 . 197291556) (3793382197 . 3742120663)
+   (3838936 . 2994760034) (479846099 . 1018728609) (3476112862 . 182272649)
+   (3504620154 . 1427438450) (2009473484 . 2679350403) (1738755500 . 
1129731339)
+
+   (4174784170 . 2938602761)]
+  "Zorbist hashes for polyglot.")
+
+(defconst chess-polyglot-zorbist-piece-type '(?p ?P ?n ?N ?b ?B ?r ?R ?q ?Q ?k 
?K)
+  "Map chess pieces to zorbist hash indexes.")
+
+(defun chess-polyglot-pos-to-key (position)
+  "Calculate the polyglot zorbist hash for POSITION.
+Uses 781 predefined hash values from `chess-polyglot-zorbist-keys'."
+  (cl-assert (vectorp position))
+  (let ((h32 0) (l32 0))
+    (dotimes (rank 8)
+      (dotimes (file 8)
+       (let ((piece (cl-position (chess-pos-piece position (chess-rf-to-index
+                                                            rank file))
+                                 chess-polyglot-zorbist-piece-type)))
+         (when piece
+           (let ((piece-key (aref chess-polyglot-zorbist-keys
+                                  (+ (* 64 piece) (* (- 7 rank) 8) file))))
+             (setq h32 (logxor h32 (car piece-key))
+                   l32 (logxor l32 (cdr piece-key))))))))
+    (let ((sides '(?K ?Q ?k ?q)))
+      (dolist (side sides)
+       (when (chess-pos-can-castle position side)
+         (let ((castle-key (aref chess-polyglot-zorbist-keys
+                                 (+ 768 (cl-position side sides)))))
+           (setq h32 (logxor h32 (car castle-key))
+                 l32 (logxor l32 (cdr castle-key)))))))
+    ;; TODO: en passant
+    (when (chess-pos-side-to-move position)
+      (let ((turn-key (aref chess-polyglot-zorbist-keys 780)))
+       (setq h32 (logxor h32 (car turn-key))
+             l32 (logxor l32 (cdr turn-key)))))
+    (cons h32 l32)))
+
+;;; Public interface:
+
+(defun chess-polyglot-book-open (file)
+  "Open a polyglot book FILE.
+Returns a buffer object which contains the binary data."
+  (when (file-exists-p file)
+    (with-current-buffer (get-buffer-create (concat " *chess-polyglot " file 
"*"))
+      (erase-buffer)
+      (set-buffer-multibyte nil)
+      (insert-file-contents-literally file)
+      (when (and (fboundp 'zlib-decompress-region)
+                (goto-char (point-min))
+                (re-search-forward 
"\\`\037\213\\(.\\)\\(.\\)\\(.\\)\\(.\\)\\(.\\)\\(.\\)\\(.\\)\\(.\\)" nil t)
+                (pcase (list (aref (match-string 1) 0)
+                             (aref (match-string 2) 0)
+                             (logior (aref (match-string 3) 0)
+                                     (lsh (aref (match-string 4) 0) 8)
+                                     (lsh (aref (match-string 5) 0) 16)
+                                     (lsh (aref (match-string 6) 0) 24))
+                             (aref (match-string 7) 0)
+                             (aref (match-string 8) 0))
+                  (`(,method ,_ ,modified-epoch ,_ ,from-fs)
+                   (and (= method 8) (> modified-epoch 0) (< from-fs 16)))))
+       (zlib-decompress-region (point-min) (point-max)))
+      (cl-assert (zerop (% (buffer-size) chess-polyglot-record-size)))
+      (current-buffer))))
+
+(defun chess-polyglot-book-plies (book position)
+  "Return a list of plies found in BOOK for POSITION.
+The resulting list is ordered, most interesting plies come first.
+The :polyglot-book-weight ply keyword is used to store the actual move weights.
+Use `chess-ply-keyword' on elements of the returned list to retrieve them."
+  (cl-assert (bufferp book))
+  (cl-assert (vectorp position))
+  (let (plies)
+    (dolist (move
+            (with-current-buffer book
+              (chess-polyglot-read-moves (chess-polyglot-pos-to-key position)))
+            plies)
+      (let ((ply (apply #'chess-polyglot-move-to-ply position move)))
+       (when ply
+         (setq plies (nconc plies (list ply))))))))
+
+(defun chess-polyglot-book-ply (book position &optional strength)
+  "If non-nil a (randomly picked) ply from plies in BOOK for POSITION.
+Random distribution is defined by the relative weights of the found plies.
+If non-nil, STRENGTH defines the bias towards better moves.
+A value below 1.0 will penalize known good moves while a value
+above 1.0 will prefer known good moves.  The default is the value
+of `chess-polyglot-book-strength'.
+A strength value of 0.0 will completely ignore move weights and evenly
+distribute the probability that a move gets picked."
+  (unless strength (setq strength chess-polyglot-book-strength))
+  (cl-assert (and (>= strength 0) (< strength 4)))
+  (cl-flet ((ply-weight (ply)
+             (round (expt (chess-ply-keyword ply :polyglot-book-weight)
+                          strength))))
+    (let ((plies (chess-polyglot-book-plies book position)))
+      (when plies
+       (let ((random-value (random (cl-reduce #'+ (mapcar #'ply-weight 
plies))))
+             (max 0) ply)
+         (while plies
+           (if (< random-value (cl-incf max (ply-weight (car plies))))
+               (setq ply (car plies) plies nil)
+             (setq plies (cdr plies))))
+         (cl-assert ply)
+         ply)))))
+
+(defalias 'chess-polyglot-book-close 'kill-buffer
+  "Close a polyglot book.")
+
+(defun chess-polyglot-book-reload (symbol value)
+  (set symbol value)
+  (when (eq symbol 'chess-polyglot-book-file)
+    (setq chess-polyglot-book
+         (when chess-polyglot-book-file
+           (chess-polyglot-book-open chess-polyglot-book-file)))))
+
+(defcustom chess-polyglot-book-file (expand-file-name "chess-polyglot.bin"
+                                                     (file-name-directory
+                                                      (or load-file-name
+                                                          buffer-file-name)))
+  "Path to default polyglot book file.
+
+This is used by UCI based engines as well as the internal AI."
+  :group 'chess-polyglot
+  :set 'chess-polyglot-book-reload
+  :type '(file :must-match t))
+
+(provide 'chess-polyglot)
+;;; chess-polyglot.el ends here
diff --git a/packages/chess/chess-pos.el b/packages/chess/chess-pos.el
new file mode 100644
index 0000000..651fe49
--- /dev/null
+++ b/packages/chess/chess-pos.el
@@ -0,0 +1,1131 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Routines for manipulating chess positions
+;;
+
+;;; Commentary:
+
+;; A chess `position' is a vector that starts with sixty-four
+;; characters, representing the 8x8 grid of a chess position.  Each
+;; position may contain p, r, n, b, k, q or <space>, or any of the
+;; previous letters in uppercase.  Uppercase signifies white, and
+;; lowercase means black.
+;;
+;; Creating a new position can be done with:
+;;
+;;   (chess-pos-create)
+;;   (chess-pos-copy POSITION)
+;;
+;; To setup the chess board at an aritrary position, manipulate the
+;; position that has been returned to you, or use a position input
+;; module.
+
+;; Once you have a chess position, there are several things you can do
+;; with it.  First of all, a coordinate system of octal indices is
+;; used, where ?\044 signifies rank 4 file 4 (i.e., "e4").  Rank is
+;; numbered 0 to 7, top to bottom, and file is 0 to 7, left to right.
+;; For those who wish to use ASCII coordinates, such as "e4", there
+;; are two conversion functions:
+;;
+;;    (chess-coord-to-index STRING)
+;;    (chess-index-to-coord INDEX)
+
+;; With an octal index value, you can look up what's on a particular
+;; square, or set that square's value:
+;;
+;;    (chess-pos-piece POSITION INDEX)
+;;    (chess-pos-set-piece POSITION INDEX PIECE)
+;;
+;; PIECE must be one of the letters mentioned above (in upper or
+;; lowercase), or a space to represent a blank square.
+;;
+;; To test whether a piece is at a particular position, use:
+;;
+;;    (chess-pos-piece-p POSITION INDEX PIECE)
+;;
+;; PIECE may also be t for any white piece, nil for any black piece,
+;; or the symbol `any', which returns t if the square is not empty.
+
+;; You can hunt for all occurances of a certain piece using:
+;;
+;;    (chess-pos-search POSITION PIECE)
+;;    (chess-pos-search* POSITION PIECE...)
+;;
+;; You might also try the `search' event, which employs the
+;; intelligence of listening rules modules to search out your piece
+;; according to legal piece movements.
+
+;; Once you have a pair of indices, you can move a piece around:
+;;
+;;    (chess-pos-move POSITION FROM-INDEX TO-INDEX)
+;;
+;; NOTE This is not the safe way for users to move pieces around!
+;; This function moves pieces DIRECTLY, without checking for legality,
+;; or informing listening modules of the move.  To make an "official"
+;; move, use:
+;;
+;;    (chess-move FROM-INDEX TO-INDEX)
+;;
+;; This will publish the move to all listening modules, which can then
+;; handle the move event as they wish.
+
+;;; Code:
+
+(require 'chess-message)
+(require 'chess-fen)
+(eval-when-compile
+  (require 'cl-lib)
+  (cl-proclaim '(optimize (speed 3) (safety 2))))
+
+(defgroup chess-pos nil
+  "Routines for manipulating chess positions."
+  :group 'chess)
+
+(defvar chess-pos-always-white nil
+  "When set, it is assumed that white is always on move.
+This is really only useful when setting up training positions.
+This variable automatically becomes buffer-local when changed.")
+
+(make-variable-buffer-local 'chess-pos-always-white)
+
+(defconst chess-starting-position
+  [;; the eight ranks and files of the chess position
+   ?r ?n ?b ?q ?k ?b ?n ?r
+   ?p ?p ?p ?p ?p ?p ?p ?p
+   ?  ?  ?  ?  ?  ?  ?  ?   ; spaces are blanks!
+   ?  ?  ?  ?  ?  ?  ?  ?   ; here too
+   ?  ?  ?  ?  ?  ?  ?  ?   ; protect from whitespace-cleanup
+   ?  ?  ?  ?  ?  ?  ?  ?   ; so have a comment afterwards
+   ?P ?P ?P ?P ?P ?P ?P ?P
+   ?R ?N ?B ?Q ?K ?B ?N ?R
+   ;; index of pawn that can be captured en passant
+   nil
+   ;; can white and black castle on king or queen side?
+   ?\077 ?\070 ?\007 ?\000
+   ;; is the side to move in: `check', `checkmate', `stalemate'
+   nil
+   ;; which color is it to move next?
+   t
+   ;; list of annotations for this position.  Textual annotations are
+   ;; simply that, while lists represent interesting variations.
+   nil
+   ;; where are the kings?
+   60 4
+   ;; a pointer to the ply which led to this position
+   nil]
+  "Starting position of a regular chess game.")
+
+(chess-message-catalog 'english
+  '((chess-nag-1   . "good move [traditional \"!\"]")
+    (chess-nag-2   . "poor move [traditional \"?\"]")
+    (chess-nag-3   . "very good move (traditional \"!!\"")
+    (chess-nag-4   . "very poor move (traditional \"??\")")
+    (chess-nag-5   . "speculative move (traditional \"!?\")")
+    (chess-nag-6   . "questionable move (traditional \"?!\")")
+    (chess-nag-7   . "forced move (all others lose quickly)")
+    (chess-nag-8   . "singular move (no reasonable alternatives)")
+    (chess-nag-9   . "worst move")
+    (chess-nag-10  . "drawish position")
+    (chess-nag-11  . "equal chances, quiet position")
+    (chess-nag-12  . "equal chances, active position")
+    (chess-nag-13  . "unclear position")
+    (chess-nag-14  . "White has a slight advantage")
+    (chess-nag-15  . "Black has a slight advantage")
+    (chess-nag-16  . "White has a moderate advantage")
+    (chess-nag-17  . "Black has a moderate advantage")
+    (chess-nag-18  . "White has a decisive advantage")
+    (chess-nag-19  . "Black has a decisive advantage")
+    (chess-nag-20  . "White has a crushing advantage (Black should resign)")
+    (chess-nag-21  . "Black has a crushing advantage (White should resign)")
+    (chess-nag-22  . "White is in zugzwang")
+    (chess-nag-23  . "Black is in zugzwang")
+    (chess-nag-24  . "White has a slight space advantage")
+    (chess-nag-25  . "Black has a slight space advantage")
+    (chess-nag-26  . "White has a moderate space advantage")
+    (chess-nag-27  . "Black has a moderate space advantage")
+    (chess-nag-28  . "White has a decisive space advantage")
+    (chess-nag-29  . "Black has a decisive space advantage")
+    (chess-nag-30  . "White has a slight time (development) advantage")
+    (chess-nag-31  . "Black has a slight time (development) advantage")
+    (chess-nag-32  . "White has a moderate time (development) advantage")
+    (chess-nag-33  . "Black has a moderate time (development) advantage")
+    (chess-nag-34  . "White has a decisive time (development) advantage")
+    (chess-nag-35  . "Black has a decisive time (development) advantage")
+    (chess-nag-36  . "White has the initiative")
+    (chess-nag-37  . "Black has the initiative")
+    (chess-nag-38  . "White has a lasting initiative")
+    (chess-nag-39  . "Black has a lasting initiative")
+    (chess-nag-40  . "White has the attack")
+    (chess-nag-41  . "Black has the attack")
+    (chess-nag-42  . "White has insufficient compensation for material 
deficit")
+    (chess-nag-43  . "Black has insufficient compensation for material 
deficit")
+    (chess-nag-44  . "White has sufficient compensation for material deficit")
+    (chess-nag-45  . "Black has sufficient compensation for material deficit")
+    (chess-nag-46  . "White has more than adequate compensation for material 
deficit")
+    (chess-nag-47  . "Black has more than adequate compensation for material 
deficit")
+    (chess-nag-48  . "White has a slight center control advantage")
+    (chess-nag-49  . "Black has a slight center control advantage")
+    (chess-nag-50  . "White has a moderate center control advantage")
+    (chess-nag-51  . "Black has a moderate center control advantage")
+    (chess-nag-52  . "White has a decisive center control advantage")
+    (chess-nag-53  . "Black has a decisive center control advantage")
+    (chess-nag-54  . "White has a slight kingside control advantage")
+    (chess-nag-55  . "Black has a slight kingside control advantage")
+    (chess-nag-56  . "White has a moderate kingside control advantage")
+    (chess-nag-57  . "Black has a moderate kingside control advantage")
+    (chess-nag-58  . "White has a decisive kingside control advantage")
+    (chess-nag-59  . "Black has a decisive kingside control advantage")
+    (chess-nag-60  . "White has a slight queenside control advantage")
+    (chess-nag-61  . "Black has a slight queenside control advantage")
+    (chess-nag-62  . "White has a moderate queenside control advantage")
+    (chess-nag-63  . "Black has a moderate queenside control advantage")
+    (chess-nag-64  . "White has a decisive queenside control advantage")
+    (chess-nag-65  . "Black has a decisive queenside control advantage")
+    (chess-nag-66  . "White has a vulnerable first rank")
+    (chess-nag-67  . "Black has a vulnerable first rank")
+    (chess-nag-68  . "White has a well protected first rank")
+    (chess-nag-69  . "Black has a well protected first rank")
+    (chess-nag-70  . "White has a poorly protected king")
+    (chess-nag-71  . "Black has a poorly protected king")
+    (chess-nag-72  . "White has a well protected king")
+    (chess-nag-73  . "Black has a well protected king")
+    (chess-nag-74  . "White has a poorly placed king")
+    (chess-nag-75  . "Black has a poorly placed king")
+    (chess-nag-76  . "White has a well placed king")
+    (chess-nag-77  . "Black has a well placed king")
+    (chess-nag-78  . "White has a very weak pawn structure")
+    (chess-nag-79  . "Black has a very weak pawn structure")
+    (chess-nag-80  . "White has a moderately weak pawn structure")
+    (chess-nag-81  . "Black has a moderately weak pawn structure")
+    (chess-nag-82  . "White has a moderately strong pawn structure")
+    (chess-nag-83  . "Black has a moderately strong pawn structure")
+    (chess-nag-84  . "White has a very strong pawn structure")
+    (chess-nag-85  . "Black has a very strong pawn structure")
+    (chess-nag-86  . "White has poor knight placement")
+    (chess-nag-87  . "Black has poor knight placement")
+    (chess-nag-88  . "White has good knight placement")
+    (chess-nag-89  . "Black has good knight placement")
+    (chess-nag-90  . "White has poor bishop placement")
+    (chess-nag-91  . "Black has poor bishop placement")
+    (chess-nag-92  . "White has good bishop placement")
+    (chess-nag-93  . "Black has good bishop placement")
+    (chess-nag-84  . "White has poor rook placement")
+    (chess-nag-85  . "Black has poor rook placement")
+    (chess-nag-86  . "White has good rook placement")
+    (chess-nag-87  . "Black has good rook placement")
+    (chess-nag-98  . "White has poor queen placement")
+    (chess-nag-99  . "Black has poor queen placement")
+    (chess-nag-100 . "White has good queen placement")
+    (chess-nag-101 . "Black has good queen placement")
+    (chess-nag-102 . "White has poor piece coordination")
+    (chess-nag-103 . "Black has poor piece coordination")
+    (chess-nag-104 . "White has good piece coordination")
+    (chess-nag-105 . "Black has good piece coordination")
+    (chess-nag-106 . "White has played the opening very poorly")
+    (chess-nag-107 . "Black has played the opening very poorly")
+    (chess-nag-108 . "White has played the opening poorly")
+    (chess-nag-109 . "Black has played the opening poorly")
+    (chess-nag-110 . "White has played the opening well")
+    (chess-nag-111 . "Black has played the opening well")
+    (chess-nag-112 . "White has played the opening very well")
+    (chess-nag-113 . "Black has played the opening very well")
+    (chess-nag-114 . "White has played the middlegame very poorly")
+    (chess-nag-115 . "Black has played the middlegame very poorly")
+    (chess-nag-116 . "White has played the middlegame poorly")
+    (chess-nag-117 . "Black has played the middlegame poorly")
+    (chess-nag-118 . "White has played the middlegame well")
+    (chess-nag-119 . "Black has played the middlegame well")
+    (chess-nag-120 . "White has played the middlegame very well")
+    (chess-nag-121 . "Black has played the middlegame very well")
+    (chess-nag-122 . "White has played the ending very poorly")
+    (chess-nag-123 . "Black has played the ending very poorly")
+    (chess-nag-124 . "White has played the ending poorly")
+    (chess-nag-125 . "Black has played the ending poorly")
+    (chess-nag-126 . "White has played the ending well")
+    (chess-nag-127 . "Black has played the ending well")
+    (chess-nag-128 . "White has played the ending very well")
+    (chess-nag-129 . "Black has played the ending very well")
+    (chess-nag-130 . "White has slight counterplay")
+    (chess-nag-131 . "Black has slight counterplay")
+    (chess-nag-132 . "White has moderate counterplay")
+    (chess-nag-133 . "Black has moderate counterplay")
+    (chess-nag-134 . "White has decisive counterplay")
+    (chess-nag-135 . "Black has decisive counterplay")
+    (chess-nag-136 . "White has moderate time control pressure")
+    (chess-nag-137 . "Black has moderate time control pressure")
+    (chess-nag-138 . "White has severe time control pressure")
+    (chess-nag-139 . "Black has severe time control pressure")))
+
+(defsubst chess-pos-piece (position index)
+  "Return the piece on POSITION at INDEX."
+  (cl-assert (vectorp position))
+  (cl-assert (and (>= index 0) (< index 64)))
+  (aref position index))
+
+(defsubst chess-pos-piece-p (position index piece-or-color)
+  "Return non-nil if at POSITION/INDEX there is the given PIECE-OR-COLOR.
+If PIECE-OR-COLOR is t for white or nil for black, any piece of that
+color will do."
+  (cl-assert (vectorp position))
+  (cl-assert (and (>= index 0) (< index 64)))
+  (cl-assert (memq piece-or-color
+               '(t nil ?  ?K ?Q ?N ?B ?R ?P ?k ?q ?n ?b ?r ?p)))
+  (let ((p (chess-pos-piece position index)))
+    (cond
+     ((= p ? ) (eq p piece-or-color))
+     ((eq piece-or-color t) (< p ?a))
+     ((eq piece-or-color nil) (> p ?a))
+     (t (= p piece-or-color)))))
+
+(defsubst chess-rf-to-index (rank file)
+  "Convert RANK and FILE coordinates into an octal index."
+  (cl-check-type rank (integer 0 7))
+  (cl-check-type file (integer 0 7))
+  (+ (* 8 rank) file))
+
+(defsubst chess-coord-to-index (coord)
+  "Convert a COORD string into an index value."
+  (cl-assert (stringp coord))
+  (cl-assert (= (length coord) 2))
+  (+ (* 8 (- 7 (- (aref coord 1) ?1)))
+     (- (aref coord 0) ?a)))
+
+(defsubst chess-index-to-coord (index)
+  "Convert the chess position INDEX into a coord string."
+  (cl-assert (and (>= index 0) (< index 64)))
+  (concat (char-to-string (+ (mod index 8) ?a))
+         (char-to-string (+ (- 7 (/ index 8)) ?1))))
+
+(defsubst chess-index-rank (index)
+  "Return the rank component of the given INDEX."
+  (cl-assert (and (>= index 0) (< index 64)))
+  (/ index 8))
+
+(defsubst chess-index-file (index)
+  "Return the file component of the given INDEX."
+  (cl-assert (and (>= index 0) (< index 64)))
+  (mod index 8))
+
+(defsubst chess-incr-index (index rank-move file-move)
+  "Create a new INDEX from an old one, by adding RANK-MOVE and FILE-MOVE."
+  (cl-assert (and (>= index 0) (< index 64)))
+  (cl-assert (and (>= rank-move -7) (<= rank-move 7)))
+  (cl-assert (and (>= file-move -7) (<= file-move 7)))
+  (let ((newrank (+ (chess-index-rank index) rank-move))
+       (newfile (+ (chess-index-file index) file-move)))
+    (if (and (>= newrank 0) (< newrank 8)
+            (>= newfile 0) (< newfile 8))
+       (chess-rf-to-index newrank newfile))))
+
+(defsubst chess-incr-index* (index rank-move file-move)
+  "Create a new INDEX from an old one, by adding RANK-MOVE and FILE-MOVE.
+This differs from `chess-incr-index' by performing no safety checks,
+in order to execute faster."
+  (cl-assert (and (>= index 0) (< index 64)))
+  (cl-assert (and (>= rank-move -7) (<= rank-move 7)))
+  (cl-assert (and (>= file-move -7) (<= file-move 7)))
+  (chess-rf-to-index (+ (chess-index-rank index) rank-move)
+                    (+ (chess-index-file index) file-move)))
+
+;; A 10x12 based scheme to increment indices
+
+(defconst chess-pos-10x12-index
+  (apply #'vector
+        (nconc (make-list (* 2 10) nil)
+               (cl-loop for rank from 0 to 7
+                        nconc (nconc (list nil)
+                                     (cl-loop for file from 0 to 7
+                                              collect (chess-rf-to-index
+                                                       rank file))
+                                     (list nil)))
+               (make-list (* 2 10) nil)))
+  "Map square addresses to square indices.")
+
+(defconst chess-pos-10x12-address
+  (apply #'vector
+        (cl-loop for rank from 0 to 7
+                 nconc (cl-loop for file from 0 to 7
+                                collect (+ (* (+ rank 2) 10) 1 file))))
+  "Map square indices to square addresses.")
+
+(defconst chess-direction-north -10)
+(defconst chess-direction-east 1)
+(defconst chess-direction-south 10)
+(defconst chess-direction-west -1)
+(defconst chess-direction-northeast (+ chess-direction-north
+                                      chess-direction-east))
+(defconst chess-direction-southeast (+ chess-direction-south
+                                      chess-direction-east))
+(defconst chess-direction-southwest (+ chess-direction-south
+                                      chess-direction-west))
+(defconst chess-direction-northwest (+ chess-direction-north
+                                      chess-direction-west))
+(defconst chess-direction-north-northeast (+ chess-direction-north
+                                            chess-direction-northeast))
+(defconst chess-direction-east-northeast (+ chess-direction-east
+                                           chess-direction-northeast))
+(defconst chess-direction-east-southeast (+ chess-direction-east
+                                           chess-direction-southeast))
+(defconst chess-direction-south-southeast (+ chess-direction-south
+                                            chess-direction-southeast))
+(defconst chess-direction-south-southwest (+ chess-direction-south
+                                            chess-direction-southwest))
+(defconst chess-direction-west-southwest (+ chess-direction-west
+                                           chess-direction-southwest))
+(defconst chess-direction-west-northwest (+ chess-direction-west
+                                           chess-direction-northwest))
+(defconst chess-direction-north-northwest (+ chess-direction-north
+                                            chess-direction-northwest))
+
+(defconst chess-rook-directions (list chess-direction-north
+                                     chess-direction-west
+                                     chess-direction-east
+                                     chess-direction-south)
+  "The directions a rook is allowed to move to.")
+
+(defconst chess-bishop-directions (list chess-direction-northwest
+                                       chess-direction-northeast
+                                       chess-direction-southwest
+                                       chess-direction-southeast)
+  "The directions a bishop is allowed to move to.")
+
+(defconst chess-knight-directions (list chess-direction-north-northeast
+                                       chess-direction-east-northeast
+                                       chess-direction-east-southeast
+                                       chess-direction-south-southeast
+                                       chess-direction-south-southwest
+                                       chess-direction-west-southwest
+                                       chess-direction-west-northwest
+                                       chess-direction-north-northwest)
+  "The directions a knight is allowed to move to.")
+
+(defconst chess-queen-directions (append chess-bishop-directions
+                                        chess-rook-directions)
+  "The directions a queen is allowed to move to.")
+
+(defvaralias 'chess-king-directions 'chess-queen-directions
+  "The directions a king is allowed to move to.")
+
+(defconst chess-sliding-white-piece-directions
+  (list (list chess-direction-north ?R ?Q)
+       (list chess-direction-northeast ?B ?Q)
+       (list chess-direction-east ?R ?Q)
+       (list chess-direction-southeast ?B ?Q)
+       (list chess-direction-south ?R ?Q)
+       (list chess-direction-southwest ?B ?Q)
+       (list chess-direction-west ?R ?Q)
+       (list chess-direction-northwest ?B ?Q)))
+
+(defconst chess-sliding-black-piece-directions
+  (mapcar (lambda (entry) (cons (car entry) (mapcar #'downcase (cdr entry))))
+         chess-sliding-white-piece-directions))
+
+(defsubst chess-next-index (index direction)
+  "Create a new INDEX from an old one, by advancing it in DIRECTION.
+
+DIRECTION should be one of
+`chess-direction-north' (white pawns, rooks, queens and kings),
+`chess-direction-north-northeast' (knights),
+`chess-direction-northeast' (bishops, queens and kings),
+`chess-direction-east-northeast' (knights),
+`chess-direction-east' (rooks, queens and kings),
+`chess-direction-east-southeast' (knights),
+`chess-direction-southeast' (bishops, queens and kings),
+`chess-direction-south-southeast' (knights),
+`chess-direction-south' (black pawns, rooks, queens and kings),
+`chess-direction-south-southwest' (knights),
+`chess-direction-southwest' (bishops, queens and kings),
+`chess-direction-west-southwest' (knights),
+`chess-direction-west' (rooks, queens and kings),
+`chess-direction-west-northwest' (knights),
+`chess-direction-northwest' (bishops, queens and kings) or
+`chess-direction-north-northwest' (knights).
+
+For predefined lists of all directions a certain piece can go, see
+`chess-knight-directions',, `chess-bishop-directions', `chess-rook-directions',
+`chess-queen-directions' and `chess-king-directions'.
+
+If the new index is not on the board, nil is returned."
+  (cl-check-type index (integer 0 63))
+  (cl-check-type direction (integer -21 21))
+  (aref chess-pos-10x12-index
+       (+ (aref chess-pos-10x12-address index) direction)))
+
+(defsubst chess-pos-search (position piece-or-color)
+  "Look on POSITION anywhere for PIECE-OR-COLOR, returning all coordinates.
+If PIECE-OR-COLOR is t for white or nil for black, any piece of that
+color will do.  See also `chess-pos-search*'."
+  (cl-assert (vectorp position))
+  (cl-assert (memq piece-or-color
+               '(t nil ?  ?K ?Q ?N ?B ?R ?P ?k ?q ?n ?b ?r ?p)))
+  (let (found)
+    (dotimes (i 64)
+      (if (chess-pos-piece-p position i piece-or-color)
+         (push i found)))
+    found))
+
+(defsubst chess-pos-search* (position &rest pieces)
+  "Look on POSITION for any of PIECES.
+The result is an alist where each element looks like (PIECE . INDICES).
+Pieces which did not appear in POSITION will be present in the resulting
+alist, but the `cdr' of their enties will be nil."
+  (cl-assert (not (null pieces)))
+  (cl-assert (cl-reduce (lambda (ok piece)
+                         (when ok
+                           (memq piece '(?P ?N ?B ?R ?Q ?K ?p ?n ?b ?r ?q 
?k))))
+                       pieces :initial-value t))
+  (cl-assert (= (length pieces) (length (cl-delete-duplicates pieces))))
+  (let ((alist (mapcar #'list pieces)))
+    (dotimes (index 64)
+      (let ((piece (chess-pos-piece position index)))
+       (unless (eq piece ? )
+         (let ((entry (assq piece alist)))
+           (when entry (push index (cdr entry)))))))
+    alist))
+
+(defsubst chess-pos-set-king-index (position color index)
+  "Set the known index of the king on POSITION for COLOR, to INDEX.
+It is never necessary to call this function."
+  (cl-assert (vectorp position))
+  (cl-assert (memq color '(nil t)))
+  (cl-assert (and (>= index 0) (< index 64)))
+  (aset position (if color 72 73) index))
+
+(defsubst chess-pos-king-index (position color)
+  "Return the index on POSITION of the king.
+If COLOR is non-nil, return the position of the white king, otherwise
+return the position of the black king."
+  (cl-assert (vectorp position))
+  (cl-assert (memq color '(nil t)))
+  (or (aref position (if color 72 73))
+      (chess-pos-set-king-index position color
+                               (chess-pos-search position (if color ?K ?k)))))
+
+(defsubst chess-pos-set-piece (position index piece)
+  "Set the piece on POSITION at INDEX to PIECE.
+PIECE must be one of K Q N B R or P.  Use lowercase to set black
+pieces."
+  (cl-assert (vectorp position))
+  (cl-assert (and (>= index 0) (< index 64)))
+  (cl-assert (memq piece '(?  ?K ?Q ?N ?B ?R ?P ?k ?q ?n ?b ?r ?p)))
+  (aset position index piece)
+  (if (= piece ?K)
+      (chess-pos-set-king-index position t index)
+    (if (= piece ?k)
+       (chess-pos-set-king-index position nil index))))
+
+(defun chess-pos-can-castle (position side)
+  "Return whether the king on POSITION can castle on SIDE.
+SIDE must be either ?K for the kingside, or ?Q for the queenside (use
+lowercase to query if black can castle)."
+  (cl-assert (vectorp position))
+  (cl-assert (memq side '(?K ?Q ?k ?q)))
+  (let* ((index (+ 65 (if (< side ?a)
+                         (if (= side ?K) 0 1)
+                       (if (= side ?k) 2 3))))
+        (value (aref position index)))
+    (if (or (eq value nil) (integerp value))
+       value
+      (when (chess-pos-king-index position (< side ?a))
+       (let* ((color (< side ?a))
+              (long (= ?Q (upcase side)))
+              (file (if long 0 7))
+              (king-file (chess-index-file
+                          (chess-pos-king-index position color)))
+              rook)
+         (while (funcall (if long '< '>) file king-file)
+           (let ((index (chess-rf-to-index (if color 7 0) file)))
+             (if (chess-pos-piece-p position index (if color ?R ?r))
+                 (setq rook index file king-file)
+               (setq file (funcall (if long '1+ '1-) file)))))
+         (aset position index rook))))))
+
+(defsubst chess-pos-set-can-castle (position side value)
+  "Set whether the king can castle on the given POSITION on SIDE.
+
+See `chess-pos-can-castle'.
+
+It is only necessary to call this function if setting up a position
+manually.  Note that all newly created positions have full castling
+priveleges set, unless the position is created blank, in which case
+castling priveleges are unset.  See `chess-pos-copy'."
+  (cl-assert (vectorp position))
+  (cl-assert (memq side '(?K ?Q ?k ?q)))
+  (cl-assert (memq value '(nil t)))
+  (aset position (+ 65 (if (< side ?a)
+                          (if (= side ?K) 0 1)
+                        (if (= side ?k) 2 3))) value))
+
+(defsubst chess-pos-en-passant (position)
+  "Return the index of any pawn on POSITION that can be captured en passant.
+Returns nil if en passant is unavailable."
+  (cl-assert (vectorp position))
+  (aref position 64))
+
+(defsubst chess-pos-set-en-passant (position index)
+  "Set the INDEX of any pawn on POSITION that can be captured en passant."
+  (cl-assert (vectorp position))
+  (cl-assert (or (eq index nil)
+             (and (>= index 0) (< index 64))))
+  (aset position 64 index))
+
+(defsubst chess-pos-status (position)
+  "Return whether the side to move in the POSITION is in a special state.
+nil is returned if not, otherwise one of the symbols: `check',
+`checkmate', `stalemate'."
+  (cl-assert (vectorp position))
+  (aref position 69))
+
+(defsubst chess-pos-set-status (position value)
+  "Set whether the side to move in POSITION is in a special state.
+VALUE should either be nil, to indicate that the POSITION is normal,
+or one of the symbols: `check', `checkmate', `stalemate'."
+  (cl-assert (vectorp position))
+  (cl-assert (or (eq value nil) (symbolp value)))
+  (aset position 69 value))
+
+(defsubst chess-pos-side-to-move (position)
+  "Return the color whose move it is in POSITION."
+  (cl-assert (vectorp position))
+  (aref position 70))
+
+(defsubst chess-pos-set-side-to-move (position color)
+  "Set the COLOR whose move it is in POSITION."
+  (cl-assert (vectorp position))
+  (cl-assert (memq color '(nil t)))
+  (aset position 70 color))
+
+(defsubst chess-pos-annotations (position)
+  "Return the list of annotations for this POSITION."
+  (cl-assert (vectorp position))
+  (aref position 71))
+
+(defsubst chess-pos-set-annotations (position annotations)
+  "Set the list of ANNOTATIONS for this POSITION."
+  (cl-assert (vectorp position))
+  (cl-assert (listp annotations))
+  (aset position 71 annotations))
+
+(defun chess-pos-add-annotation (position annotation)
+  "Add an ANNOTATION for this POSITION."
+  (cl-assert (vectorp position))
+  (cl-assert (or (stringp annotation) (listp annotation)))
+  (let ((ann (chess-pos-annotations position)))
+    (if ann
+       (nconc ann (list annotation))
+      (aset position 71 (list annotation)))))
+
+(defsubst chess-pos-epd (position opcode)
+  "Return the value of the given EPD OPCODE, or nil if not set."
+  (cl-assert (vectorp position))
+  (cl-assert opcode)
+  (cdr (assq opcode (chess-pos-annotations position))))
+
+(defun chess-pos-set-epd (position opcode &optional value)
+  "Set the given EPD OPCODE to VALUE, or t if VALUE is not specified."
+  (cl-assert (vectorp position))
+  (cl-assert opcode)
+  (let ((entry (assq opcode (chess-pos-annotations position))))
+    (if entry
+       (setcdr entry (or value t))
+      (chess-pos-add-annotation position (cons opcode (or value t))))))
+
+(defun chess-pos-del-epd (position opcode)
+  "Delete the given EPD OPCODE."
+  (cl-assert (vectorp position))
+  (cl-assert opcode)
+  (chess-pos-set-annotations
+   position (assq-delete-all opcode (chess-pos-annotations position))))
+
+(defun chess-pos-preceding-ply (position)
+  "Return the ply that preceds POSITION."
+  (cl-assert (vectorp position))
+  (aref position 74))
+
+(defun chess-pos-set-preceding-ply (position ply)
+  "Set the preceding PLY for POSITION."
+  (cl-assert (vectorp position))
+  (cl-assert (listp ply))
+  (aset position 74 ply))
+
+(defsubst chess-pos-copy (position)
+  "Copy the given chess POSITION.
+If there are annotations or EPD opcodes set, these lists are copied as
+well, so that the two positions do not share the same lists."
+  (cl-assert (vectorp position))
+  (let ((copy (vconcat position)) i)
+    (setq i (chess-pos-annotations position))
+    (if i (chess-pos-set-annotations copy (copy-alist i)))
+    copy))
+
+(defsubst chess-pos-create (&optional blank)
+  "Create a new chess position, set at the starting position.
+If BLANK is non-nil, all of the squares will be empty.
+The current side-to-move is always white."
+  (if blank
+      (vconcat (make-vector 64 ? )
+              [nil nil nil nil nil nil t nil nil nil nil])
+    (chess-pos-copy chess-starting-position)))
+
+(defsubst chess-pos-to-string (position &optional full)
+  "Convert the given POSITION into a string.
+The returned string can be converted back to a position using
+`chess-pos-from-string'."
+  (cl-assert (vectorp position))
+  (chess-pos-to-fen position full))
+
+(defsubst chess-pos-from-string (string)
+  "Convert the given STRING to a chess position.
+This string should have been created by `chess-pos-to-string'."
+  (cl-assert (stringp string))
+  (chess-fen-to-pos string))
+
+(defconst chess-pos-piece-values
+  '((?p . 1)
+    (?n . 3)
+    (?b . 3)
+    (?q . 9)
+    (?r . 5)
+    (?k . 0)))
+
+(defun chess-pos-material-value (position color)
+  "Return the aggregate material value in POSITION for COLOR."
+  (cl-assert (vectorp position))
+  (cl-assert (memq color '(nil t)))
+  (let ((pieces (chess-pos-search position color))
+       (value 0))
+    (dolist (index pieces)
+      (setq value
+           (+ value (cdr (assq (downcase (chess-pos-piece position index))
+                               chess-pos-piece-values)))))
+    value))
+
+(defun chess-pos-passed-pawns (position color &optional pawn-indices)
+  "If COLOR has Passed Pawns in POSITION, return a list of their indices.
+Optionally, if INDICES is non-nil those indices are considered as candidates.
+
+A Pawn whose advance to the eighth rank is not blocked by an
+opposing Pawn in the same file and who does not have to pass one
+on an adjoining file is called a passed Pawn."
+  (let ((seventh (if color 1 6)) (bias (if color -1 1)) (pawn (if color ?p ?P))
+       pawns)
+    (dolist (index (or pawn-indices
+                      (chess-pos-search position (if color ?P ?p))) pawns)
+      (if (= (chess-index-rank index) seventh)
+         (push index pawns)
+       (let ((file (chess-index-file index)))
+         (if (catch 'passed-pawn
+               (let ((test (chess-incr-index index (if color -1 1) 0)))
+                 (while (funcall (if color '>= '<=)
+                                 (chess-index-rank test) seventh)
+                   (if (if (and (> file 0) (< file 7))
+                           (or (chess-pos-piece-p position test pawn)
+                               (chess-pos-piece-p
+                                position (chess-incr-index test 0 1) pawn)
+                               (chess-pos-piece-p
+                                position (chess-incr-index test 0 -1) pawn))
+                         (or (chess-pos-piece-p position test pawn)
+                             (chess-pos-piece-p
+                              position
+                              (chess-incr-index test 0 (if (zerop file) 1 -1))
+                              pawn)))
+                       (throw 'passed-pawn nil)
+                     (setq test (chess-incr-index test (if color -1 1) 0))))
+                 t))
+             (push index pawns)))))))
+    
+(chess-message-catalog 'english
+  '((move-from-blank . "Attempted piece move from blank square %s")))
+
+(defun chess-pos-move (position &rest changes)
+  "Move a piece on the POSITION directly, using the indices in CHANGES.
+This function does not check any rules, it only makes sure you are not
+trying to move a blank square."
+  (cl-assert (vectorp position))
+  (cl-assert (listp changes))
+  (cl-assert (> (length changes) 0))
+
+  (let* ((color (chess-pos-side-to-move position))
+        (can-castle-kingside (chess-pos-can-castle position (if color ?K ?k)))
+        (can-castle-queenside (chess-pos-can-castle position (if color ?Q 
?q))))
+    
+    ;; apply the piece movements listed in `changes'
+    (let ((ch changes))
+      (while ch
+       (if (symbolp (car ch))
+           (setq ch nil)
+         (let* ((from (car ch))
+                (to (cadr ch))
+                (piece (chess-pos-piece position from)))
+           (if (= piece ? )
+               (chess-error 'move-from-blank (chess-index-to-coord from))
+             (chess-pos-set-piece position from ? )
+             (chess-pos-set-piece position to piece)))
+         (setq ch (cddr ch)))))
+
+    ;; now fix up the resulting position
+
+    ;; if the move was en-passant, remove the captured pawn
+    (if (memq :en-passant changes)
+       (chess-pos-set-piece position
+                            (chess-next-index (cadr changes)
+                                              (if color
+                                                  chess-direction-south
+                                                chess-direction-north)) ? ))
+    
+    ;; once a piece is moved, en passant is no longer available
+    (chess-pos-set-en-passant position nil)
+
+    ;; if a king or rook moves, no more castling; also, if a pawn
+    ;; jumps ahead two, mark it en-passantable
+    (unless (symbolp (car changes))
+      (let ((piece (downcase (chess-pos-piece position (cadr changes)))))
+       (cond
+        ((= piece ?k)
+         (chess-pos-set-can-castle position (if color ?K ?k) nil)
+         (chess-pos-set-can-castle position (if color ?Q ?q) nil))
+
+        ((= piece ?r)
+         (if (and can-castle-queenside
+                  (= (car changes)
+                     can-castle-queenside))
+             (chess-pos-set-can-castle position (if color ?Q ?q) nil)
+           (if (and can-castle-kingside
+                    (= (car changes)
+                       can-castle-kingside))
+               (chess-pos-set-can-castle position (if color ?K ?k) nil))))
+
+        ((let ((can-castle (chess-pos-can-castle position (if color ?q ?Q))))
+           (and can-castle (= (cadr changes) can-castle)))
+         (chess-pos-set-can-castle position (if color ?q ?Q) nil))
+
+        ((let ((can-castle (chess-pos-can-castle position (if color ?k ?K))))
+           (and can-castle (= (cadr changes) can-castle)))
+         (chess-pos-set-can-castle position (if color ?k ?K) nil))
+
+        ((and (= piece ?p)
+              (> (abs (- (chess-index-rank (cadr changes))
+                         (chess-index-rank (car changes)))) 1))
+         (chess-pos-set-en-passant position (cadr changes))))))
+
+    ;; toggle the side whose move it is
+    (unless chess-pos-always-white
+      (chess-pos-set-side-to-move position (not color)))
+
+    ;; promote the piece if we were meant to
+    (let ((new-piece (cadr (memq :promote changes))))
+      (if new-piece
+         (chess-pos-set-piece position (cadr changes)
+                              (if color
+                                  new-piece
+                                (downcase new-piece)))))
+
+    ;; did we leave the position in check, mate or stalemate?
+    (cond
+     ((memq :check changes)
+      (chess-pos-set-status position :check))
+     ((memq :checkmate changes)
+      (chess-pos-set-status position :checkmate))
+     ((memq :stalemate changes)
+      (chess-pos-set-status position :stalemate))
+     (t (chess-pos-set-status position nil)))
+
+    ;; return the final position
+    position))
+
+(chess-message-catalog 'english
+  '((piece-unrecognized . "Unrecognized piece identifier")))
+
+(eval-when-compile
+  (defvar candidates)
+  (defvar check-only))
+
+(defsubst chess--add-candidate (candidate)
+  (if check-only
+      (throw 'in-check t)
+    (push candidate candidates)))
+
+(defconst chess-white-can-slide-to
+  (let ((squares (make-vector 64 nil)))
+    (dotimes (index 64)
+      (aset squares index
+           (cl-loop for dir in chess-sliding-white-piece-directions
+                    for ray = (let ((square index) (first t))
+                                (cl-loop while (setq square (chess-next-index
+                                                             square (car dir)))
+                                         collect (cons square
+                                                       (if first
+                                                           (cons ?K (cdr dir))
+                                                         (cdr dir)))
+                                         do (setq first nil)))
+                    when ray collect ray)))
+    squares))
+(defconst chess-black-can-slide-to
+  (let ((squares (make-vector 64 nil)))
+    (dotimes (index 64)
+      (aset squares index
+           (cl-loop for dir in chess-sliding-black-piece-directions
+                    for ray = (let ((square index) (first t))
+                                (cl-loop while (setq square (chess-next-index
+                                                             square (car dir)))
+                                         collect (cons square
+                                                       (if first
+                                                           (cons ?k (cdr dir))
+                                                         (cdr dir)))
+                                         do (setq first nil)))
+                    when ray collect ray)))
+    squares))
+
+(defun chess-search-position (position target piece &optional
+                                      check-only no-castling)
+  "Look on POSITION from TARGET for a PIECE that can move there.
+This routine looks along legal paths of movement for PIECE.  It
+differs from `chess-pos-search', which is a more basic function that
+doesn't take piece movement into account.
+
+If PIECE is t or nil, legal piece movements for any piece of that
+color will be considered (t for white, nil for black).  Otherwise, the
+case of the PIECE determines color.
+
+The return value is a list of candidates, which means a list of
+indices which indicate where a piece may have moved from.
+
+If CHECK-ONLY is non-nil and PIECE is either t or nil, only consider
+pieces which can give check (not the opponents king).
+If NO-CASTLING is non-nil, do not consider castling moves."
+  (cl-assert (vectorp position))
+  (cl-assert (and (>= target 0) (< target 64)))
+  (cl-assert (memq piece '(t nil ?K ?Q ?N ?B ?R ?P ?k ?q ?n ?b ?r ?p)))
+  (let* ((color (if (characterp piece)
+                   (< piece ?a)
+                 piece))
+        (test-piece (and (characterp piece)
+                         (upcase piece)))
+        p pos candidates)
+    (cond
+     ;; if the piece is `t', it means to find the candidates resulting
+     ;; from any piece movement.  This is useful for testing whether a
+     ;; king is in check, for example.
+     ((memq piece '(t nil))
+      ;; test for bishops, rooks, queens and kings at once
+      (dolist (ray (aref (if piece
+                            chess-white-can-slide-to
+                          chess-black-can-slide-to) target))
+       (while ray
+         (let ((pos-piece (chess-pos-piece position (caar ray))))
+           (setq ray (cond ((memq pos-piece (cdar ray))
+                            (chess--add-candidate (caar ray)) nil)
+                           ((eq pos-piece ? ) (cdr ray)))))))
+
+      ;; test for knights and pawns
+      (dolist (p (if piece '(?P ?N) '(?p ?n)))
+       (mapc 'chess--add-candidate
+             (chess-search-position position target p check-only no-castling)))
+
+      ;; test whether the rook or king can move to the target by castling
+      (unless no-castling
+       (if (and (or (and (eq target (if color ?\076 ?\006))
+                         (chess-pos-can-castle position (if color ?K ?k))
+                         (chess-ply-castling-changes position))
+                    (and (eq target (if color ?\072 ?\002))
+                         (chess-pos-can-castle position (if color ?Q ?q))
+                         (chess-ply-castling-changes position t))))
+           (chess--add-candidate (chess-pos-king-index position color))
+         (let (rook)
+           (if (and (eq target (if color ?\075 ?\005))
+                    (setq rook (chess-pos-can-castle position (if color ?K 
?k)))
+                    (chess-ply-castling-changes position))
+               (chess--add-candidate rook)
+             (if (and (eq target (if color ?\073 ?\003))
+                      (setq rook (chess-pos-can-castle position
+                                                       (if color ?Q ?q)))
+                      (chess-ply-castling-changes position t))
+                 (chess--add-candidate rook)))))))
+
+     ;; skip erroneous space requests
+     ((= test-piece ? ))
+
+     ;; pawn movement, which is diagonal 1 when taking, but forward
+     ;; 1 or 2 when moving (the most complex piece, actually)
+     ((eq test-piece ?P)
+      (let ((p (chess-pos-piece position target))
+           (backward (if color chess-direction-south chess-direction-north)))
+       (if (if (eq p ? )
+               ;; check for en passant
+               (and (= (chess-index-rank target) (if color 2 5))
+                    (let ((ep (chess-pos-en-passant position)))
+                      (when ep
+                        (= ep (funcall (if color #'+ #'-) target 8))))
+                    (or (and (setq pos (chess-next-index target
+                                                         (if color
+                                                             
chess-direction-southwest
+                                                           
chess-direction-northeast)))
+                             (chess-pos-piece-p position pos
+                                                (if color ?P ?p)))
+                        (and (setq pos (chess-next-index target
+                                                         (if color
+                                                             
chess-direction-southeast
+                                                           
chess-direction-northwest)))
+                             (chess-pos-piece-p position pos
+                                                (if color ?P ?p)))))
+             (if color (> p ?a) (< p ?a)))
+           (progn
+             (if (and (setq pos (chess-next-index target (if color
+                                                             
chess-direction-southeast
+                                                           
chess-direction-northwest)))
+                      (chess-pos-piece-p position pos piece))
+                 (chess--add-candidate pos))
+             (if (and (setq pos (chess-next-index target (if color
+                                                             
chess-direction-southwest
+                                                           
chess-direction-northeast)))
+                      (chess-pos-piece-p position pos piece))
+                 (chess--add-candidate pos)))
+         (if (setq pos (chess-next-index target backward))
+             (let ((pos-piece (chess-pos-piece position pos)))
+               (if (eq pos-piece piece)
+                   (chess--add-candidate pos)
+                 (if (and (eq pos-piece ? )
+                          (= (if color 4 3) (chess-index-rank target))
+                          (setq pos (funcall (if color #'+ #'-) pos 8))
+                          (chess-pos-piece-p position pos piece))
+                     (chess--add-candidate pos))))))))
+
+     ;; the rook, bishop and queen are the easiest; just look along
+     ;; rank and file and/or diagonal for the nearest pieces!
+     ((memq test-piece '(?R ?B ?Q))
+      (dolist (dir (cond
+                   ((= test-piece ?R) chess-rook-directions)
+                   ((= test-piece ?B) chess-bishop-directions)
+                   ((= test-piece ?Q) chess-queen-directions)))
+       ;; up the current file
+       (setq pos (chess-next-index target dir))
+       (while pos
+         (let ((pos-piece (chess-pos-piece position pos)))
+           (if (eq pos-piece piece)
+               (progn
+                 (chess--add-candidate pos)
+                 (setq pos nil))
+             (setq pos (and (eq pos-piece ? ) (chess-next-index pos dir)))))))
+      ;; test whether the rook can move to the target by castling
+      (if (and (= test-piece ?R) (not no-castling))
+         (let (rook)
+           (if (and (= target (if color ?\075 ?\005))
+                    (setq rook (chess-pos-can-castle position
+                                                     (if color ?K ?k)))
+                    (chess-ply-castling-changes position))
+               (chess--add-candidate rook)
+             (if (and (= target (if color ?\073 ?\003))
+                      (setq rook (chess-pos-can-castle position
+                                                       (if color ?Q ?q)))
+                      (chess-ply-castling-changes position t))
+                 (chess--add-candidate rook))))))
+
+     ;; the king is a trivial case of the queen, except when castling
+     ((= test-piece ?K)
+      (let ((dirs chess-king-directions))
+       (while dirs
+         ;; up the current file
+         (setq pos (chess-next-index target (car dirs)))
+         (if (and pos (chess-pos-piece-p position pos piece))
+             (progn
+               (chess--add-candidate pos)
+               (setq dirs nil))
+           (setq dirs (cdr dirs))))
+
+       ;; test whether the king can move to the target by castling
+       (if (and (not no-castling)
+                (or (and (eq target (if color ?\076 ?\006))
+                         (chess-pos-can-castle position (if color ?K ?k))
+                         (chess-ply-castling-changes position))
+                    (and (eq target (if color ?\072 ?\002))
+                         (chess-pos-can-castle position (if color ?Q ?q))
+                         (chess-ply-castling-changes position t))))
+           (chess--add-candidate (chess-pos-king-index position color)))))
+
+     ;; the knight is a zesty little piece; there may be more than
+     ;; one, but at only one possible square in each direction
+     ((= test-piece ?N)
+      (dolist (dir chess-knight-directions)
+       ;; up the current file
+       (if (and (setq pos (chess-next-index target dir))
+                (chess-pos-piece-p position pos piece))
+           (chess--add-candidate pos))))
+
+     (t (chess-error 'piece-unrecognized)))
+
+    ;; prune from the discovered candidates list any moves which would
+    ;; leave the king in check; castling through check has already
+    ;; been eliminated.
+    (if (and candidates (characterp piece))
+       (setq candidates
+             (chess-pos-legal-candidates position color target
+                                         candidates)))
+
+    ;; return the final list of candidate moves
+    candidates))
+
+(defun chess-pos-legal-candidates (position color target candidates)
+  "Test if TARGET can legally be reached by any of CANDIDATES.
+Return the list of candidates that can reach it.
+
+CANDIDATES is a list of position indices which indicate the piece to
+be moved, and TARGET is the index of the location to be moved to.
+
+Note: All of the pieces specified by CANDIDATES must be of the same
+type.  Also, it is the callers responsibility to ensure that the piece
+can legally reach the square in question.  This function merely
+assures that the resulting position is valid (the move does not leave the king
+in check)."
+  (cl-assert (vectorp position))
+  (cl-assert (memq color '(nil t)))
+  (cl-assert (and (>= target 0) (< target 64)))
+  (cl-assert (listp candidates))
+  (cl-assert (> (length candidates) 0))
+  (let ((cand candidates)
+       (piece (chess-pos-piece position (car candidates)))
+       (other-piece (chess-pos-piece position target))
+       en-passant-square last-cand king-pos)
+    (while cand
+      (unwind-protect
+         (progn
+           ;; determine the resulting position
+           (chess-pos-set-piece position (car cand) ? )
+           (chess-pos-set-piece position target piece)
+           (when (and (= piece (if color ?P ?p))
+                      (let ((ep (chess-pos-en-passant position)))
+                        (when ep
+                          (= ep (chess-next-index target (if color
+                                                             
chess-direction-south
+                                                           
chess-direction-north))))))
+             (chess-pos-set-piece position
+                                  (setq en-passant-square
+                                        (chess-incr-index target
+                                                          (if color 1 -1)
+                                                          0))
+                                  ? ))
+           ;; find the king (only once if the king isn't moving)
+           (if (or (null king-pos)
+                   (memq piece '(?K ?k)))
+               (setq king-pos (chess-pos-king-index position color)))
+           ;; can anybody from the opposite side reach him?  if so,
+           ;; drop the candidate
+           (if (and king-pos
+                    (catch 'in-check
+                      (chess-search-position position king-pos
+                                             (not color) t)))
+               (if last-cand
+                   (setcdr last-cand (cdr cand))
+                 (setq candidates (cdr candidates)))
+             (setq last-cand cand)))
+       ;; return the position to its original state
+       (chess-pos-set-piece position target other-piece)
+       (chess-pos-set-piece position (car cand) piece)
+       (when en-passant-square
+         (chess-pos-set-piece position en-passant-square (if color ?p ?P))))
+      ;; try the next candidate
+      (setq cand (cdr cand)))
+    candidates))
+
+(provide 'chess-pos)
+
+;;; chess-pos.el ends here
diff --git a/packages/chess/chess-puzzle.el b/packages/chess/chess-puzzle.el
new file mode 100644
index 0000000..5a5ccb4
--- /dev/null
+++ b/packages/chess/chess-puzzle.el
@@ -0,0 +1,105 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A special kind of display that merely autosaves the game
+;;
+
+(require 'chess-game)
+(require 'chess-random)
+(require 'chess-database)
+
+(defgroup chess-puzzle nil
+  "A mode for playing games from a database of puzzles."
+  :group 'chess)
+
+(defcustom chess-puzzle-auto-next nil
+  "If non-nil, move to the next puzzle once the position is won."
+  :type 'boolean
+  :group 'chess-puzzle)
+
+(defvar chess-puzzle-indices nil)
+(defvar chess-puzzle-position nil)
+
+(make-variable-buffer-local 'chess-puzzle-indices)
+(make-variable-buffer-local 'chess-puzzle-position)
+
+(chess-message-catalog 'english
+  '((bad-game-read . "Error reading game at position %d")
+    (end-of-puzzles . "There are no more puzzles in this collection")))
+
+;;;###autoload
+(defun chess-puzzle (file &optional index)
+  "Pick a random puzzle from FILE, and solve it against the default engine.
+The spacebar in the display buffer is bound to `chess-puzzle-next',
+making it easy to go on to the next puzzle once you've solved one."
+  (interactive "fRead chess puzzles from: ")
+  (let* ((database (chess-database-open file))
+        (objects (and database (chess-session)))
+        (engine (car objects))
+        (display (cadr objects)))
+    (when database
+      (if engine
+         (chess-engine-set-option engine 'resign nil))
+      (with-current-buffer display
+       (chess-game-set-data (chess-display-game nil) 'database database)
+       (if chess-puzzle-auto-next
+           (chess-game-add-hook (chess-display-game nil)
+                                'chess-puzzle-handler display))
+       (define-key (current-local-map) [? ] 'chess-puzzle-next)
+       (define-key (current-local-map) [??] 'chess-puzzle-show-solution)
+       (let ((count (chess-database-count database)))
+         (setq chess-puzzle-indices (make-vector count nil))
+         (dotimes (i count)
+           (aset chess-puzzle-indices i i))
+         (random t)
+         (chess-shuffle-vector chess-puzzle-indices)
+         (setq chess-puzzle-position 0))
+       (chess-game-run-hooks (chess-display-game display) 'disable-autosave)
+       (chess-puzzle-next)))))
+
+(defun chess-puzzle-next ()
+  "Play the next puzzle in the collection, selected randomly."
+  (interactive)
+  (let* ((game (chess-display-game nil))
+        (database (chess-game-data game 'database))
+        (index chess-puzzle-position)
+        next-game)
+    (if (= index (length chess-puzzle-indices))
+       (chess-message 'end-of-puzzles)
+      ;; setup and load the next puzzle position
+      (setq chess-puzzle-position (1+ chess-puzzle-position))
+      (if (null (setq next-game
+                     (chess-database-read database
+                                          (aref chess-puzzle-indices index))))
+         (chess-error 'bad-game-read (aref chess-puzzle-indices index))
+       (chess-display-set-game nil next-game 0)
+       (chess-game-set-data game 'my-color (chess-game-side-to-move game 0))
+       (dolist (key '(database database-index database-count))
+         (chess-game-set-data game key (chess-game-data next-game key)))
+       (let ((chess-display-handling-event nil))
+         (chess-game-run-hooks game 'orient))))))
+
+(defun chess-puzzle-show-solution ()
+  (interactive)
+  (let ((game (chess-display-game nil)))
+    (when game
+      (let ((bm (chess-pos-epd (chess-game-pos game 0) 'bm))
+           (pv (chess-pos-epd (chess-game-pos game 0) 'pv)))
+       (when (or bm pv)
+         (message "Best move %s %s%s"
+                  (if (zerop (chess-game-index game)) "is" "would have been")
+                  (chess-ply-to-string (car bm))
+                  (if pv
+                      (concat ", predicted variation "
+                              (chess-var-to-algebraic pv))
+                    "")))))))
+
+
+(defun chess-puzzle-handler (game display event &rest args)
+  (if (and (eq event 'move)
+          (chess-game-over-p game))
+      (with-current-buffer display
+       (chess-puzzle-next))))
+
+(provide 'chess-puzzle)
+
+;;; chess-puzzle.el ends here
diff --git a/packages/chess/chess-random.el b/packages/chess/chess-random.el
new file mode 100644
index 0000000..06a01e6
--- /dev/null
+++ b/packages/chess/chess-random.el
@@ -0,0 +1,65 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Generate Fischer Random style positions
+;;
+;; Just call `chess-fischer-random-position' to generate such a
+;; position.
+;;
+
+(require 'chess-pos)
+
+(defvar pieces-vector [?r ?n ?b ?q ?k ?b ?n ?r])
+
+(defun chess-shuffle-vector (vector)
+  "Randomly permute the elements of VECTOR (all permutations equally likely)"
+  (let ((i 0)
+       j
+       temp
+       (len (length vector)))
+    (while (< i len)
+      (setq j (+ i (random (- len i))))
+      (setq temp (aref vector i))
+      (aset vector i (aref vector j))
+      (aset vector j temp)
+      (setq i (1+ i))))
+  vector)
+
+;;;###autoload
+(defun chess-fischer-random-position ()
+  "Generate a Fischer Random style position."
+  (let (pieces position)
+    (while (null position)
+      (setq pieces (chess-shuffle-vector pieces-vector))
+      (let (first-bishop first-rook king)
+       (catch 'retry
+         (dotimes (i 8)
+           (let ((piece (aref pieces i)))
+             (cond
+              ((= ?b piece)
+               (if first-bishop
+                   (if (= (mod i 2) first-bishop)
+                       (throw 'retry t))
+                 (setq first-bishop (mod i 2))))
+              ((= ?k piece)
+               (if (null first-rook)
+                   (throw 'retry t))
+               (setq king i))
+              ((= ?r piece)
+               (if first-rook
+                   (if (null king)
+                       (throw 'retry t))
+                 (setq first-rook i))))))
+         (setq position (chess-pos-create)))))
+
+    ;; set the home row pieces
+    (dotimes (i 8)
+      (chess-pos-set-piece position (chess-rf-to-index 0 i)
+                          (aref pieces i))
+      (chess-pos-set-piece position (chess-rf-to-index 7 i)
+                          (upcase (aref pieces i))))
+
+    position))
+
+(provide 'chess-random)
+
+;;; chess-random.el ends here
diff --git a/packages/chess/chess-scid.el b/packages/chess/chess-scid.el
new file mode 100644
index 0000000..045a37a
--- /dev/null
+++ b/packages/chess/chess-scid.el
@@ -0,0 +1,211 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A game database that uses SCID for storage/retrieval
+;;
+;; The advantage is that it's much faster than PGN, and far, far more
+;; compact.
+;;
+
+(chess-message-catalog 'english
+  '((failed-load     . "Failed to load game %d from ChessDB")
+    (failed-find-end . "Failed to locate end of game %d in ChessDB")))
+
+(defvar chess-scid-process)
+
+(make-variable-buffer-local 'chess-scid-process)
+
+(defsubst chess-scid-send (string)
+  (process-send-string chess-scid-process (concat string "\n")))
+
+(defun chess-scid-get-result (command)
+  (let ((here (point-max)) (iterations 10))
+    (chess-scid-send command)
+    (accept-process-output chess-scid-process)
+    (while (and (> (setq iterations (1- iterations)) 0)
+               (eobp))
+      (accept-process-output chess-scid-process 1 0 t))
+    (if (= here (point-max))
+       (error "chess-scid: '%s' failed to produce any output" command))
+    (goto-char (point-max))
+    (skip-chars-backward " \t\n\r%")
+    (prog1
+       (buffer-substring here (point))
+      (erase-buffer))))
+
+(defun chess-scid-handler (event &rest args)
+  (cond
+   ((eq event 'open)
+    (let* ((db-file (if (string-match "\\.sg3\\'" (car args))
+                       (car args)
+                     (concat (car args) ".sg3")))
+          (db-base (and (string-match "\\`\\(.+\\)\\.sg3\\'" db-file)
+                        (match-string 1 db-file))))
+      (if (and db-base (file-readable-p db-file))
+         (let* ((buffer (generate-new-buffer " *chess-scid*"))
+                (proc (start-process "*chess-scid*" buffer
+                                     (or (executable-find "tcscid")
+                                         (executable-find "tcchessdb")))))
+           (if (and proc (eq (process-status proc) 'run))
+               (with-current-buffer buffer
+                 (accept-process-output proc)
+                 (setq chess-scid-process proc)
+                 (if (= 1 (string-to-number
+                           (chess-scid-get-result
+                            (format "sc_base open %s"
+                                    (expand-file-name db-base)))))
+                     buffer
+                   (kill-process proc)
+                   (kill-buffer buffer)
+                   nil))
+             (kill-buffer buffer)
+             nil)))))
+
+   ((eq event 'close)
+    (chess-scid-send "sc_base close\nexit")
+    (while (eq (process-status chess-scid-process) 'run)
+      (sit-for 0 250)))
+
+   ((eq event 'read-only-p)
+    (if (zerop (string-to-number (chess-scid-get-result "sc_base isReadOnly")))
+       nil
+      t))
+
+   ((eq event 'filename)
+    (chess-scid-get-result "sc_base filename"))
+
+   ((eq event 'count)
+    (string-to-number (chess-scid-get-result "sc_base numGames")))
+
+   ((eq event 'read)
+    ;; clear the buffer, since we don't need old data here any more, and it
+    ;; can accumulate without bound during running of the validation tests
+    (erase-buffer)
+    (process-send-string chess-scid-process
+                        (format "sc_game load %d\n" (1+ (car args))))
+    (accept-process-output chess-scid-process)
+    (let ((here (point-max))
+         (iterations 10)
+         found)
+      (process-send-string chess-scid-process "sc_game pgn\n")
+      (accept-process-output chess-scid-process)
+      (goto-char here)
+      (while (and (> (setq iterations (1- iterations)) 0)
+                 (not (and (or (looking-at "\\[")
+                               (and (search-forward "[" nil t)
+                                    (goto-char (match-beginning 0))))
+                           (setq found t))))
+       (accept-process-output chess-scid-process 1 0 t))
+      (if (not found)
+         (chess-error 'failed-load (1+ (car args)))
+       (setq iterations 10 found nil here (point))
+       (while (and (> (setq iterations (1- iterations)) 0)
+                   (not (and (re-search-forward 
"\\(\\*\\|1-0\\|0-1\\|1/2-1/2\\)" nil t)
+                             (goto-char (match-beginning 0))
+                             (setq found t))))
+         (accept-process-output chess-scid-process 1 0 t))
+       (if (not found)
+           (chess-error 'failed-find-end (1+ (car args)))
+         (goto-char here)
+         (let ((game (chess-pgn-to-game)))
+           (when game
+             (chess-game-set-data game 'database (current-buffer))
+             (chess-game-set-data game 'database-index (car args))
+             (chess-game-set-data game 'database-count (chess-scid-handler 
'count))
+             game))))))
+
+   ((and (eq event 'query)
+        (eq (car args) 'tree-search))
+    (if (string=
+        (chess-scid-get-result
+         (format "sc_game import \"%s\""
+                 (with-temp-buffer
+                   (chess-pgn-insert-plies
+                    (cadr args) 1 (chess-game-plies (cadr args)))
+                   (insert " " (or (chess-game-tag (cadr args) "Result") "*"))
+                   (buffer-string))))
+        "PGN text imported with no errors or warnings.")
+       (let ((here (point-max)))
+         (chess-scid-send "sc_tree search")
+         (accept-process-output chess-scid-process)
+         (goto-char here)
+         (let ((lines (list t)))
+           (while
+               (re-search-forward
+                (concat "\\s-*\\([1-9][0-9]*\\):\\s-+\\([^ ]+\\)\\s-+"
+                        "\\([0-9]+\\):\\s-*\\([0-9.]+\\)%\\s-+"
+                        "\\([0-9.]+\\)%\\s-+\\([0-9]+\\|    \\)\\s-+"
+                        "\\([0-9]+\\|    \\)\\s-+\\([0-9]+\\|    \\)\\s-+"
+                        "\\([0-9.]+\\)%")
+                nil t)
+             (let ((move (match-string 2))
+                   (freq (string-to-number (match-string 3)))
+                   (score (string-to-number (match-string 5)))
+                   (avgelo (string-to-number (match-string 6)))
+                   (perf (string-to-number (match-string 7)))
+                   (avgyear (string-to-number (match-string 8)))
+                   (draws (string-to-number (match-string 9))))
+               (nconc lines
+                      (list
+                       (append
+                        (list move freq score draws)
+                        (cond
+                         ((and (zerop avgyear) (zerop avgelo) (zerop perf))
+                          nil)
+                         ((and (zerop avgelo) (zerop perf))
+                          (list avgyear))
+                         (t
+                          (list
+                           (unless (zerop avgyear) avgyear)
+                           (unless (zerop avgelo) avgelo)
+                           (unless (zerop perf) perf)))))))))
+           (when (re-search-forward
+                  (concat "TOTAL:\\s-+\\([0-9]+\\):100.0%\\s-+"
+                          "\\([0-9.]+\\)%\\s-+\\([0-9]+\\|    \\)\\s-+"
+                          "\\([0-9]+\\|    \\)\\s-+\\([0-9]+\\|    \\)\\s-+"
+                          "\\([0-9.]+\\)%") nil t)
+             (goto-char (point-max))
+             (append
+              (list (string-to-number (match-string 1))
+                    (string-to-number (match-string 2))
+                    (string-to-number (match-string 6)))
+              (cdr lines)))))
+      (error "Unable to import game")))
+
+   ((eq event 'write)
+    (chess-scid-handler 'replace (car args) 0))
+
+   ((eq event 'replace)
+    (unless (chess-scid-handler 'read-only-p)
+      (let ((index (or (1+ (cadr args))
+                      (chess-game-data (car args) 'database-index))))
+       (chess-scid-send
+        (format "sc_game import \"%s\""
+                (with-temp-buffer
+                  (chess-pgn-insert-plies
+                   (car args) 1 (chess-game-plies (car args)))
+                  (insert (or (chess-game-tag (car args) "Result") "*"))
+                  (buffer-string))))
+       (dolist (tag (chess-game-tags (car args)))
+         ;; jww (2002-05-01): how do I set extra tags?
+         (unless (string= (car tag) "TimeControl")
+           (chess-scid-send
+            (concat "sc_game tags set "
+                    (cond
+                     ((string= (car tag) "Event")     "-event")
+                     ((string= (car tag) "Site")      "-site")
+                     ((string= (car tag) "Date")      "-date")
+                     ((string= (car tag) "Round")     "-round")
+                     ((string= (car tag) "White")     "-white")
+                     ((string= (car tag) "WhiteElo")  "-whiteElo")
+                     ((string= (car tag) "Black")     "-black")
+                     ((string= (car tag) "BlackElo")  "-blackElo")
+                     ((string= (car tag) "Result")    "-result")
+                     ((string= (car tag) "ECO")       "-eco")
+                     ((string= (car tag) "EventDate") "-eventdate")
+                     ((string= (car tag) "Extra")     "-extra"))
+                    " \"" (cdr tag) "\""))))
+       (chess-scid-send (format "sc_game save %d" index)))))))
+
+(provide 'chess-scid)
+
+;;; chess-scid.el ends here
diff --git a/packages/chess/chess-sjeng.el b/packages/chess/chess-sjeng.el
new file mode 100644
index 0000000..298d3e7
--- /dev/null
+++ b/packages/chess/chess-sjeng.el
@@ -0,0 +1,121 @@
+;;; chess-sjeng.el --- Play against sjeng!
+
+;; Copyright (C) 2004  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'chess-common)
+
+(defgroup chess-sjeng nil
+  "The publically available chess engine 'sjeng'."
+  :group 'chess-engine
+  :link '(url-link "http://sjeng.sourceforge.net";))
+
+(defcustom chess-sjeng-path (executable-find "sjeng")
+  "*The path to the sjeng executable."
+  :type 'file
+  :group 'chess-sjeng)
+
+(defvar chess-sjeng-evaluation nil)
+
+(make-variable-buffer-local 'chess-sjeng-evaluation)
+
+(defvar chess-sjeng-regexp-alist
+  (list
+   (cons (concat "move\\s-+\\(" chess-algebraic-regexp "\\)\\s-*$")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-engine-convert-algebraic (match-string 1) t)))))
+   (cons "tellics set 1\\s-+\\(.+\\)$"
+        (function
+         (lambda ()
+           (setq chess-engine-opponent-name (match-string 1)))))
+   (cons "{\\(Black\\|White\\) resigns}"
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'resign))))
+   (cons "\\(Illegal move\\|unrecognized/illegal command\\):\\s-*\\(.*\\)"
+        (function
+         (lambda ()
+           (error (match-string 1)))))
+   (cons "command not legal now"
+        (function
+         (lambda ()
+           (error (match-string 0)))))))
+
+(defun chess-sjeng-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-common-handler game 'initialize "sjeng")))
+       (when (and proc (processp proc)
+                  (eq (process-status proc) 'run))
+         (process-send-string proc "xboard\nnew\n")
+         (setq chess-engine-process proc)
+         t)))
+
+     ((eq event 'setup-pos)
+      (chess-engine-send nil (format "setboard %s\n"
+                                    (chess-pos-to-string (car args)))))
+
+     ((eq event 'move)
+      (when (= 1 (chess-game-index game))
+       (chess-game-set-tag game "White" chess-full-name)
+       (chess-game-set-tag game "Black" chess-engine-opponent-name))
+
+      (chess-engine-send
+       nil
+       (concat (chess-index-to-coord (chess-ply-source (car args)))
+              (chess-index-to-coord (chess-ply-target (car args)))
+              (if (chess-ply-keyword (car args) :promote)
+                  (string (downcase (chess-ply-keyword (car args) :promote)))
+                "")
+              "\n"))
+      (if (chess-game-over-p game)
+         (chess-game-set-data game 'active nil)))
+
+     ((eq event 'setup-game)
+      (let ((file (chess-with-temp-file
+                     (insert (chess-game-to-string (car args)) ?\n))))
+       (chess-engine-send nil (format "read %s\n" file))))
+
+     ((eq event 'set-option)
+      (cond
+       ((eq (car args) 'resign)
+       (if (cadr args)
+           (chess-engine-send nil "resign 9\n")
+         (chess-engine-send nil "resign -1\n")))
+       ((eq (car args) 'ponder)
+       (if (cadr args)
+           (chess-engine-send nil "hard\n")
+         (chess-engine-send nil "easy\n")))))
+
+     (t
+      (if (and (eq event 'undo)
+              (= 1 (mod (car args) 2)))
+         (error "Cannot undo until after sjeng moves"))
+
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-sjeng)
+
+;;; chess-sjeng.el ends here
diff --git a/packages/chess/chess-sound.el b/packages/chess/chess-sound.el
new file mode 100644
index 0000000..ed1ce53
--- /dev/null
+++ b/packages/chess/chess-sound.el
@@ -0,0 +1,110 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This is very similar to chess-announce, except it uses specific
+;; .WAV files instead of text-to-speech.
+;;
+
+(require 'chess-game)
+
+(defgroup chess-sound nil
+  "Code to play specific sounds when announcing chess moves."
+  :group 'chess)
+
+(defcustom chess-sound-directory
+  (expand-file-name "sounds"
+                   (file-name-directory
+                    (or load-file-name buffer-file-name)))
+  "The directory where chess sounds can be found."
+  :type 'directory
+  :group 'chess-sound)
+
+(defcustom chess-sound-play-function (if (fboundp 'play-sound-file)
+                                        'play-sound-file
+                                      'chess-sound-play)
+  "Non-nil if chess-sound should play sounds ."
+  :type 'function
+  :group 'chess-sound)
+
+(defcustom chess-sound-program (or (executable-find "esdplay")
+                                  (executable-find "play"))
+  "Program used to play sounds, if `play-sound-file' does not exist."
+  :type 'file
+  :group 'chess-sound)
+
+(defcustom chess-sound-args nil
+  "Additional args to pass to `chess-sound-program', before the .WAV file."
+  :type '(repeat string)
+  :group 'chess-sound)
+
+(defcustom chess-sound-my-moves nil
+  "If non-nil, plays the move.wav sound whenever you make a move."
+  :type 'boolean
+  :group 'chess-sound)
+
+(defsubst chess-sound (file)
+  (ignore-errors
+    (funcall chess-sound-play-function
+            (expand-file-name (concat file ".wav")
+                              chess-sound-directory))))
+
+(defsubst chess-sound-play (file)
+  (apply 'call-process chess-sound-program
+        nil nil nil (append chess-sound-args (list file))))
+
+(defun chess-sound-handler (game event &rest args)
+  (cond
+   ((eq event 'initialize)
+    (and (file-directory-p chess-sound-directory)
+        (file-readable-p (expand-file-name "move.wav"
+                                           chess-sound-directory))
+        (or (eq chess-sound-play-function 'play-sound-file)
+            (and chess-sound-program
+                 (file-executable-p chess-sound-program)))))
+
+   ((eq event 'move)
+    (let* ((ply (chess-game-ply game (1- (chess-game-index game))))
+          (pos (chess-ply-pos ply)))
+      (if (eq (chess-game-data game 'my-color)
+             (chess-pos-side-to-move pos))
+         (if chess-sound-my-moves
+             (chess-sound "move"))
+       (let* ((source (chess-ply-source ply))
+              (target (chess-ply-target ply))
+              (s-piece (and source (chess-pos-piece pos source)))
+              (t-piece (and target (chess-pos-piece pos target)))
+              (which (chess-ply-keyword ply :which))
+              text)
+         (cond
+          ((chess-ply-keyword ply :castle)
+           (chess-sound "O-O"))
+          ((chess-ply-keyword ply :long-castle)
+           (chess-sound "O-O-O"))
+          ((and s-piece t-piece (= t-piece ? ) target)
+           (if which
+               (chess-sound (char-to-string which)))
+           (chess-sound (format "%c_" (downcase s-piece)))
+           (chess-sound (chess-index-to-coord target)))
+          ((and s-piece t-piece target)
+           (if which
+               (chess-sound (char-to-string which)))
+           (chess-sound (format "%c_" (downcase s-piece)))
+           (chess-sound "x_")
+           (chess-sound (format "%c_" (downcase t-piece)))
+           (chess-sound (chess-index-to-coord target))))
+
+         (if (chess-ply-keyword ply :promote)
+             (chess-sound
+              (format "%c_" (downcase
+                             (chess-ply-keyword ply :promote)))))
+         (if (chess-ply-keyword ply :en-passant)
+             (chess-sound "enpassant"))
+         (if (chess-ply-keyword ply :check)
+             (chess-sound "+_"))
+         (if (chess-ply-keyword ply :checkmate)
+             (chess-sound "#_"))
+         (if (chess-ply-keyword ply :stalemate)
+             (chess-sound "smate"))))))))
+
+(provide 'chess-sound)
+
+;;; chess-sound.el ends here
diff --git a/packages/chess/chess-stockfish.el 
b/packages/chess/chess-stockfish.el
new file mode 100644
index 0000000..21dc6a6
--- /dev/null
+++ b/packages/chess/chess-stockfish.el
@@ -0,0 +1,70 @@
+;;; chess-stockfish.el --- Play against stockfish!
+
+;; Copyright (C) 2014  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'chess-uci)
+
+(defgroup chess-stockfish nil
+  "The publically available chess engine 'stockfish'."
+  :group 'chess-engine
+  :link '(url-link "http://www.stockfishchess.com";))
+
+(defcustom chess-stockfish-path (executable-find "stockfish")
+  "*The path to the stockfish executable."
+  :type 'file
+  :group 'chess-stockfish)
+
+(defvar chess-stockfish-regexp-alist
+  (append
+   chess-uci-regexp-alist
+   (list
+    (cons (concat "^info\\s-+.*nps\\s-+\\([0-9]+\\).*pv\\s-+\\("
+                 chess-uci-long-algebraic-regexp
+                 "\\(\\s-+" chess-uci-long-algebraic-regexp "\\)+\\)")
+         (function
+          (lambda ()
+            (setq-local chess-stockfish-nps (string-to-number (match-string 
1)))
+            (setq-local chess-stockfish-pv
+                        (split-string (match-string 2) " ")))))))
+  "Patterns used to match stockfish output.")
+
+(defun chess-stockfish-handler (game event &rest args)
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (let ((proc (chess-uci-handler game 'initialize "stockfish")))
+       (when (and proc (processp proc) (eq (process-status proc) 'run))
+         (process-send-string proc "uci\n")
+         (setq chess-engine-process proc)
+         t)))
+
+     (t
+      (if (and (eq event 'undo)
+              (= 1 (mod (car args) 2)))
+         (error "Cannot undo until after stockfish moves"))
+
+      (apply 'chess-uci-handler game event args)))))
+
+(provide 'chess-stockfish)
+
+;;; chess-stockfish.el ends here
diff --git a/packages/chess/chess-test.el b/packages/chess/chess-test.el
new file mode 100644
index 0000000..cdbf335
--- /dev/null
+++ b/packages/chess/chess-test.el
@@ -0,0 +1,73 @@
+;; Soon: Put Emacs Chess through an enormous battery of tests.
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'chess-database)
+(require 'chess-game)
+
+(defun chess-test (&optional file start count)
+  (unless file
+    (setq file (nth 0 command-line-args-left)))
+  (unless start
+    (setq start (ignore-errors
+                 (string-to-number (nth 1 command-line-args-left)))))
+  (unless count
+    (setq count (ignore-errors
+                 (string-to-number (nth 2 command-line-args-left)))))
+
+  (message "Opening chess database '%s'" file)
+
+  (let* ((large-file-warning-threshold nil)
+        (database (chess-database-open file))
+        error-occurred)
+    (if database
+       (progn
+         (message "Running validation suite...")
+         (let* ((db-count (chess-database-count database))
+                (ply-count 0)
+                (index (or start 0))
+                (last-index (if (and count (> count 0))
+                                (min db-count (+ index count))
+                              db-count))
+                (begin (current-time))
+                (read-count 0))
+           (message "Testing legality of games in range [%d, %d]:"
+                    index (1- last-index))
+           (while (< index last-index)
+             ;; Reading in the game will cause it to be converted from PGN
+             ;; (this is true currently) to a chess-game, during which time
+             ;; every move will be tested for legality.
+             ;;
+             ;; jww (2008-08-31): We should add some extra checks here, if we
+             ;; want to verify the final position and such.
+             (condition-case err
+                 (let ((game (chess-database-read database index)))
+                   (when game
+                     (setq read-count (1+ read-count)
+                           ply-count
+                           (+ ply-count (length (chess-game-plies game))))
+                     (if (and (> read-count 0) (= 0 (mod read-count 1000)))
+                         (message "Read %d games (next %d): %d total plies 
(%.2f ply/sec)"
+                                  read-count (1+ index) ply-count
+                                  (/ (float ply-count)
+                                     (float-time
+                                      (subtract-time (current-time)
+                                                     begin)))))))
+               (error
+                (setq error-occurred t)
+                (message "Error reading game %d: %s"
+                         index (error-message-string err))))
+             (setq index (1+ index)))
+           (message "Read %d games (last %d): %d plies (%.2f ply/sec, %.2f 
seconds)"
+                    read-count (1- index) ply-count
+                    (/ (float ply-count)
+                       (float-time (subtract-time (current-time) begin)))
+                    (float-time (subtract-time (current-time) begin)))
+           (message "Running validation suite...done")
+           (chess-database-close database)))
+      (error "Failed to open chess database '%s'" file))
+    (if error-occurred
+       (error "Some of the tests failed"))))
+
+;;; chess-test.el ends here
diff --git a/packages/chess/chess-transport.el 
b/packages/chess/chess-transport.el
new file mode 100644
index 0000000..12dce9a
--- /dev/null
+++ b/packages/chess/chess-transport.el
@@ -0,0 +1,43 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; An example of a generic transport engine, based on the protocol
+;; used by chess-network.el.  The only parts missing are send and
+;; receive.  This could be used for transmitting chess.el protocol
+;; over CTCP, for example.
+;;
+
+(require 'chess-network)
+
+(defvar chess-transport-regexp-alist chess-network-regexp-alist)
+
+(defun chess-transport-handler (game event &rest args)
+  "This is an example of a generic transport engine."
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      ;; Initialize the transport here, if necessary.  Make sure that
+      ;; any housekeeping data you use is kept in buffer-local
+      ;; variables.  Otherwise, multiple games played using the same
+      ;; kind of transport might collide.  For example:
+      ;;
+      ;; (set (make-local-variable 'chess-transport-data) (car args))
+      ;;
+      ;; NOTE: Be sure not to return a process, or else chess-engine
+      ;; will do all the transport work!
+      t)
+
+     ((eq event 'send)
+      ;; Transmit the string given in `(car args)' to the outbound
+      ;; transport from here
+      )
+
+     (t
+      ;; Pass all other events down to chess-network
+      (apply 'chess-network-handler game event args)))))
+
+;; Call `(chess-engine-submit engine STRING)' for text that arrives
+;; from the inbound transport
+
+(provide 'chess-transport)
+
+;;; chess-transport.el ends here
diff --git a/packages/chess/chess-tutorial.el b/packages/chess/chess-tutorial.el
new file mode 100644
index 0000000..0875bca
--- /dev/null
+++ b/packages/chess/chess-tutorial.el
@@ -0,0 +1,45 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; A special kind of display that merely autosaves the game
+;;
+
+(require 'chess-display)
+(require 'chess-game)
+
+(chess-message-catalog 'english
+  '((queen-would-take . "The queen would take your knight!")
+    (congratulations  . "Congratulations!")
+    (knight-1-done    . "Goal: take all the pawns, without letting the queen 
take your knight")
+    (cannot-take-queen . "You cannot take the queen")))
+
+(defun chess-tutorial-knight-1 (game ignore event &rest args)
+  (if (eq event 'move)
+      (let ((position (chess-game-pos game)))
+       (if (null (chess-pos-search position ?p))
+           (chess-message 'congratulations)
+         (cond
+          ((chess-search-position position
+                                  (car (chess-pos-search position ?N)) ?q)
+           (let ((chess-display-handling-event nil))
+             (chess-game-undo game 1))
+           (chess-error 'queen-would-take))
+          ((not (chess-pos-search position ?q))
+           (let ((chess-display-handling-event nil))
+             (chess-game-undo game 1))
+           (chess-error 'cannot-take-queen)))))))
+
+;;;###autoload
+(defun chess-tutorial ()
+  "A simple chess training display."
+  (interactive)
+  (with-current-buffer (chess-create-display t)
+    (chess-module-set-leader nil)
+    (chess-display-set-from-fen "8/3p1p/2p3p/4q/2p3p/3p1p/8/N w - -")
+    (chess-game-add-hook (chess-display-game nil) 'chess-tutorial-knight-1)
+    (setq chess-pos-always-white t)
+    (chess-display-popup nil)
+    (chess-message 'knight-1-done)))
+
+(provide 'chess-tutorial)
+
+;;; chess-tutorial.el ends here
diff --git a/packages/chess/chess-ucb.el b/packages/chess/chess-ucb.el
new file mode 100644
index 0000000..b553428
--- /dev/null
+++ b/packages/chess/chess-ucb.el
@@ -0,0 +1,90 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Engine interface to the Novag Universal Chess Board
+;;
+;; jww (2002-04-25): This code has not been tested yet, since I don't
+;; have access to a UCB.  If anybody wants to donate one, or the money
+;; for one ($300), I would be happy to correct this module.  :)
+;;
+
+(require 'chess-common)
+
+(defgroup chess-ucb nil
+  "Interface to the Novag Universal Chess Board."
+  :group 'chess-engine)
+
+(defcustom chess-ucb-device "/dev/ttyS0"
+  "The serial device used to talk to the Novag UCB."
+  :type 'file
+  :group 'chess-ucb)
+
+(defvar chess-ucb-handling-event nil)
+
+(defvar chess-ucb-regexp-alist
+  (list
+   (cons "^M\\(..\\)\\(..\\)\\(/\\([QRNB]\\)\\)?\r\n"
+        (function
+         (lambda ()
+           (let ((move (concat (match-string 1)
+                               "-"
+                               (match-string 2)))
+                 (promote (match-string 4)))
+             (if promote
+                 (setq move (concat move "=" promote)))
+             (setq move (chess-engine-convert-algebraic move))
+             ;; I don't use the usual engine logic for this, since
+             ;; technically the UCB is just an input interface, not a
+             ;; true engine.
+             (let ((chess-ucb-handling-event t))
+               (chess-game-move (chess-engine-game nil) move))))))))
+
+(defun chess-ucb-handler (game event &rest args)
+  (unless chess-ucb-handling-event
+    (cond
+     ((eq event 'initialize)
+      (when (file-exists-p chess-ucb-device)
+       ;; jww (2002-04-25): cat is not bidirectional, so I need
+       ;; something like "nc" that can talk with characters devices
+       ;; at 9600 8N1.
+       (setq chess-engine-process
+             (start-process "*chess-ucb*" (current-buffer)
+                            (executable-find "cat") chess-ucb-device))
+       t))
+
+     ((memq event 'orient)
+      (chess-engine-send nil "N\r\n")
+      (chess-engine-set-position nil)
+
+      ;; jww (2002-04-25): What happens if we're orienting to a
+      ;; non-standard starting position?  How do we inform the UCB of
+      ;; the new position?  If it doesn't test move legality, I
+      ;; suppose we could just move all the pieces around one by
+      ;; one...
+      (unless (eq chess-starting-position (chess-engine-position nil))
+       nil))
+
+     ((eq event 'undo)
+      (dotimes (i (car args))
+       (chess-engine-send nil "T\r\n"))
+      ;; prevent us from handling the `undo' event which this triggers
+      (let ((chess-engine-handling-event t))
+       (chess-game-undo game (car args))))
+
+     ((eq event 'move)
+      (let ((move (chess-ply-to-algebraic (car args) t)))
+       (cond
+        ((chess-ply-keyword (car args) :en-passant)
+         (setq move (concat move "ep")))
+        ((chess-ply-keyword (car args) :castle)
+         (if (chess-pos-side-to-move (chess-ply-pos (car args)))
+             (setq move "e1-g1")
+           (setq move "e8-g8")))
+        ((chess-ply-keyword (car args) :long-castle)
+         (if (chess-pos-side-to-move (chess-ply-pos (car args)))
+             (setq move "e1-c1")
+           (setq move "e8-c8"))))
+       (chess-engine-send nil (format "M%s\r\n" move)))))))
+
+(provide 'chess-ucb)
+
+;;; chess-ucb.el ends here
diff --git a/packages/chess/chess-uci.el b/packages/chess/chess-uci.el
new file mode 100644
index 0000000..ff2ec51
--- /dev/null
+++ b/packages/chess/chess-uci.el
@@ -0,0 +1,141 @@
+;;; chess-uci.el --- Universal chess interface protocol for emacs-chess
+
+;; Copyright (C) 2014  Free Software Foundation, Inc.
+
+;; Author: Mario Lang <address@hidden>
+;; Keywords: games
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; URL: http://en.wikipedia.org/wiki/Universal_Chess_Interface
+
+;;; Code:
+
+(eval-when-compile (require 'cl-lib))
+(require 'chess-common)
+(require 'chess-polyglot)
+
+(defgroup chess-uci nil
+  "Customisations for Chess engines based on the UCI protocol"
+  :group 'chess)
+
+(defvar chess-uci-long-algebraic-regexp 
"\\([a-h][1-8]\\)\\([a-h][1-8]\\)\\([nbrq]\\)?"
+  "A regular expression matching a UCI log algebraic move.")
+
+(defun chess-uci-long-algebraic-to-ply (position move)
+  "Convert the long algebraic notation MOVE for POSITION to a ply."
+  (cl-assert (vectorp position))
+  (cl-assert (stringp move))
+  (let ((case-fold-search nil))
+    (when (string-match chess-uci-long-algebraic-regexp move)
+      (let ((color (chess-pos-side-to-move position))
+           (from (chess-coord-to-index (match-string 1 move)))
+           (to (chess-coord-to-index (match-string 2 move)))
+           (promotion (match-string 3 move)))
+       (apply #'chess-ply-create position nil
+              (if (and (= from (chess-pos-king-index position color))
+                       (= (chess-index-rank from) (chess-index-rank to))
+                       (> (abs (- (chess-index-file from)
+                                  (chess-index-file to))) 1))
+                  (chess-ply-castling-changes
+                   position
+                   (< (- (chess-index-file to) (chess-index-file from)) 0))
+                (nconc (list from to)
+                       (when promotion
+                         (list :promote (upcase (aref promotion 0)))))))))))
+
+(defsubst chess-uci-convert-long-algebraic (move)
+  "Convert long algebraic MOVE to a ply in reference to the engine position.
+If conversion fails, this function fired an 'illegal event."
+  (or (chess-uci-long-algebraic-to-ply (chess-engine-position nil) move)
+      (chess-engine-command nil 'illegal)))
+
+(defvar chess-uci-regexp-alist
+  (list
+   (cons "^id\\s-+name\\s-+\\(.+\\)$"
+        (function
+         (lambda ()
+           (setq-local chess-engine-opponent-name (match-string 1))
+           'once)))
+   (cons (concat "^bestmove\\s-+\\(" chess-uci-long-algebraic-regexp "\\)")
+        (function
+         (lambda ()
+           (funcall chess-engine-response-handler 'move
+                    (chess-uci-convert-long-algebraic (match-string 1)))))))
+  "Patterns matching responses of a standard UCI chess engine.")
+
+(defun chess-uci-position (game)
+  "Convert the current GAME position to a UCI position command string."
+  (concat "position fen " (chess-pos-to-fen (chess-game-pos game 0) t)
+         " moves " (mapconcat (lambda (ply)
+                                (let ((source (chess-ply-source ply))
+                                      (target (chess-ply-target ply)))
+                                  (if (and source target)
+                                      (concat (chess-index-to-coord source)
+                                              (chess-index-to-coord target)
+                                              (if (chess-ply-keyword ply 
:promote)
+                                                  (string (downcase 
(chess-ply-keyword ply :promote)))
+                                                ""))
+                                    "")))
+                              (chess-game-plies game) " ")
+         "\n"))
+
+(defun chess-uci-handler (game event &rest args)
+  "Default handler for UCI based engines."
+  (unless chess-engine-handling-event
+    (cond
+     ((eq event 'initialize)
+      (when (and chess-polyglot-book-file
+                (file-exists-p chess-polyglot-book-file))
+       (unless chess-polyglot-book
+         (setq chess-polyglot-book (chess-polyglot-book-open
+                               chess-polyglot-book-file))))
+      (apply #'chess-common-handler game event args))
+
+     ((eq event 'new)
+      (chess-engine-send nil "ucinewgame\n")
+      (chess-engine-set-position nil))
+
+     ((eq event 'resign)
+      (chess-game-set-data game 'active nil))
+
+     ((eq event 'move)
+      (when (= 1 (chess-game-index game))
+       (chess-game-set-tag game "White" chess-full-name)
+       (chess-game-set-tag game "Black" chess-engine-opponent-name))
+
+      (if (chess-game-over-p game)
+         (chess-game-set-data game 'active nil)))
+
+     ((eq event 'post-move)
+      (let ((book-ply (and chess-polyglot-book (bufferp chess-polyglot-book)
+                          (buffer-live-p chess-polyglot-book)
+                          (chess-polyglot-book-ply
+                           chess-polyglot-book
+                           (chess-game-pos game)))))
+       (if book-ply
+           (let ((chess-display-handling-event nil))
+             (funcall chess-engine-response-handler 'move book-ply))
+         (chess-engine-send nil (concat (chess-uci-position game) "go\n")))))
+
+     (t
+      (apply 'chess-common-handler game event args)))))
+
+(provide 'chess-uci)
+
+;;; chess-uci.el ends here
diff --git a/packages/chess/chess-var.el b/packages/chess/chess-var.el
new file mode 100644
index 0000000..4b1b431
--- /dev/null
+++ b/packages/chess/chess-var.el
@@ -0,0 +1,89 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Manipulate variations (which are really just lists of plies)
+;;
+
+;;; Commentary:
+
+;; A chess variations is a simple list of plies.  This module provides
+;; an abstraction layer for applications.
+
+(require 'chess-ply)
+(eval-when-compile (require 'cl))
+
+(defsubst chess-var-plies (var)
+  "Return the plies of VAR."
+  (assert var)
+  var)
+
+(defsubst chess-var-pos (var &optional index)
+  "Return the position related to VAR's INDEX ply."
+  (assert var)
+  (chess-ply-pos (chess-var-ply var index)))
+
+(defsubst chess-var-index (var)
+  "Return the VAR's current position index."
+  (assert var)
+  (1- (length (chess-var-plies var))))
+
+(defsubst chess-var-seq (var)
+  "Return the current VAR sequence."
+  (assert var)
+  (1+ (/ (chess-var-index var) 2)))
+
+(defsubst chess-var-side-to-move (var &optional index)
+  "Return the color whose move it is in VAR at INDEX (or at the last position
+of the variation if INDEX is nil)."
+  (assert var)
+  (chess-pos-side-to-move (chess-var-pos var index)))
+
+(defun chess-var-ply (var &optional index)
+  "Return VAR's INDEXth ply."
+  (assert var)
+  (if index
+      (nth index (chess-var-plies var))
+    (car (last (chess-var-plies var)))))
+
+(defun chess-var-add-ply (var ply)
+  "Return the position related to VAR's INDEX position."
+  (assert var)
+  (assert (listp ply))
+  (let ((plies (chess-var-plies var)))
+    (assert plies)
+    (nconc plies (list ply))))
+
+(defsubst chess-var-create (&optional position)
+  "Create a new chess variation object.
+Optionally use the given starting POSITION."
+  (list (chess-ply-create* (or position chess-starting-position))))
+
+(defun chess-var-move (var ply)
+  "Make a move in the current VAR by applying the changes of PLY.
+This creates a new position and adds it to the main variation.
+The 'changes' of the last ply reflect whether the var is currently in
+progress (nil), if it is drawn, resigned, mate, etc."
+  (assert var)
+  (assert (listp ply))
+  (let ((current-ply (chess-var-ply var))
+       (changes (chess-ply-changes ply))
+       (position (chess-ply-pos ply)))
+    (if (chess-ply-final-p current-ply)
+       (chess-error 'add-to-completed))
+    (assert (eq position (chess-ply-pos current-ply)))
+    (chess-ply-set-changes current-ply changes)
+    (chess-var-add-ply var (chess-ply-create*
+                           (chess-ply-next-pos current-ply)))))
+
+(defun chess-var-to-algebraic (var &optional long)
+  "Reveal the plies of VAR by converting them to algebraic
+notation."
+  (mapconcat (lambda (ply)
+              (chess-ply-to-algebraic ply long))
+            (if (chess-ply-final-p (chess-var-ply var))
+                (chess-var-plies var)
+              (reverse (cdr (reverse (chess-var-plies var)))))
+            " "))
+
+(provide 'chess-var)
+
+;;; chess-var.el ends here
diff --git a/packages/chess/chess.el b/packages/chess/chess.el
new file mode 100644
index 0000000..95740cb
--- /dev/null
+++ b/packages/chess/chess.el
@@ -0,0 +1,231 @@
+;;; chess.el --- Play chess in Emacs
+
+;; Copyright (C) 2001 John Wiegley <address@hidden>
+
+;; Emacs Lisp Archive Entry
+;; Filename: chess.el
+;; Version: -1
+;; Keywords: games
+;; Author: John Wiegley <address@hidden>
+;; Maintainer: Mario Lang <address@hidden>
+;; Description: Play chess in Emacs
+;; URL: https://github.com/jwiegley/emacs-chess/
+;; Compatibility: Emacs24
+
+;; This file is not part of GNU Emacs.
+
+;; This is free software; you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation; either version 2, or (at your option) any later
+;; version.
+;;
+;; This is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+;; for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+;; MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Welcome to Emacs Chess, a chess playing module for GNU Emacs.
+;;
+;; Type `M-x chess', and play chess against the default engine module.
+;; Type `C-u M-x chess' to select a specific engine.
+;;
+;; You can play against various external chess computer programs.
+;; There is also an Emacs based chess computer module which does not require
+;; any external programs.  However, the internal AI is not very strong.
+;;
+;; To play on one of the internet chess servers, type `M-x chess-ics'.
+;;
+;; Once this is working, the next thing to do is to customize
+;; `chess-default-modules'.  This is a list of functionality modules used
+;; by chess.el to provide its functionality.  You can enable or
+;; disable modules so that Emacs Chess better suites your tastes.
+;; Those modules in turn often have configuration variables, and
+;; appropriate documentation at the top of the related file.
+;;
+;; Emacs Chess is designed in a highly modular fashion, using loosely
+;; coupled modules that respond to events on the chess board.  This
+;; makes it very easy for programmers to add their own types of
+;; displays, opponents, analysis programs, etc.  See the documentation
+;; in chess-module.el to learn more.
+;;
+;; Most people will probably also be interested in reading the top
+;; of chess-display.el and chess-pgn.el, which describe the user
+;; interface commands available in each of those buffer types.
+
+;;; Code:
+
+(require 'chess-game)
+(require 'chess-display)
+(require 'chess-engine)
+
+(defgroup chess nil
+  "An Emacs chess playing program."
+  :group 'games)
+
+(defconst chess-version "2.0b6"
+  "The version of the Emacs chess program.")
+
+(defcustom chess-default-display
+  '(chess-images chess-ics1 chess-plain)
+  "Default display to be used when starting a chess session.
+A list indicates a series of alternatives if the first display is
+not available."
+  :type '(choice symbol (repeat symbol))
+  :group 'chess)
+
+(defcustom chess-default-modules
+  '((chess-sound chess-announce)
+    chess-autosave
+    chess-clock
+    ;;chess-kibitz   jww (2002-04-30): not fully supported yet
+    ;;chess-chat
+    )
+  "Modules to be used when starting a chess session.
+A sublist indicates a series of alternatives, if the first is not
+available.
+These can do just about anything."
+  :type '(repeat (choice symbol (repeat symbol)))
+  :group 'chess)
+
+(defcustom chess-default-engine
+  '(chess-crafty
+    chess-stockfish chess-glaurung chess-fruit
+    chess-gnuchess chess-phalanx
+    chess-ai)
+  "Default engine to be used when starting a chess session.
+A list indicates a series of alternatives if the first engine is not
+available."
+  :type '(choice symbol (repeat symbol))
+  :group 'chess)
+
+(defcustom chess-full-name (user-full-name)
+  "The full name to use when playing chess."
+  :type 'string
+  :group 'chess)
+
+(and (fboundp 'font-lock-add-keywords)
+     (font-lock-add-keywords
+      'emacs-lisp-mode
+      '(("(\\(chess-error\\)\\>"              1 font-lock-warning-face)
+       ("(\\(chess-with-current-buffer\\)\\>" 1 font-lock-keyword-face))))
+
+(defun chess--create-display (module game my-color disable-popup)
+  (let ((display (chess-display-create game module my-color)))
+    (when display
+      (chess-game-set-data game 'my-color my-color)
+      (if disable-popup
+         (chess-display-disable-popup display))
+      display)))
+
+(defun chess--create-engine (module game response-handler ctor-args)
+  (let ((engine (apply 'chess-engine-create module game
+                      response-handler ctor-args)))
+    (when engine
+      ;; for the sake of engines which are ready to play now, and
+      ;; which don't need connect/accept negotiation (most
+      ;; computerized engines fall into this category), we need to
+      ;; let them know we're ready to begin
+      (chess-engine-command engine 'ready)
+      engine)))
+
+(defun chess-create-modules (module-list create-func &rest args)
+  "Create modules from MODULE-LIST with CREATE-FUNC and ARGS.
+If an element of MODULE-LIST is a sublist, treat it as alternatives."
+  (let (objects)
+    (dolist (module module-list)
+      (let (object)
+       (if (symbolp module)
+           (if (setq object (apply create-func module args))
+               (push object objects))
+         ;; this module is actually a list, which means keep trying
+         ;; until we find one that works
+         (while module
+           (if (setq object (condition-case nil
+                                (apply create-func (car module) args)
+                              (error nil)))
+               (progn
+                 (push object objects)
+                 (setq module nil))
+             (setq module (cdr module)))))))
+    (nreverse objects)))
+
+(chess-message-catalog 'english
+  '((no-engines-found
+     . "Could not find any chess engines to play against; install gnuchess!")))
+
+;;;###autoload
+(defun chess (&optional engine disable-popup engine-response-handler
+                       &rest engine-ctor-args)
+  "Start a game of chess, playing against ENGINE (a module name).
+With prefix argument, prompt for the engine to play against.
+Otherwise use `chess-default-engine' to determine the engine."
+  (interactive
+   (list
+    (if current-prefix-arg
+       (intern
+        (concat "chess-"
+                (let ((str (read-string "Engine to play against: ")))
+                  (if (> (length str) 0)
+                      str
+                    "none"))))
+      chess-default-engine)))
+
+  (let ((game (chess-game-create))
+       (my-color t)                    ; we start out as white always
+       objects)
+
+    ;; all these odd calls are so that `objects' ends up looking like:
+    ;;   (ENGINE FIRST-DISPLAY...)
+
+    (setq objects (chess-create-modules (list chess-default-display)
+                                       'chess--create-display
+                                       game my-color disable-popup))
+    (when (car objects)
+      (mapc 'chess-display-update objects)
+      (chess-module-set-leader (car objects))
+      (unless disable-popup
+       (chess-display-popup (car objects))))
+
+    (nconc objects (chess-create-modules chess-default-modules
+                                        'chess-module-create game))
+
+    (push (unless (eq engine 'none)
+           (car ;(condition-case nil
+                    (chess-create-modules (list (or engine 
chess-default-engine))
+                                          'chess--create-engine game
+                                          engine-response-handler
+                                          engine-ctor-args)
+                  ;  (error nil))
+           ))
+         objects)
+
+    (unless (car objects)
+      (chess-message 'no-engines-found))
+
+    objects))
+
+;;;###autoload
+(defalias 'chess-session 'chess)
+
+;;;###autoload
+(defun chess-create-display (perspective &optional modules-too)
+  "Create a display, letting the user's customization decide the style.
+If MODULES-TOO is non-nil, also create and associate the modules
+listed in `chess-default-modules'."
+  (if modules-too
+      (let ((display (cadr (chess-session 'none))))
+       (chess-display-set-perspective* display perspective))
+    (car (chess-create-modules (list chess-default-display)
+                              'chess--create-display
+                              (chess-game-create) perspective nil))))
+
+(provide 'chess)
+
+;;; chess.el ends here
diff --git a/packages/chess/chess.info b/packages/chess/chess.info
new file mode 100644
index 0000000..aa0f689
--- /dev/null
+++ b/packages/chess/chess.info
@@ -0,0 +1,1542 @@
+This is chess.info, produced by makeinfo version 5.2 from chess.texi.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* Chess: (chess).     Chess.el is an Emacs chess client.
+END-INFO-DIR-ENTRY
+
+Copyright (C) 2001, 2002 John Wiegley.
+
+   Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation.
+
+
+File: chess.info,  Node: Top,  Next: The chess.el library,  Prev: (dir),  Up: 
(dir)
+
+Emacs Chess: chess.el
+*********************
+
+Chess.el is an Emacs chess client and library, designed to be used for
+writing chess-related programs, or for playing games of chess against
+various chess engines, including Internet servers.  The library can be
+used for analyzing variations, browsing historical games, or a multitude
+of other purposes.
+
+   The purpose of this manual is to help you understand how Chess.el is
+structured for use as a library, and also how to use it as a client.
+
+* Menu:
+
+* The chess.el library::        
+* Modules::                     
+* Chessboard displays::         
+* Engines::                     
+* Internet Chess Servers::      
+* Concept Index::               
+* Function and Variable Index::  
+* Key Index::                   
+
+
+File: chess.info,  Node: The chess.el library,  Next: Modules,  Prev: Top,  
Up: Top
+
+1 The chess.el library
+**********************
+
+* Menu:
+
+* Positions::                   
+* Plies::                       
+* Variations::                  
+* Games::                       
+* Collections::                 
+
+
+File: chess.info,  Node: Positions,  Next: Plies,  Prev: The chess.el library, 
 Up: The chess.el library
+
+1.1 Positions
+=============
+
+A chess "position" is a given layout of pieces on a chess board, also
+reflecting which side is next to move, and what privileges are currently
+available to each side (castling short or long, en passant capture,
+etc).
+
+   A position may be represented in ASCII using FEN (or EPD) notation,
+or graphically by displaying a chess board.  It is rather inconvenient
+to render them verbally.
+
+   The position can be represented on a remote terminal using X windows,
+or by transmitting the FEN string via a network connection, or
+clipboard, to another chess board rendering tool.  It may of course also
+be represented physically, by setting up the pieces to match the FEN
+notation.
+
+   Chess puzzles are most often provided as a set of positions.
+
+* Menu:
+
+* Creating positions::          
+* Position coordinates::        
+* Position details::            
+* Annotations::                 
+* FEN notation::                
+* EPD notation::                
+
+
+File: chess.info,  Node: Creating positions,  Next: Position coordinates,  
Prev: Positions,  Up: Positions
+
+1.1.1 Creating positions
+------------------------
+
+ -- Function: chess-pos-create &optional blank
+     Create a new chess position, set at the starting position.  If
+     BLANK is non-nil, all of the squares will be empty.  The current
+     side-to-move is always white.
+
+ -- Function: chess-pos-copy position
+     Copy the given chess POSITION.  If there are annotations or EPD
+     opcodes set, these lists are copied as well, so that the two
+     positions do not share the same lists.
+
+ -- Variable: chess-starting-position
+     Starting position of a chess game.
+
+ -- Function: chess-fischer-random-position
+     Generate a Fischer Random style position.
+
+
+File: chess.info,  Node: Position coordinates,  Next: Position details,  Prev: 
Creating positions,  Up: Positions
+
+1.1.2 Position coordinates
+--------------------------
+
+First of all, a coordinate system of octal indices is used, where ?\044
+signifies rank 4 file 4 (i.e., "e4").  Rank is numbered 0 to 7, top to
+bottom, and file is 0 to 7, left to right.
+
+ -- Function: chess-index-rank index
+     Return the rank component of the given INDEX.
+
+ -- Function: chess-index-file index
+     Return the file component of the given INDEX.
+
+ -- Function: chess-rf-to-index rank file
+     Convert RANK and FILE coordinates into an octal index.
+
+   For those who wish to use ASCII coordinates, such as "e4", there are
+two conversion functions:
+
+ -- Function: chess-coord-to-index coord
+     Convert a COORD string into an index value.
+
+ -- Function: chess-index-to-coord index
+     Convert the chess position INDEX into a coord string.
+
+   There is also one helper function for iterative changes of an index:
+
+ -- Function: chess-incr-index index rank-move file-move
+     Create a new INDEX from an old one, by adding RANK-MOVE and
+     FILE-MOVE.
+
+
+File: chess.info,  Node: Position details,  Next: Annotations,  Prev: Position 
coordinates,  Up: Positions
+
+1.1.3 Position details
+----------------------
+
+With an octal index value, you can look up what's on a particular
+square, or set that square's value:
+
+ -- Function: chess-pos-piece position index
+     Return the piece on POSITION at INDEX.
+
+ -- Function: chess-pos-piece-p position index piece-or-color
+     Return non-nil if at POSITION/INDEX there is the given
+     PIECE-OR-COLOR.  If PIECE-OR-COLOR is t for white or nil for black,
+     any piece of that color will do.
+
+ -- Function: chess-pos-set-piece position index piece
+     Set the piece on POSITION at INDEX to PIECE.  PIECE must be one of
+     K Q N B R or P. Use lowercase to set black pieces.
+
+ -- Function: chess-pos-search position piece-or-color
+     Look on POSITION anywhere for PIECE-OR-COLOR, returning all
+     coordinates.  If PIECE-OR-COLOR is t for white or nil for black,
+     any piece of that color will do.
+
+ -- Function: chess-search-position position target piece &optional
+          check-only no-castling
+     Look on POSITION from TARGET for a PIECE that can move there.  This
+     routine looks along legal paths of movement for PIECE.  It differs
+     from 'chess-pos-search', which is a more basic function that
+     doesn't take piece movement into account.
+
+     If PIECE is t or nil, legal piece movements for any piece of that
+     color will be considered (t for white, nil for black).  Otherwise,
+     the case of the PIECE determines color.
+
+     The return value is a list of candidates, which means a list of
+     indices which indicate where a piece may have moved from.
+
+     If CHECK-ONLY is non-nil and PIECE is either t or nil, only
+     consider pieces which can give check (not the opponents king).  If
+     NO-CASTLING is non-nil, do not consider castling moves.
+
+ -- Function: chess-pos-can-castle position side
+     Return whether the king on POSITION can castle on SIDE.  SIDE must
+     be either ?K for the kingside, or ?Q for the queenside (use
+     lowercase to query if black can castle).
+
+ -- Function: chess-pos-set-can-castle position side value
+     Set whether the king can castle on the given POSITION on SIDE.
+
+     See 'chess-pos-can-castle'.
+
+     It is only necessary to call this function if setting up a position
+     manually.  Note that all newly created positions have full castling
+     priveleges set, unless the position is created blank, in which case
+     castling priveleges are unset.  See 'chess-pos-copy'.
+
+ -- Function: chess-pos-en-passant position
+     Return the index of any pawn on POSITION that can be captured en
+     passant.  Returns nil if en passant is unavailable.
+
+ -- Function: chess-pos-set-en-passant position index
+     Set the index of any pawn on POSITION that can be captured en
+     passant.
+
+ -- Function: chess-pos-status position
+     Return whether the side to move in the POSITION is in a special
+     state.  nil is returned if not, otherwise one of the symbols:
+     'check', 'checkmate', 'stalemate'.
+
+ -- Function: chess-pos-set-status position value
+     Set whether the side to move in POSITION is in a special state.
+     VALUE should either be nil, to indicate that the POSITION is
+     normal, or one of the symbols: 'check', 'checkmate', 'stalemate'.
+
+ -- Function: chess-pos-side-to-move position
+     Return the color whose move it is in POSITION.
+
+ -- Function: chess-pos-set-side-to-move position color
+     Set the color whose move it is in POSITION.
+
+ -- Function: chess-pos-passed-pawns position color &optional
+          pawn-indices
+     If COLOR has Passed Pawns in POSITION, return a list of their
+     indices.  Optionally, if INDICES is non-nil those indices are
+     considered as candidates.
+
+     A Pawn whose advance to the eighth rank is not blocked by an
+     opposing Pawn in the same file and who does not have to pass one on
+     an adjoining file is called a passed Pawn.
+
+ -- Variable: chess-pos-always-white
+     When set, it is assumed that white is always on move.  This is
+     really only useful when setting up training positions.  This
+     variable automatically becomes buffer-local when changed.
+
+ -- Function: chess-pos-move position &rest changes
+     Move a piece on the POSITION directly, using the indices in
+     CHANGES.  This function does not check any rules, it only makes
+     sure you are not trying to move a blank square.
+
+
+File: chess.info,  Node: Annotations,  Next: FEN notation,  Prev: Position 
details,  Up: Positions
+
+1.1.4 Annotations
+-----------------
+
+ -- Function: chess-pos-annotations position
+     Return the list of annotations for this position.
+
+ -- Function: chess-pos-add-annotation position annotation
+     Add an annotation for this position.
+
+
+File: chess.info,  Node: FEN notation,  Next: EPD notation,  Prev: 
Annotations,  Up: Positions
+
+1.1.5 FEN notation
+------------------
+
+FEN notation encodes a chess position using a simple string.  The format
+is:
+
+   POSITION SIDE CASTLING EN-PASSANT
+
+   The POSITION gives all eight ranks, by specifying a letter for each
+piece on the position, and a number for any intervening spaces.
+Trailing spaces need not be counted.  Uppercase letters signify white,
+and lowercase black.  For example, if your position only had a black
+king on d8, your POSITION string would be:
+
+   3k////////
+
+   For the three spaces (a, b and c file), the black king, and then all
+the remaining ranks (which are all empty, so their spaces can be
+ignored).
+
+   The SIDE is w or b, to indicate whose move it is.
+
+   CASTLING can contain K, Q, k or q, to signify whether the white or
+black king can still castle on the king or queen side.  EN-PASSANT
+signifies the target sqaure of an en passant capture, such as "e3" or
+"a6".
+
+   The starting chess position always looks like this:
+
+   rnbqkbnr/pppppppp/////PPPPPPPP/RNBQKBNR/ w KQkq -
+
+   And in "full" mode (where all spaces are accounted for):
+
+   rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -
+
+ -- Function: chess-fen-to-pos fen
+     Convert a FEN-like notation string to a chess position.
+
+ -- Function: chess-pos-to-fen position &optional full
+     Convert a chess POSITION to FEN-like notation.  If FULL is non-nil,
+     represent trailing spaces as well.
+
+
+File: chess.info,  Node: EPD notation,  Prev: FEN notation,  Up: Positions
+
+1.1.6 EPD notation
+------------------
+
+EPD is "Extended Position Description"; it is a standard for describing
+chess positions along with an extended set of structured attribute
+values using the ASCII character set.  It is intended for data and
+command interchange among chessplaying programs.  It is also intended
+for the representation of portable opening library repositories.
+
+   A single EPD uses one text line of variable length composed of four
+data field followed by zero or more operations.  The four fields of the
+EPD specification are the same as the first four fields of the FEN
+specification.
+
+   A text file composed exclusively of EPD data records should have a
+file name with the suffix ".epd".
+
+ -- Function: chess-epd-to-pos &optional string
+     Convert extended position description to a chess position.  If
+     STRING is not specified, look for an EPD string in the current
+     buffer, and advance point after the correctly parsed position.
+
+ -- Function: chess-pos-to-epd position
+     Convert a chess POSITION to a string representation in extended
+     position description format.
+
+ -- Function: chess-epd-read-file file
+     Return a list of positions contained in FILE.
+
+* Menu:
+
+* Operations::                  
+* Opcode "acd" analysis count depth::  
+* Opcode "acn" analysis count nodes::  
+* Opcode "acs" analysis count seconds::  
+* Opcode "am" avoid move(s)::   
+* Opcode "bm" best move(s)::    
+
+
+File: chess.info,  Node: Operations,  Next: Opcode "acd" analysis count depth, 
 Prev: EPD notation,  Up: EPD notation
+
+1.1.6.1 Operations
+..................
+
+An EPD operation is composed of an opcode followed by zero or more
+operands and is concluded by a semicolon.
+
+   Multiple operations are separated by a single space character.  If
+there is at least one operation present in an EPD line, it is separated
+from the last (fourth) data field by a single space character.
+
+   Some opcodes that allow for more than one operand may have special
+ordering requirements for the operands.  For example, the "pv"
+(predicted variation) opcode requires its operands (moves) to appear in
+the order in which they would be played.  All other opcodes that allow
+for more than one operand should have operands appearing in ASCII order.
+An example of the latter set is the "bm" (best move[s]) opcode; its
+operands are moves that are all immediately playable from the current
+position.
+
+
+File: chess.info,  Node: Opcode "acd" analysis count depth,  Next: Opcode 
"acn" analysis count nodes,  Prev: Operations,  Up: EPD notation
+
+1.1.6.2 Opcode "acd" analysis count depth
+.........................................
+
+The opcode "acd" takes a single non-negative integer operand.  It is
+used to represent the ply depth examined in an analysis.
+
+
+File: chess.info,  Node: Opcode "acn" analysis count nodes,  Next: Opcode 
"acs" analysis count seconds,  Prev: Opcode "acd" analysis count depth,  Up: 
EPD notation
+
+1.1.6.3 Opcode "acn" analysis count nodes
+.........................................
+
+The opcode "acn" takes a single non-negative integer operand.  It is
+used to represent the number of nodes examined in an analysis.  Note
+that the value may be quite large for some extended searches and so use
+of (at least) a long (four byte) representation is suggested.
+
+
+File: chess.info,  Node: Opcode "acs" analysis count seconds,  Next: Opcode 
"am" avoid move(s),  Prev: Opcode "acn" analysis count nodes,  Up: EPD notation
+
+1.1.6.4 Opcode "acs" analysis count seconds
+...........................................
+
+The opcode "acs" takes a single non-negative integer operand.  It is
+used to represent the number of seconds used for an analysis.  Note that
+the value may be quite large for some extended searches and so use of
+(at least) a long (four byte) representation is suggested.
+
+
+File: chess.info,  Node: Opcode "am" avoid move(s),  Next: Opcode "bm" best 
move(s),  Prev: Opcode "acs" analysis count seconds,  Up: EPD notation
+
+1.1.6.5 Opcode "am" avoid move(s)
+.................................
+
+The opcode "am" indicates a set of zero or more moves, all immediately
+playable from the current position, that are to be avoided in the
+opinion of the EPD writer.  Each operand is a SAN move; they appear in
+ASCII order.
+
+
+File: chess.info,  Node: Opcode "bm" best move(s),  Prev: Opcode "am" avoid 
move(s),  Up: EPD notation
+
+1.1.6.6 Opcode "bm" best move(s)
+................................
+
+The opcode "bm" indicates a set of zero or more moves, all immediately
+playable from the current position, that are judged to the best
+available by the EPD writer.  Each operand is a SAN move; they appear in
+ASCII order.
+
+
+File: chess.info,  Node: Plies,  Next: Variations,  Prev: Positions,  Up: The 
chess.el library
+
+1.2 Plies
+=========
+
+A "ply" is the differential between two positions.  Or, it is the
+coordinate transformations applied to one position in order to arrive at
+the following position.  It is also informally called "a move".
+
+   A ply may be represented in ASCII by printing the FEN string of the
+base position, and then printing the positional transformation in
+algebraic notation.  Since the starting position is usually known, the
+FEN string is optional.  A ply may be represented graphically by moving
+the chess piece(s) involved.  It may be rendered verbally by voicing
+which piece is to move, where it will move to, and what will happen a
+result of the move (piece capture, check, etc).
+
+   Plies may be sent over network connections, postal mail, e-mail,
+etc., so long as the current position is maintained at both sides.
+Transmitting the base position's FEN string along with the ply offers a
+form of confirmation during the course of a game.
+
+* Menu:
+
+* Creating plies::              
+* Ply details::                 
+* The "next" position::         
+* Algebraic notation::          
+
+
+File: chess.info,  Node: Creating plies,  Next: Ply details,  Prev: Plies,  
Up: Plies
+
+1.2.1 Creating plies
+--------------------
+
+ -- Function: chess-ply-create position &optional valid-p &rest changes
+     Create a ply from the given POSITION by applying the supplied
+     CHANGES.  This function will guarantee the resulting ply is legal,
+     and will also annotate the ply with :check or other modifiers as
+     necessary.  It will also extend castling, and will prompt for a
+     promotion piece.
+
+     Note: Do not pass in the rook move if CHANGES represents a castling
+     maneuver.
+
+ -- Function: chess-legal-plies position &rest keywords
+     Return a list of all legal plies in POSITION.  KEYWORDS allowed
+     are:
+
+     :any return t if any piece can move at all :color <t or nil> :piece
+     <piece character> :file <number 0 to 7> [can only be used if :piece
+     is present] :index <coordinate index> :target <specific target
+     index> :candidates <list of inddices>
+
+     These will constrain the plies generated to those matching the
+     above criteria.
+
+     NOTE: All of the returned plies will reference the same copy of the
+     position object passed in.
+
+
+File: chess.info,  Node: Ply details,  Next: The "next" position,  Prev: 
Creating plies,  Up: Plies
+
+1.2.2 Ply details
+-----------------
+
+ -- Function: chess-ply-pos ply
+     Returns the base position associated with PLY.
+
+ -- Function: chess-ply-set-pos ply position
+     Set the base position of PLY.
+
+ -- Function: chess-ply-source ply
+     Returns the source square index value of PLY.
+
+ -- Function: chess-ply-target ply
+     Returns the target square index value of PLY.
+
+
+File: chess.info,  Node: The "next" position,  Next: Algebraic notation,  
Prev: Ply details,  Up: Plies
+
+1.2.3 The "next" position
+-------------------------
+
+ -- Function: chess-ply-final-p ply
+     Return non-nil if this is the last ply of a game/variation.
+
+
+File: chess.info,  Node: Algebraic notation,  Prev: The "next" position,  Up: 
Plies
+
+1.2.4 Algebraic notation
+------------------------
+
+A thing to deal with in chess is algebraic move notation, such as Nxf3+.
+(I leave description of this notation to better manuals than this).
+This notation is a shorthand way of representing where a piece is moving
+from and to, by specifying the piece is involved, where it's going, and
+whether or not a capture or check is involved.
+
+   You can convert from algebraic notation to a ply (one pair in most
+cases, but two for a castle) using the following function (NOTE:
+POSITION determines which side is on move (by calling
+'chess-pos-side-to-move')):
+
+ -- Function: chess-algebraic-to-ply position move &optional trust
+     Convert the algebraic notation MOVE for POSITION to a ply.
+
+   The function also checks if a move is legal, and will raise an error
+if not.
+
+   To convert from a ply to algebraic notation, use:
+
+ -- Function: chess-ply-to-algebraic ply &optional long
+     Convert the given PLY to algebraic notation.  If LONG is non-nil,
+     render the move into long notation.
+
+   Lastly, there is a regexp for quickly checking if a string is in
+algebraic notation or not, or searching out algebraic strings in a
+buffer:
+
+ -- Variable: chess-algebraic-regexp
+     A regular expression that matches all possible algebraic moves.
+     This regexp handles both long and short form.
+
+
+File: chess.info,  Node: Variations,  Next: Games,  Prev: Plies,  Up: The 
chess.el library
+
+1.3 Variations
+==============
+
+A "variation" is a sequence of plies that occur after some starting
+position.  If the starting position represents the initial setup of a
+chess board, and if the final ply results in completion of the game, it
+is called the "main variation".  Otherwise, variations typically
+represented interesting tangents during a game--but not actually
+played--as envisioned by the player, an annotator, or someone studying
+the game.
+
+   Variations may be represented in ASCII by stating the FEN string for
+starting position, followed by the list of plies that follow that
+position.  They are difficult to represent graphically, except for
+showing each position in turn with a slight pause between--or by
+allowing the user to navigate each of the subsequent positions in turn.
+They may be represented verbally by announcing each of the plies in
+turn, as mentioned above.
+
+* Menu:
+
+* Creating variations::         
+* Variation positions::         
+* Varation plies::              
+* Making a move in a variation::  
+
+
+File: chess.info,  Node: Creating variations,  Next: Variation positions,  
Prev: Variations,  Up: Variations
+
+1.3.1 Creating variations
+-------------------------
+
+ -- Function: chess-var-create &optional position
+     Create a new chess variation object.  Optionally use the given
+     starting POSITION.
+
+
+File: chess.info,  Node: Variation positions,  Next: Varation plies,  Prev: 
Creating variations,  Up: Variations
+
+1.3.2 Variation positions
+-------------------------
+
+ -- Function: chess-var-pos var &optional index
+     Return the position related to VAR's INDEX ply.
+
+ -- Function: chess-var-index var
+     Return the VAR's current position index.
+
+ -- Function: chess-var-seq var
+     Return the current VAR sequence.
+
+ -- Function: chess-var-side-to-move var &optional index
+     Return the color whose move it is in VAR at INDEX (or at the last
+     position of the variation if INDEX is nil).
+
+
+File: chess.info,  Node: Varation plies,  Next: Making a move in a variation,  
Prev: Variation positions,  Up: Variations
+
+1.3.3 Varation plies
+--------------------
+
+ -- Function: chess-var-ply var &optional index
+     Return VAR's INDEXth ply.
+
+ -- Function: chess-var-plies var
+     Return the plies of VAR.
+
+ -- Function: chess-var-to-algebraic var &optional long
+     Reveal the plies of VAR by converting them to algebraic notation.
+
+
+File: chess.info,  Node: Making a move in a variation,  Prev: Varation plies,  
Up: Variations
+
+1.3.4 Making a move in a variation
+----------------------------------
+
+ -- Function: chess-var-move var ply
+     Make a move in the current VAR by applying the changes of PLY.
+     This creates a new position and adds it to the main variation.  The
+     'changes' of the last ply reflect whether the var is currently in
+     progress (nil), if it is drawn, resigned, mate, etc.
+
+ -- Function: chess-var-add-ply var ply
+     Return the position related to VAR's INDEX position.
+
+
+File: chess.info,  Node: Games,  Next: Collections,  Prev: Variations,  Up: 
The chess.el library
+
+1.4 Games
+=========
+
+A "game" includes its main variation, incidental information about the
+game (who played it, where, when, who won, etc), and any sub-variations
+of interest to those studying the game afterwards.
+
+   Where TAGS is an alist that associates arbitrary English tag names to
+their values.
+
+   A game may be represented in ASCII using standard PGN notation.
+Representing them graphically or verbally is similar to what is done for
+variations.
+
+ -- Function: chess-game-add-hook game function &optional data prepend
+     Add to GAME an event hook FUNCTION.
+
+ -- Function: chess-game-add-ply game ply
+     Return the position related to GAME's INDEX position.
+
+ -- Function: chess-game-hooks game
+     Return the tags alist associated with GAME.
+
+ -- Function: chess-game-plies game
+     Return the main variation of GAME as a list of plies.
+
+ -- Function: chess-game-remove-hook game function &optional data
+     Remove from GAME all event hooks that match FUNCTION.  If DATA is
+     specified, only remove those hooks whose associated data matches.
+
+ -- Function: chess-game-run-hooks game &rest args
+     Run the event hooks of GAME and pass ARGS.
+
+ -- Function: chess-game-set-hooks game hooks
+     Return the tags alist associated with GAME.
+
+ -- Function: chess-game-set-plies game plies
+     Set the list of plies which represents the main variation of GAME.
+
+* Menu:
+
+* Creating games::              
+* Game tags::                   
+* Game positions::              
+* Game plies::                  
+* Making a move::               
+* PGN notation::                
+
+
+File: chess.info,  Node: Creating games,  Next: Game tags,  Prev: Games,  Up: 
Games
+
+1.4.1 Creating games
+--------------------
+
+ -- Function: chess-game-create &optional position tags
+     Create a new chess game object.  Optionally use the given starting
+     POSITION (see also 'chess-game-set-start-position').  TAGS is the
+     starting set of game tags (which can always be changed later using
+     the various tag-related methods).
+
+
+File: chess.info,  Node: Game tags,  Next: Game positions,  Prev: Creating 
games,  Up: Games
+
+1.4.2 Game tags
+---------------
+
+ -- Function: chess-game-tags game
+     Return the tags alist associated with GAME.
+
+ -- Function: chess-game-set-tags game tags
+     Set the tags alist associated with GAME.  After the TAGS alist was
+     set the 'set-tags event is triggered.
+
+ -- Function: chess-game-tag game tag
+     Return the value for TAG in GAME.
+
+ -- Function: chess-game-set-tag game tag value
+     Set a TAG for GAME to VALUE.
+
+ -- Function: chess-game-del-tag game tag
+     Delete a TAG from GAME.
+
+
+File: chess.info,  Node: Game positions,  Next: Game plies,  Prev: Game tags,  
Up: Games
+
+1.4.3 Game positions
+--------------------
+
+ -- Function: chess-game-pos game &optional index
+     Return the current position of GAME or a position of a given INDEX.
+
+ -- Function: chess-game-index game
+     Return the GAME's current position index.
+
+ -- Function: chess-game-seq game
+     Return the current GAME sequence.
+
+ -- Function: chess-game-side-to-move game &optional index
+     Return the color whose move it is in GAME at INDEX (or at the last
+     position if INDEX is nil).
+
+
+File: chess.info,  Node: Game plies,  Next: Making a move,  Prev: Game 
positions,  Up: Games
+
+1.4.4 Game plies
+----------------
+
+ -- Function: chess-game-ply game &optional index
+     Return a ply of GAME.  If INDEX is non-nil, the last played ply is
+     returned.
+
+
+File: chess.info,  Node: Making a move,  Next: PGN notation,  Prev: Game 
plies,  Up: Games
+
+1.4.5 Making a move
+-------------------
+
+ -- Function: chess-game-move game ply
+     Make a move in the current GAME using PLY.  This creates a new
+     position and adds it to the main variation.  The 'changes' of the
+     last ply reflect whether the game is currently in progress (nil),
+     if it is drawn, resigned, mate, etc.
+
+
+File: chess.info,  Node: PGN notation,  Prev: Making a move,  Up: Games
+
+1.4.6 PGN notation
+------------------
+
+ -- Function: chess-pgn-to-game &optional string
+     Convert PGN notation at point into a chess game.  Optionally use
+     the supplied STRING instead of the current buffer.
+
+ -- Function: chess-game-to-pgn game &optional indented to-string
+     Convert a chess GAME to PGN notation.  If INDENTED is non-nil,
+     indent the move texts.  If TO-STRING is non-nil, return a string
+     instead of inserting the resulting PGN text.
+
+ -- Function: chess-pgn-insert-plies game index plies &optional
+          for-black indented no-annotations
+     NYI: Still have to implement INDENTED argument.
+
+* Menu:
+
+* PGN mode::                    
+
+
+File: chess.info,  Node: PGN mode,  Prev: PGN notation,  Up: PGN notation
+
+1.4.6.1 PGN mode
+................
+
+ -- Function: chess-pgn-visualize
+     Visualize the move for the PGN game under point.  This does not
+     require that the buffer be in PGN mode.
+
+
+File: chess.info,  Node: Collections,  Prev: Games,  Up: The chess.el library
+
+1.5 Collections
+===============
+
+A "collection" is a set of games archived for later perusal.  A set of
+games conceptually represents a large tree of branching variations, and
+can be used for studying current theory, examining Master preferences,
+etc.
+
+   Chess.el itself does not attempt to provide library services, nor
+does it ever represent library collections in memory.  Instead, it
+interacts with a chess database engine for the purpose of storing and
+retrieving games from the library, or performing library-wide analyses
+and searches.
+
+* Menu:
+
+* Opening Databases::           
+* Querying Databases::          
+* Modifying Databases::         
+* Finalising Databases::        
+* Database Modules::            
+
+
+File: chess.info,  Node: Opening Databases,  Next: Querying Databases,  Prev: 
Collections,  Up: Collections
+
+1.5.1 Opening Databases
+-----------------------
+
+ -- Variable: chess-database-modules
+     List of database modules to try when 'chess-database-open' is
+     called.
+
+ -- Function: chess-database-open file &optional module
+     Returns the opened database object, or nil.
+
+
+File: chess.info,  Node: Querying Databases,  Next: Modifying Databases,  
Prev: Opening Databases,  Up: Collections
+
+1.5.2 Querying Databases
+------------------------
+
+ -- Function: chess-database-filename database
+     Return the filename of an already opened DATABASE.
+
+ -- Function: chess-database-read database index
+     Return from DATABASE the chess game object at INDEX.
+
+ -- Function: chess-database-query database &rest terms
+     Run a query on DATABASE.  TERMS is partly dependent on the
+     chess-database module in use.  chess-scid: tree-search GAME:
+     Perform a tree search on the last position of GAME.
+
+
+File: chess.info,  Node: Modifying Databases,  Next: Finalising Databases,  
Prev: Querying Databases,  Up: Collections
+
+1.5.3 Modifying Databases
+-------------------------
+
+ -- Function: chess-database-read-only-p database
+     Return non-nil if DATABASE is read only.
+
+
+File: chess.info,  Node: Finalising Databases,  Next: Database Modules,  Prev: 
Modifying Databases,  Up: Collections
+
+1.5.4 Finalising Databases
+--------------------------
+
+
+File: chess.info,  Node: Database Modules,  Prev: Finalising Databases,  Up: 
Collections
+
+1.5.5 Database Modules
+----------------------
+
+Currently, there are two subclasses of the above defined database
+base-class:
+
+* Menu:
+
+* chess-file::                  
+* chess-scid::                  
+
+
+File: chess.info,  Node: chess-file,  Next: chess-scid,  Prev: Database 
Modules,  Up: Database Modules
+
+1.5.5.1 chess-file
+..................
+
+This module does not use an external chess database program to store and
+retrieve games.  It uses the PGN of EPD format parsing routines provided
+in 'chess-pgn.el' and 'chess-epd.el' to implement Collections for
+ordinary PGN and EPD files.
+
+   EPD file collections are represented as a collection of games
+originating at the given position.  One might argue that conceptually,
+they represent a collection of positions, but it is more convenient to
+merge all collections into one uniform concept.
+
+
+File: chess.info,  Node: chess-scid,  Prev: chess-file,  Up: Database Modules
+
+1.5.5.2 chess-scid
+..................
+
+This modules implement basic reading and writing functionality for SCID
+(Shane's Chess Information Database) files.
+
+
+File: chess.info,  Node: Modules,  Next: Chessboard displays,  Prev: The 
chess.el library,  Up: Top
+
+2 Modules
+*********
+
+Positions, plies and variations are typically accessed in reference to a
+game object, which has a main variation containing the plies and
+positions that represent the number of moves made within that game up to
+the final position.
+
+   Another thing that the game object does is to manage events that
+occur within that game.  If a move is made from the final position, for
+example, it will cause a new ply to be created, adding it to the end of
+the main variation.  Then, a 'move' event is triggered within the game
+and passed to any chess modules which are currently associated with that
+game.  The concept of modules allows far more complex aspects of chess
+playing to be dealt with, while allowing the library itself to still
+operate solely in terms of the game object.
+
+   For example, although the plies of a game object contain all the
+information the computer needs to follow the game, a user needs much
+more.  He wants to see the pieces move.  To support this, a display
+module (see next chapter) can be created, and linked to the game.  The
+first effect of this association will be to create a chess board display
+and show the game's final position on it.  Now whenever plies are added
+to the game, the chess board will be updated to show the effect of that
+move on the board.  The display module realizes that a move has been
+made by receiving the 'move' event which is passed to all modules
+associated with the game object.
+
+   There may be any number of modules associated with a chess game, and
+they may do anything you like.  Basically, for a module called
+chess-sample, a function must exist called 'chess-sample-handler'.  This
+takes two or more arguments: a game object, the event symbol, and
+whatever other arguments were passed along with the event symbol.
+
+   When an event is triggered on a game object (and this may happen as a
+byproduct of manipulating the game, or events may be manually
+generated), every associated module, in order, is called with that event
+and whatever arguments were passed along with the event.  The game
+object is passed also, so that the module knows which game this event
+has occurred in reference to.
+
+   Once called, the module can do whatever it likes.  Some events expect
+certain values to be returned, to indicate success or failure in
+processing the event.  There are many different events, each depicting
+something specific that might happen in the context of playing or
+manipulating a chess game.  Some events relate only to the chess game
+itself, some are triggered by the various chess engines that might be
+associated with that game.  Modules may even trigger events in response
+to event.  The game itself remains unaware of events, except for the
+fact that it will pass them along to every module associated with that
+game.
+
+   This is how displays get updated, for example, because once a 'move'
+event is triggered, each display knows that it must now look at the new
+final position and update its display.  It may even trigger new events
+special to displays, to cause a refresh to happen after update
+calculations have been performed, for example.  All such details are
+left to the module, and the game does not interfere with such
+intra-module messaging.
+
+   Looked at as an object-oriented design, these are typical polymorphic
+events.  Certain generic situations frequently occur, such as moves,
+which trigger events so that everyone concerned with the game can be
+updated as to the move that occurred.  This way, no one need to actively
+query the game to find out if something new has happened.  The game will
+notify every listening module by sending an event.
+
+   The core library, which consists of code to manipulate games, does
+not define any modules.  The rest of the chess.el library is strictly a
+set of module implementations, of various types.  Display modules react
+to moves, and may modify the game based on user input; engine modules
+react to moves by notifying the engine of the move; network client
+modules react to moves by sending the move text over the network.
+Engine and network modules may also trigger new events when the engine
+or network player has decided on their move, and this move is then
+applied to the game object.
+
+   At the moment, no negotiation is done to determine which module may
+modify the game object.  All modules have equal privilege.  This means
+it is the programmer's duty not to associate conflicting modules with a
+single game object.  If two artificial intelligence engines were linked,
+for example, they would quickly start stepping on each other's toes.
+But it perfectly fine to have one artificial intelligence engine, and
+another passive engine whose only purpose is to relay the moves to a
+networked observer on another computer.  The possibilities are endless.
+
+   Modules are very easy to write, although engines and displays are
+rather different from each other in their principles.  There is a base
+engine, and a base display, which receive the same events as any other
+module.  But then there are derived engines and derived displays which
+trigger a whole family of events specific to those module types.  If you
+suspect a bug in your module, put a breakpoint in your handler function,
+and wait for the offending event to come through.  Then you can watch
+what your module does in response to that event.  If it leaves the game
+object alone, it should be easy to locate the problem, since it will
+always be within the module itself.  But if your module also modifies
+the game object in response to certain events, you may induce a feedback
+loop that is much more difficult to sort out.  Test often and keep in
+mind that *many* events might end up coming through as a result of the
+game changes your module makes!
+
+   That, in essence, is how the module system works.  From the game
+object's perspective, it is a very simple mechanism, much like a
+function ring or a hook.  The hook is called at certain points, so that
+any listener can react to changes in the game.  But from each module's
+perspective, it is a rich way to allow inter-operation between both
+passive and reactive modules, all of them acting together to enrich the
+context of play involving the central game object.
+
+   The only other rule to be mentioned is that each module instance
+should be associated with only one game object at a time, although a
+game object may have unlimited modules of any type linked to it.
+Otherwise, trying to update a chess board based on input from two
+different games would get impossible to sort out.  Better to create a
+new board for every game--the way ordinary humans would do it in the
+real world.
+
+
+File: chess.info,  Node: Chessboard displays,  Next: Engines,  Prev: Modules,  
Up: Top
+
+3 Chessboard displays
+*********************
+
+The previous chapter described all the objects found in
+chess--positions, plies, variations, games and collections.  However,
+these objects can only be manipulated programmitically using the
+functions given so far.  In order to present them in a meaningful
+fashion to a human reader, it is necessary to create and use a display
+object.
+
+* Menu:
+
+* Generic display manipulation functions::  
+* Plain ASCII diagram displays::  
+* ICS1 style ASCII displays::   
+* Graphical displays::          
+
+
+File: chess.info,  Node: Generic display manipulation functions,  Next: Plain 
ASCII diagram displays,  Prev: Chessboard displays,  Up: Chessboard displays
+
+3.1 Generic display manipulation functions
+==========================================
+
+ -- Function: chess-display-create game style perspective
+     Create a chess display, for displaying chess objects.  Where GAME
+     is the chess game object to use, STYLE should be the display type
+     to use (a symbol) and PERSPECTIVE determines the viewpoint of the
+     board, if non-nil, the board is viewed from White's perspective.
+
+ -- Function: chess-display-active-p
+     Return non-nil if the displayed chessboard reflects an active game.
+     Basically, it means we are playing, not editing or reviewing.
+
+ -- Function: chess-display-clear-board
+     Setup the current board for editing.
+
+ -- Function: chess-display-highlight display &rest args
+     Highlight the square at INDEX on the current position.  The given
+     highlighting MODE is used, or the default if the style you are
+     displaying with doesn't support that mode.  'selected' is a mode
+     that is supported by most displays, and is the default mode.
+
+ -- Function: chess-display-invert
+     Invert the perspective of the current chess board.
+
+ -- Function: chess-display-move display ply &optional prev-pos pos
+     Move a piece on DISPLAY, by applying the given PLY.  The position
+     of PLY must match the currently displayed position.  If only START
+     is given, it must be in algebraic move notation.
+
+ -- Function: chess-display-perspective display
+     Return the current perspective of DISPLAY.
+
+ -- Function: chess-display-position display
+     Return the position currently viewed on DISPLAY.
+
+ -- Function: chess-display-quit
+     Quit the game associated with the current display.
+
+ -- Function: chess-display-set-game display game &optional index
+     Set the given DISPLAY to display the GAME object, optionally at
+     INDEX.  This is the function to call to cause a display to view a
+     game.  It will also update all of the listening engines and other
+     displays to also view the same game.
+
+ -- Function: chess-display-set-perspective display perspective
+     Set PERSPECTIVE of DISPLAY.
+
+ -- Function: chess-display-set-position display &optional position
+          my-color
+     Set the game associated with DISPLAY to use POSITION and MY-COLOR.
+
+ -- Function: chess-display-set-variation display variation &optional
+          index
+     Set DISPLAY VARIATION.  If INDEX is not specified, this will cause
+     the first ply in the variation to be displayed, with the user able
+     to scroll back and forth through the moves in the variation.  Any
+     moves made on the board will extend/change the variation that was
+     passed in.
+
+ -- Function: chess-display-update display &optional popup
+     Update the chessboard DISPLAY.  POPUP too, if that arg is non-nil.
+
+
+File: chess.info,  Node: Plain ASCII diagram displays,  Next: ICS1 style ASCII 
displays,  Prev: Generic display manipulation functions,  Up: Chessboard 
displays
+
+3.2 Plain ASCII diagram displays
+================================
+
+The simplest display style available is chess-plain, a very customisable
+ASCII board diagram display.
+
+ -- Variable: chess-plain-separate-frame
+     If non-nil, display the chessboard in its own frame.
+
+ -- Variable: chess-plain-draw-border
+     Non-nil if a border should be drawn (using
+     'chess-plain-border-chars').
+
+ -- Variable: chess-plain-border-chars
+     A list of Characters used to draw borders.
+
+ -- Variable: chess-plain-black-square-char
+     Character used to indicate empty black squares.
+
+ -- Variable: chess-plain-white-square-char
+     Character used to indicate black white squares.
+
+ -- Variable: chess-plain-piece-chars
+     Alist of pieces and their corresponding characters.
+
+ -- Variable: chess-plain-upcase-indicates
+     Defines what a upcase char should indicate.  The default is 'color,
+     meaning a upcase char is a white piece, a lowercase char a black
+     piece.  Possible values: 'color (default), 'square-color.  If set
+     to 'square-color, a uppercase character indicates a piece on a
+     black square.  (Note that you also need to modify
+     'chess-plain-piece-chars' to avoid real confusion.)
+
+ -- Variable: chess-plain-spacing
+     Number of spaces between files.
+
+
+File: chess.info,  Node: ICS1 style ASCII displays,  Next: Graphical displays, 
 Prev: Plain ASCII diagram displays,  Up: Chessboard displays
+
+3.3 ICS1 style ASCII displays
+=============================
+
+ -- Variable: chess-ics1-separate-frame
+     If non-nil, display the chessboard in its own frame.
+
+
+File: chess.info,  Node: Graphical displays,  Prev: ICS1 style ASCII displays, 
 Up: Chessboard displays
+
+3.4 Graphical displays
+======================
+
+
+File: chess.info,  Node: Engines,  Next: Internet Chess Servers,  Prev: 
Chessboard displays,  Up: Top
+
+4 Engines
+*********
+
+Engines are the representation of an opponent in Chess.  THe main type
+of engine interfaces with an external chess program.  However, there can
+be other uses for engine objects, such as providing networked engined
+for playing with opponent over different types of transports.
+
+* Menu:
+
+* Common functions::            
+* Crafty::                      
+* Gnu Chess::                   
+* Phalanx::                     
+* Sjeng::                       
+
+
+File: chess.info,  Node: Common functions,  Next: Crafty,  Prev: Engines,  Up: 
Engines
+
+4.1 Common functions
+====================
+
+ -- Function: chess-engine-create module game &optional response-handler
+          &rest handler-ctor-args
+     Create a new chess engine MODULE (a symbol) associated with GAME.
+     Optionally supply a new RESPONSE-HANDLER.
+
+ -- Function: chess-engine-set-option engine option value
+     Set ENGINE OPTION to VALUE by invoking its handler with the
+     'set-option event.
+
+ -- Function: chess-engine-position engine
+     Return the current position of the game associated with ENGINE.
+
+ -- Function: chess-engine-command engine event &rest args
+     Call the handler of ENGINE with EVENT (a symbol) and ARGS.
+
+ -- Function: chess-engine-send engine string
+     Send the given STRING to ENGINE.  If 'chess-engine-process' is a
+     valid process object, use 'process-send-string' to submit the data.
+     Otherwise, the 'send event is triggered and the engine event
+     handler can take care of the data.
+
+
+File: chess.info,  Node: Crafty,  Next: Gnu Chess,  Prev: Common functions,  
Up: Engines
+
+4.2 Crafty
+==========
+
+
+File: chess.info,  Node: Gnu Chess,  Next: Phalanx,  Prev: Crafty,  Up: Engines
+
+4.3 Gnu Chess
+=============
+
+
+File: chess.info,  Node: Phalanx,  Next: Sjeng,  Prev: Gnu Chess,  Up: Engines
+
+4.4 Phalanx
+===========
+
+
+File: chess.info,  Node: Sjeng,  Prev: Phalanx,  Up: Engines
+
+4.5 Sjeng
+=========
+
+
+File: chess.info,  Node: Internet Chess Servers,  Next: Concept Index,  Prev: 
Engines,  Up: Top
+
+5 Internet Chess Servers
+************************
+
+Based on the services provided above, there is also a speical mode for
+communication with Internet Chess Servers.
+
+   ON an Internet Chess Server you can seek to play against other human
+or computer players, observe other games being player or examined, play
+tournaments, chat with fellow chess players, participate in a team game,
+or do various other interesting chess related things.
+
+   A default set of well known servers is defined in the following
+variable:
+
+ -- Variable: chess-ics-server-list
+     A list of servers to connect to.  The format of each entry is:
+
+     (SERVER PORT [HANDLE] [PASSWORD-OR-FILENAME] [HELPER] [HELPER
+     ARGS...])
+
+* Menu:
+
+* Connecting to a server::      
+* Seeking an opponent for a new game::  
+* The sought game display::     
+
+
+File: chess.info,  Node: Connecting to a server,  Next: Seeking an opponent 
for a new game,  Prev: Internet Chess Servers,  Up: Internet Chess Servers
+
+5.1 Connecting to a server
+==========================
+
+To open a new connection to an Internet Chess Server, use:
+
+ -- Function: chess-ics server port &optional handle
+          password-or-filename helper &rest helper-args
+     Connect to an Internet Chess Server.
+
+
+File: chess.info,  Node: Seeking an opponent for a new game,  Next: The sought 
game display,  Prev: Connecting to a server,  Up: Internet Chess Servers
+
+5.2 Seeking an opponent for a new game
+======================================
+
+After you connected to a server, one of the first things you will want
+to do is find an oponent for a new game.  You can use the ICS command
+"seek" to announce your availability for a chess game to interested
+people.
+
+
+File: chess.info,  Node: The sought game display,  Prev: Seeking an opponent 
for a new game,  Up: Internet Chess Servers
+
+5.3 The sought game display
+===========================
+
+There is a special mode for displaying games sought by other users on an
+Internet Chess Server.  Provided you didn't turn off seek ads manually
+(for instance by setting the seek variable to 0 (off) on the ICS server
+by issueing "set seek 0"), the first seek advertisment automatically
+pops up a new window which is in 'chess-ics-sought-mode'.
+
+ -- Function: chess-ics-sought-mode
+     A mode for displaying ICS game seek advertisments.
+
+     This mode runs the hook 'chess-ics-sought-mode-hook', as the final
+     step during initialization.
+
+     key binding -- -----
+
+     RET       chess-ics-sought-accept SPC
+     chess-ics-sought-toggle-sort-direction ?          describe-mode s
+     chess-ics-sought-toggle-sort-state <mouse-2>
+     chess-ics-sought-accept
+
+   In this buffer, use mouse-2 or 'RET' on a line to accept that
+particular game and play it.
+
+
+File: chess.info,  Node: Concept Index,  Next: Function and Variable Index,  
Prev: Internet Chess Servers,  Up: Top
+
+Concept Index
+*************
+
+[index]
+* Menu:
+
+* library:                               The chess.el library.  (line 6)
+
+
+File: chess.info,  Node: Function and Variable Index,  Next: Key Index,  Prev: 
Concept Index,  Up: Top
+
+Function and Variable Index
+***************************
+
+[index]
+* Menu:
+
+* chess-algebraic-regexp:                Algebraic notation.   (line 33)
+* chess-algebraic-to-ply:                Algebraic notation.   (line 17)
+* chess-coord-to-index:                  Position coordinates. (line 22)
+* chess-database-filename:               Querying Databases.   (line  6)
+* chess-database-modules:                Opening Databases.    (line  6)
+* chess-database-open:                   Opening Databases.    (line 10)
+* chess-database-query:                  Querying Databases.   (line 12)
+* chess-database-read:                   Querying Databases.   (line  9)
+* chess-database-read-only-p:            Modifying Databases.  (line  6)
+* chess-display-active-p:                Generic display manipulation 
functions.
+                                                               (line 12)
+* chess-display-clear-board:             Generic display manipulation 
functions.
+                                                               (line 16)
+* chess-display-create:                  Generic display manipulation 
functions.
+                                                               (line  6)
+* chess-display-highlight:               Generic display manipulation 
functions.
+                                                               (line 19)
+* chess-display-invert:                  Generic display manipulation 
functions.
+                                                               (line 25)
+* chess-display-move:                    Generic display manipulation 
functions.
+                                                               (line 28)
+* chess-display-perspective:             Generic display manipulation 
functions.
+                                                               (line 33)
+* chess-display-position:                Generic display manipulation 
functions.
+                                                               (line 36)
+* chess-display-quit:                    Generic display manipulation 
functions.
+                                                               (line 39)
+* chess-display-set-game:                Generic display manipulation 
functions.
+                                                               (line 42)
+* chess-display-set-perspective:         Generic display manipulation 
functions.
+                                                               (line 48)
+* chess-display-set-position:            Generic display manipulation 
functions.
+                                                               (line 51)
+* chess-display-set-variation:           Generic display manipulation 
functions.
+                                                               (line 55)
+* chess-display-update:                  Generic display manipulation 
functions.
+                                                               (line 63)
+* chess-engine-command:                  Common functions.     (line 18)
+* chess-engine-create:                   Common functions.     (line  6)
+* chess-engine-position:                 Common functions.     (line 15)
+* chess-engine-send:                     Common functions.     (line 21)
+* chess-engine-set-option:               Common functions.     (line 11)
+* chess-epd-read-file:                   EPD notation.         (line 29)
+* chess-epd-to-pos:                      EPD notation.         (line 20)
+* chess-fen-to-pos:                      FEN notation.         (line 38)
+* chess-fischer-random-position:         Creating positions.   (line 19)
+* chess-game-add-hook:                   Games.                (line 17)
+* chess-game-add-ply:                    Games.                (line 20)
+* chess-game-create:                     Creating games.       (line  6)
+* chess-game-del-tag:                    Game tags.            (line 19)
+* chess-game-hooks:                      Games.                (line 23)
+* chess-game-index:                      Game positions.       (line  9)
+* chess-game-move:                       Making a move.        (line  6)
+* chess-game-plies:                      Games.                (line 26)
+* chess-game-ply:                        Game plies.           (line  6)
+* chess-game-pos:                        Game positions.       (line  6)
+* chess-game-remove-hook:                Games.                (line 29)
+* chess-game-run-hooks:                  Games.                (line 33)
+* chess-game-seq:                        Game positions.       (line 12)
+* chess-game-set-hooks:                  Games.                (line 36)
+* chess-game-set-plies:                  Games.                (line 39)
+* chess-game-set-tag:                    Game tags.            (line 16)
+* chess-game-set-tags:                   Game tags.            (line  9)
+* chess-game-side-to-move:               Game positions.       (line 15)
+* chess-game-tag:                        Game tags.            (line 13)
+* chess-game-tags:                       Game tags.            (line  6)
+* chess-game-to-pgn:                     PGN notation.         (line 10)
+* chess-ics:                             Connecting to a server.
+                                                               (line  8)
+* chess-ics-server-list:                 Internet Chess Servers.
+                                                               (line 17)
+* chess-ics-sought-mode:                 The sought game display.
+                                                               (line 12)
+* chess-ics1-separate-frame:             ICS1 style ASCII displays.
+                                                               (line  6)
+* chess-incr-index:                      Position coordinates. (line 30)
+* chess-index-file:                      Position coordinates. (line 13)
+* chess-index-rank:                      Position coordinates. (line 10)
+* chess-index-to-coord:                  Position coordinates. (line 25)
+* chess-legal-plies:                     Creating plies.       (line 16)
+* chess-pgn-insert-plies:                PGN notation.         (line 15)
+* chess-pgn-to-game:                     PGN notation.         (line  6)
+* chess-pgn-visualize:                   PGN mode.             (line  6)
+* chess-plain-black-square-char:         Plain ASCII diagram displays.
+                                                               (line 19)
+* chess-plain-border-chars:              Plain ASCII diagram displays.
+                                                               (line 16)
+* chess-plain-draw-border:               Plain ASCII diagram displays.
+                                                               (line 12)
+* chess-plain-piece-chars:               Plain ASCII diagram displays.
+                                                               (line 25)
+* chess-plain-separate-frame:            Plain ASCII diagram displays.
+                                                               (line  9)
+* chess-plain-spacing:                   Plain ASCII diagram displays.
+                                                               (line 36)
+* chess-plain-upcase-indicates:          Plain ASCII diagram displays.
+                                                               (line 28)
+* chess-plain-white-square-char:         Plain ASCII diagram displays.
+                                                               (line 22)
+* chess-ply-create:                      Creating plies.       (line  6)
+* chess-ply-final-p:                     The "next" position.  (line  6)
+* chess-ply-pos:                         Ply details.          (line  6)
+* chess-ply-set-pos:                     Ply details.          (line  9)
+* chess-ply-source:                      Ply details.          (line 12)
+* chess-ply-target:                      Ply details.          (line 15)
+* chess-ply-to-algebraic:                Algebraic notation.   (line 25)
+* chess-pos-add-annotation:              Annotations.          (line  9)
+* chess-pos-always-white:                Position details.     (line 93)
+* chess-pos-annotations:                 Annotations.          (line  6)
+* chess-pos-can-castle:                  Position details.     (line 44)
+* chess-pos-copy:                        Creating positions.   (line 11)
+* chess-pos-create:                      Creating positions.   (line  6)
+* chess-pos-en-passant:                  Position details.     (line 59)
+* chess-pos-move:                        Position details.     (line 98)
+* chess-pos-passed-pawns:                Position details.     (line 83)
+* chess-pos-piece:                       Position details.     (line  9)
+* chess-pos-piece-p:                     Position details.     (line 12)
+* chess-pos-search:                      Position details.     (line 21)
+* chess-pos-set-can-castle:              Position details.     (line 49)
+* chess-pos-set-en-passant:              Position details.     (line 63)
+* chess-pos-set-piece:                   Position details.     (line 17)
+* chess-pos-set-side-to-move:            Position details.     (line 80)
+* chess-pos-set-status:                  Position details.     (line 72)
+* chess-pos-side-to-move:                Position details.     (line 77)
+* chess-pos-status:                      Position details.     (line 67)
+* chess-pos-to-epd:                      EPD notation.         (line 25)
+* chess-pos-to-fen:                      FEN notation.         (line 41)
+* chess-rf-to-index:                     Position coordinates. (line 16)
+* chess-search-position:                 Position details.     (line 26)
+* chess-starting-position:               Creating positions.   (line 16)
+* chess-var-add-ply:                     Making a move in a variation.
+                                                               (line 12)
+* chess-var-create:                      Creating variations.  (line  6)
+* chess-var-index:                       Variation positions.  (line  9)
+* chess-var-move:                        Making a move in a variation.
+                                                               (line  6)
+* chess-var-plies:                       Varation plies.       (line  9)
+* chess-var-ply:                         Varation plies.       (line  6)
+* chess-var-pos:                         Variation positions.  (line  6)
+* chess-var-seq:                         Variation positions.  (line 12)
+* chess-var-side-to-move:                Variation positions.  (line 15)
+* chess-var-to-algebraic:                Varation plies.       (line 12)
+
+
+File: chess.info,  Node: Key Index,  Prev: Function and Variable Index,  Up: 
Top
+
+Key Index
+*********
+
+
+
+Tag Table:
+Node: Top437
+Node: The chess.el library1291
+Node: Positions1600
+Node: Creating positions2685
+Node: Position coordinates3456
+Node: Position details4599
+Node: Annotations9052
+Node: FEN notation9394
+Node: EPD notation10891
+Node: Operations12400
+Node: Opcode "acd" analysis count depth13374
+Node: Opcode "acn" analysis count nodes13728
+Node: Opcode "acs" analysis count seconds14253
+Node: Opcode "am" avoid move(s)14773
+Node: Opcode "bm" best move(s)15214
+Node: Plies15609
+Node: Creating plies16800
+Node: Ply details17984
+Node: The "next" position18464
+Node: Algebraic notation18726
+Node: Variations20154
+Node: Creating variations21282
+Node: Variation positions21590
+Node: Varation plies22191
+Node: Making a move in a variation22632
+Node: Games23207
+Node: Creating games24893
+Node: Game tags25334
+Node: Game positions25941
+Node: Game plies26522
+Node: Making a move26791
+Node: PGN notation27218
+Node: PGN mode27968
+Node: Collections28229
+Node: Opening Databases29030
+Node: Querying Databases29414
+Node: Modifying Databases30040
+Node: Finalising Databases30312
+Node: Database Modules30487
+Node: chess-file30781
+Node: chess-scid31423
+Node: Modules31660
+Node: Chessboard displays38409
+Node: Generic display manipulation functions39037
+Node: Plain ASCII diagram displays41962
+Node: ICS1 style ASCII displays43407
+Node: Graphical displays43711
+Node: Engines43865
+Node: Common functions44443
+Node: Crafty45483
+Node: Gnu Chess45598
+Node: Phalanx45710
+Node: Sjeng45817
+Node: Internet Chess Servers45902
+Node: Connecting to a server46822
+Node: Seeking an opponent for a new game47243
+Node: The sought game display47695
+Node: Concept Index48721
+Node: Function and Variable Index48964
+Node: Key Index59579
+
+End Tag Table
diff --git a/packages/chess/chess.texi b/packages/chess/chess.texi
new file mode 100644
index 0000000..29f7b62
--- /dev/null
+++ b/packages/chess/chess.texi
@@ -0,0 +1,1576 @@
+\input texinfo  @c -*-texinfo-*-
+
address@hidden Documentation for Chess.el.
address@hidden Copyright (C) 2001, 2002 John Wiegley.
+
address@hidden This file is free software; you can redistribute it and/or 
modify it
address@hidden under the terms of the GNU General Public License as published 
by the
address@hidden Free Software Foundation; either version 2 of the License, or (at
address@hidden your option) any later version.
+
address@hidden This file is distributed in the hope that it will be useful, but
address@hidden WITHOUT ANY WARRANTY; without even the implied warraonty of
address@hidden MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
address@hidden General Public License for more details.
+
address@hidden You should have received a copy of the GNU General Public License
address@hidden along with Eshell; see the file COPYING.  If not, write to the 
Free
address@hidden Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
address@hidden %**start of header
address@hidden chess.info
address@hidden Emacs Chess: chess.el
address@hidden %**end of header
+
address@hidden Emacs
address@hidden
+* Chess: (chess).     Chess.el is an Emacs chess client.
address@hidden direntry
address@hidden on
+
address@hidden
+Copyright @copyright{} 2001, 2002 John Wiegley.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation.
address@hidden ifinfo
+
address@hidden vr fn
address@hidden The titlepage section does not appear in the Info file.
address@hidden
address@hidden 4
address@hidden The title is printed in a large font.
address@hidden @titlefont{User's Guide}
address@hidden 1
address@hidden @titlefont{to}
address@hidden 1
address@hidden @titlefont{Emacs Chess: chess.el}
address@hidden
address@hidden 2
address@hidden release 2.0
address@hidden -release-
address@hidden ignore
address@hidden 3
address@hidden John Wiegley
address@hidden -date-
+
address@hidden  The following two commands start the copyright page for the 
printed
address@hidden  manual.  This will not appear in the Info file.
address@hidden
address@hidden 0pt plus 1filll
+Copyright @copyright{} 2001, 2002 John Wiegley.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation.
address@hidden titlepage
+
address@hidden
+
address@hidden ================================================================
address@hidden                   The real text starts here
address@hidden ================================================================
+
address@hidden
address@hidden Top, The chess.el library, (dir), (dir)
address@hidden Emacs Chess: chess.el
+
+Chess.el is an Emacs chess client and library, designed to be used for
+writing chess-related programs, or for playing games of chess against
+various chess engines, including Internet servers.  The library can be
+used for analyzing variations, browsing historical games, or a
+multitude of other purposes.
+
+The purpose of this manual is to help you understand how Chess.el is
+structured for use as a library, and also how to use it as a client.
address@hidden ifinfo
+
address@hidden
+* The chess.el library::        
+* Modules::                     
+* Chessboard displays::         
+* Engines::                     
+* Internet Chess Servers::      
+* Concept Index::               
+* Function and Variable Index::  
+* Key Index::                   
address@hidden menu
+
address@hidden The chess.el library, Modules, Top, Top
address@hidden The chess.el library
address@hidden library
+
address@hidden
+* Positions::                   
+* Plies::                       
+* Variations::                  
+* Games::                       
+* Collections::                 
address@hidden menu
+
address@hidden Positions, Plies, The chess.el library, The chess.el library
address@hidden Positions
+
+A chess @dfn{position} is a given layout of pieces on a chess board,
+also reflecting which side is next to move, and what privileges are
+currently available to each side (castling short or long, en passant
+capture, etc).
+
+A position may be represented in ASCII using FEN (or EPD) notation, or
+graphically by displaying a chess board.  It is rather inconvenient to
+render them verbally.
+
+The position can be represented on a remote terminal using X windows, or
+by transmitting the FEN string via a network connection, or clipboard,
+to another chess board rendering tool.  It may of course also be
+represented physically, by setting up the pieces to match the FEN
+notation.
+
+Chess puzzles are most often provided as a set of positions.
+
address@hidden
+* Creating positions::          
+* Position coordinates::        
+* Position details::            
+* Annotations::                 
+* FEN notation::                
+* EPD notation::                
address@hidden menu
+
address@hidden Creating positions, Position coordinates, Positions, Positions
address@hidden Creating positions
+
address@hidden lispfun chess-pos-create
+
address@hidden chess-pos-create &optional blank
+Create a new chess position, set at the starting position.
+If @var{blank} is non-nil, all of the squares will be empty.
+The current side-to-move is always white.
address@hidden defun
+
address@hidden lispfun chess-pos-copy
+
address@hidden chess-pos-copy position
+Copy the given chess @var{position}.
+If there are annotations or @var{epd} opcodes set, these lists are copied as
+well, so that the two positions do not share the same lists.
address@hidden defun
+
address@hidden chess-starting-position
+Starting position of a chess game.
address@hidden defvar
+
address@hidden lispfun chess-fischer-random-position
+
address@hidden chess-fischer-random-position 
+Generate a Fischer Random style position.
address@hidden defun
+
address@hidden Position coordinates, Position details, Creating positions, 
Positions
address@hidden Position coordinates
+
+First of all, a coordinate system of octal indices is
+used, where ?\044 signifies rank 4 file 4 (i.e., "e4").  Rank is
+numbered 0 to 7, top to bottom, and file is 0 to 7, left to right.
+
address@hidden lispfun chess-index-rank
+
address@hidden chess-index-rank index
+Return the rank component of the given @var{index}.
address@hidden defun
+
address@hidden lispfun chess-index-file
+
address@hidden chess-index-file index
+Return the file component of the given @var{index}.
address@hidden defun
+
address@hidden lispfun chess-rf-to-index
+
address@hidden chess-rf-to-index rank file
+Convert @var{rank} and @var{file} coordinates into an octal index.
address@hidden defun
+
+For those who wish to use ASCII coordinates, such as "e4", there
+are two conversion functions:
+
address@hidden lispfun chess-coord-to-index
+
address@hidden chess-coord-to-index coord
+Convert a @var{coord} string into an index value.
address@hidden defun
+
address@hidden lispfun chess-index-to-coord
+
address@hidden chess-index-to-coord index
+Convert the chess position @var{index} into a coord string.
address@hidden defun
+
+There is also one helper function for iterative changes of an index:
+
address@hidden lispfun chess-incr-index
+
address@hidden chess-incr-index index rank-move file-move
+Create a new @var{index} from an old one, by adding @var{rank-move} and 
@var{file-move}.
address@hidden defun
+
address@hidden Position details, Annotations, Position coordinates, Positions
address@hidden Position details
+
+With an octal index value, you can look up what's on a particular
+square, or set that square's value:
+
address@hidden lispfun chess-pos-piece
+
address@hidden chess-pos-piece position index
+Return the piece on @var{position} at @var{index}.
address@hidden defun
+
address@hidden lispfun chess-pos-piece-p
+
address@hidden chess-pos-piece-p position index piece-or-color
+Return non-nil if at @var{position}/@var{index} there is the given 
@var{piece-or-color}.
+If @var{piece-or-color} is t for white or nil for black, any piece of that
+color will do.
address@hidden defun
+
address@hidden lispfun chess-pos-set-piece
+
address@hidden chess-pos-set-piece position index piece
+Set the piece on @var{position} at @var{index} to @var{piece}.
address@hidden must be one of K Q N B R or P.  Use lowercase to set black
+pieces.
address@hidden defun
+
address@hidden lispfun chess-pos-search
+
address@hidden chess-pos-search position piece-or-color
+Look on @var{position} anywhere for @var{piece-or-color}, returning all 
coordinates.
+If @var{piece-or-color} is t for white or nil for black, any piece of that
+color will do.
address@hidden defun
+
address@hidden lispfun chess-search-position
+
address@hidden chess-search-position position target piece &optional check-only 
no-castling
+Look on @var{position} from @var{target} for a @var{piece} that can move there.
+This routine looks along legal paths of movement for @var{piece}.  It
+differs from `chess-pos-search', which is a more basic function that
+doesn't take piece movement into account.
+
+If @var{piece} is t or nil, legal piece movements for any piece of that
+color will be considered (t for white, nil for black).  Otherwise, the
+case of the @var{piece} determines color.
+
+The return value is a list of candidates, which means a list of
+indices which indicate where a piece may have moved from.
+
+If @var{check-only} is non-nil and @var{piece} is either t or nil, only 
consider
+pieces which can give check (not the opponents king).
+If @var{no-castling} is non-nil, do not consider castling moves.
address@hidden defun
+
address@hidden lispfun chess-pos-can-castle
+
address@hidden chess-pos-can-castle position side
+Return whether the king on @var{position} can castle on @var{side}.
address@hidden must be either ?K for the kingside, or ?Q for the queenside (use
+lowercase to query if black can castle).
address@hidden defun
+
address@hidden lispfun chess-pos-set-can-castle
+
address@hidden chess-pos-set-can-castle position side value
+Set whether the king can castle on the given @var{position} on @var{side}.
+
+See `chess-pos-can-castle'.
+
+It is only necessary to call this function if setting up a position
+manually.  Note that all newly created positions have full castling
+priveleges set, unless the position is created blank, in which case
+castling priveleges are unset.  See `chess-pos-copy'.
address@hidden defun
+
address@hidden lispfun chess-pos-en-passant
+
address@hidden chess-pos-en-passant position
+Return the index of any pawn on @var{position} that can be captured en passant.
+Returns nil if en passant is unavailable.
address@hidden defun
+
address@hidden lispfun chess-pos-set-en-passant
+
address@hidden chess-pos-set-en-passant position index
+Set the index of any pawn on @var{position} that can be captured en passant.
address@hidden defun
+
address@hidden lispfun chess-pos-status
+
address@hidden chess-pos-status position
+Return whether the side to move in the @var{position} is in a special state.
+nil is returned if not, otherwise one of the symbols: `check',
+`checkmate', `stalemate'.
address@hidden defun
+
address@hidden lispfun chess-pos-set-status
+
address@hidden chess-pos-set-status position value
+Set whether the side to move in @var{position} is in a special state.
address@hidden should either be nil, to indicate that the @var{position} is 
normal,
+or one of the symbols: `check', `checkmate', `stalemate'.
address@hidden defun
+
address@hidden lispfun chess-pos-side-to-move
+
address@hidden chess-pos-side-to-move position
+Return the color whose move it is in @var{position}.
address@hidden defun
+
address@hidden lispfun chess-pos-set-side-to-move
+
address@hidden chess-pos-set-side-to-move position color
+Set the color whose move it is in @var{position}.
address@hidden defun
+
address@hidden lispfun chess-pos-passed-pawns
+
address@hidden chess-pos-passed-pawns position color &optional pawn-indices
+If @var{color} has Passed Pawns in @var{position}, return a list of their 
indices.
+Optionally, if @var{indices} is non-nil those indices are considered as 
candidates.
+
+A Pawn whose advance to the eighth rank is not blocked by an
+opposing Pawn in the same file and who does not have to pass one
+on an adjoining file is called a passed Pawn.
address@hidden defun
+
address@hidden chess-pos-always-white
+When set, it is assumed that white is always on move.
+This is really only useful when setting up training positions.
+This variable automatically becomes buffer-local when changed.
address@hidden defvar
+
address@hidden lispfun chess-pos-move
+
address@hidden chess-pos-move position &rest changes
+Move a piece on the @var{position} directly, using the indices in 
@var{changes}.
+This function does not check any rules, it only makes sure you are not
+trying to move a blank square.
address@hidden defun
+
address@hidden Annotations, FEN notation, Position details, Positions
address@hidden Annotations
+
address@hidden lispfun chess-pos-annotations
+
address@hidden chess-pos-annotations position
+Return the list of annotations for this position.
address@hidden defun
+
address@hidden lispfun chess-pos-add-annotation
+
address@hidden chess-pos-add-annotation position annotation
+Add an annotation for this position.
address@hidden defun
+
address@hidden FEN notation, EPD notation, Annotations, Positions
address@hidden FEN notation
+
+FEN notation encodes a chess position using a simple string.  The
+format is:
+
+   POSITION SIDE CASTLING EN-PASSANT
+
+The POSITION gives all eight ranks, by specifying a letter for each
+piece on the position, and a number for any intervening spaces.
+Trailing spaces need not be counted.  Uppercase letters signify
+white, and lowercase black.  For example, if your position only had
+a black king on d8, your POSITION string would be:
+
+  3k////////
+
+For the three spaces (a, b and c file), the black king, and then
+all the remaining ranks (which are all empty, so their spaces can
+be ignored).
+
+The SIDE is w or b, to indicate whose move it is.
+
+CASTLING can contain K, Q, k or q, to signify whether the white or
+black king can still castle on the king or queen side.  EN-PASSANT
+signifies the target sqaure of an en passant capture, such as "e3" or "a6".
+
+The starting chess position always looks like this:
+
+  rnbqkbnr/pppppppp/////PPPPPPPP/RNBQKBNR/ w KQkq -
+
+And in "full" mode (where all spaces are accounted for):
+
+  rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -
+
address@hidden lispfun chess-fen-to-pos
+
address@hidden chess-fen-to-pos fen
+Convert a @var{fen-}like notation string to a chess position.
address@hidden defun
+
address@hidden lispfun chess-pos-to-fen
+
address@hidden chess-pos-to-fen position &optional full
+Convert a chess @var{position} to @var{fen-}like notation.
+If @var{full} is non-nil, represent trailing spaces as well.
address@hidden defun
+
address@hidden EPD notation,  , FEN notation, Positions
address@hidden EPD notation
+
+EPD is "Extended Position Description"; it is a standard for describing chess
+positions along with an extended set of structured attribute values using the
+ASCII character set.  It is intended for data and command interchange among
+chessplaying programs.  It is also intended for the representation of portable
+opening library repositories.
+
+A single EPD uses one text line of variable length composed of four data field
+followed by zero or more operations.  The four fields of the EPD specification
+are the same as the first four fields of the FEN specification.
+
+A text file composed exclusively of EPD data records should have a file name
+with the suffix ".epd".
+
address@hidden lispfun chess-epd-to-pos
+
address@hidden chess-epd-to-pos &optional string
+Convert extended position description to a chess position.
+If @var{string} is not specified, look for an @var{epd} string in the current 
buffer,
+and advance point after the correctly parsed position.
address@hidden defun
+
address@hidden lispfun chess-pos-to-epd
+
address@hidden chess-pos-to-epd position
+Convert a chess @var{position} to a string representation in extended
+position description format.
address@hidden defun
+
address@hidden lispfun chess-epd-read-file
+
address@hidden chess-epd-read-file file
+Return a list of positions contained in @var{file}.
address@hidden defun
+
address@hidden
+* Operations::                  
+* Opcode "acd" analysis count depth::  
+* Opcode "acn" analysis count nodes::  
+* Opcode "acs" analysis count seconds::  
+* Opcode "am" avoid move(s)::   
+* Opcode "bm" best move(s)::    
address@hidden menu
+
address@hidden Operations, Opcode "acd" analysis count depth, EPD notation, EPD 
notation
address@hidden Operations
+
+An EPD operation is composed of an opcode followed by zero or more operands and
+is concluded by a semicolon.
+
+Multiple operations are separated by a single space character.  If there is at
+least one operation present in an EPD line, it is separated from the last
+(fourth) data field by a single space character.
+
+Some opcodes that allow for more than one operand may have special ordering
+requirements for the operands.  For example, the "pv" (predicted variation)
+opcode requires its operands (moves) to appear in the order in which they would
+be played.  All other opcodes that allow for more than one operand should have
+operands appearing in ASCII order.  An example of the latter set is the "bm"
+(best move[s]) opcode; its operands are moves that are all immediately playable
+from the current position.
+
address@hidden Opcode "acd" analysis count depth, Opcode "acn" analysis count 
nodes, Operations, EPD notation
address@hidden Opcode "acd" analysis count depth
+
+The opcode "acd" takes a single non-negative integer operand.  It is used to
+represent the ply depth examined in an analysis.
+
address@hidden Opcode "acn" analysis count nodes, Opcode "acs" analysis count 
seconds, Opcode "acd" analysis count depth, EPD notation
address@hidden Opcode "acn" analysis count nodes
+
+The opcode "acn" takes a single non-negative integer operand.  It is used to
+represent the number of nodes examined in an analysis.  Note that the value may
+be quite large for some extended searches and so use of (at least) a long (four
+byte) representation is suggested.
+
address@hidden Opcode "acs" analysis count seconds, Opcode "am" avoid move(s), 
Opcode "acn" analysis count nodes, EPD notation
address@hidden Opcode "acs" analysis count seconds
+
+The opcode "acs" takes a single non-negative integer operand.  It is used to
+represent the number of seconds used for an analysis.  Note that the value may
+be quite large for some extended searches and so use of (at least) a long (four
+byte) representation is suggested.
+
address@hidden Opcode "am" avoid move(s), Opcode "bm" best move(s), Opcode 
"acs" analysis count seconds, EPD notation
address@hidden Opcode "am" avoid move(s)
+
+The opcode "am" indicates a set of zero or more moves, all immediately playable
+from the current position, that are to be avoided in the opinion of the EPD
+writer.  Each operand is a SAN move; they appear in ASCII order.
+
address@hidden Opcode "bm" best move(s),  , Opcode "am" avoid move(s), EPD 
notation
address@hidden Opcode "bm" best move(s)
+
+The opcode "bm" indicates a set of zero or more moves, all immediately playable
+from the current position, that are judged to the best available by the EPD
+writer.  Each operand is a SAN move; they appear in ASCII order.
+
address@hidden Plies, Variations, Positions, The chess.el library
address@hidden Plies
+
+A @dfn{ply} is the differential between two positions.  Or, it is the
+coordinate transformations applied to one position in order to arrive at
+the following position.  It is also informally called "a move".
+
+A ply may be represented in ASCII by printing the FEN string of the base
+position, and then printing the positional transformation in algebraic
+notation.  Since the starting position is usually known, the FEN string
+is optional.  A ply may be represented graphically by moving the chess
+piece(s) involved.  It may be rendered verbally by voicing which piece
+is to move, where it will move to, and what will happen a result of the
+move (piece capture, check, etc).
+
+Plies may be sent over network connections, postal mail, e-mail, etc.,
+so long as the current position is maintained at both sides.
+Transmitting the base position's FEN string along with the ply offers a
+form of confirmation during the course of a game.
+
address@hidden
+* Creating plies::              
+* Ply details::                 
+* The "next" position::         
+* Algebraic notation::          
address@hidden menu
+
address@hidden Creating plies, Ply details, Plies, Plies
address@hidden Creating plies
+
address@hidden lispfun chess-ply-create
+
address@hidden chess-ply-create position &optional valid-p &rest changes
+Create a ply from the given @var{position} by applying the supplied 
@var{changes}.
+This function will guarantee the resulting ply is legal, and will also
+annotate the ply with :check or other modifiers as necessary.  It will
+also extend castling, and will prompt for a promotion piece.
+
+Note: Do not pass in the rook move if @var{changes} represents a castling
+maneuver.
address@hidden defun
+
address@hidden lispfun chess-legal-plies
+
address@hidden chess-legal-plies position &rest keywords
+Return a list of all legal plies in @var{position}.
address@hidden allowed are:
+
+  :any   return t if any piece can move at all
+  :color <t or nil>
+  :piece <piece character>
+  :file <number 0 to 7> [can only be used if :piece is present]
+  :index <coordinate index>
+  :target <specific target index>
+  :candidates <list of inddices>
+
+These will constrain the plies generated to those matching the above
+criteria.
+
address@hidden: All of the returned plies will reference the same copy of the
+position object passed in.
address@hidden defun
+
address@hidden Ply details, The "next" position, Creating plies, Plies
address@hidden Ply details
+
address@hidden lispfun chess-ply-pos
+
address@hidden chess-ply-pos ply
+Returns the base position associated with @var{ply}.
address@hidden defun
+
address@hidden lispfun chess-ply-set-pos
+
address@hidden chess-ply-set-pos ply position
+Set the base position of @var{ply}.
address@hidden defun
+
address@hidden lispfun chess-ply-changes
+
address@hidden lispfun chess-ply-set-changes
+
address@hidden lispfun chess-ply-source
+
address@hidden chess-ply-source ply
+Returns the source square index value of @var{ply}.
address@hidden defun
+
address@hidden lispfun chess-ply-target
+
address@hidden chess-ply-target ply
+Returns the target square index value of @var{ply}.
address@hidden defun
+
address@hidden The "next" position, Algebraic notation, Ply details, Plies
address@hidden The "next" position
+
address@hidden lispfun chess-ply-next-pos
+
address@hidden lispfun chess-ply-final-p
+
address@hidden chess-ply-final-p ply
+Return non-nil if this is the last ply of a game/variation.
address@hidden defun
+
address@hidden Algebraic notation,  , The "next" position, Plies
address@hidden Algebraic notation
+
+A thing to deal with in chess is algebraic move notation, such as
+Nxf3+.  (I leave description of this notation to better manuals
+than this).  This notation is a shorthand way of representing where
+a piece is moving from and to, by specifying the piece is involved,
+where it's going, and whether or not a capture or check is
+involved.
+
+You can convert from algebraic notation to a ply (one pair in most
+cases, but two for a castle) using the following function (NOTE:
+POSITION determines which side is on move (by calling
+`chess-pos-side-to-move')):
+
address@hidden lispfun chess-algebraic-to-ply
+
address@hidden chess-algebraic-to-ply position move &optional trust
+Convert the algebraic notation @var{move} for @var{position} to a ply.
address@hidden defun
+
+The function also checks if a move is legal, and will raise an
+error if not.
+
+To convert from a ply to algebraic notation, use:
+
address@hidden lispfun chess-ply-to-algebraic
+
address@hidden chess-ply-to-algebraic ply &optional long
+Convert the given @var{ply} to algebraic notation.
+If @var{long} is non-nil, render the move into long notation.
address@hidden defun
+
+Lastly, there is a regexp for quickly checking if a string is in
+algebraic notation or not, or searching out algebraic strings in a
+buffer:
+
address@hidden chess-algebraic-regexp
+A regular expression that matches all possible algebraic moves.
+This regexp handles both long and short form.
address@hidden defvar
+
address@hidden Variations, Games, Plies, The chess.el library
address@hidden Variations
+
+A @dfn{variation} is a sequence of plies that occur after some starting
+position.  If the starting position represents the initial setup of a
+chess board, and if the final ply results in completion of the game, it
+is called the "main variation".  Otherwise, variations typically
+represented interesting tangents during a game---but not actually
+played---as envisioned by the player, an annotator, or someone studying
+the game.
+
+Variations may be represented in ASCII by stating the FEN string for
+starting position, followed by the list of plies that follow that
+position.  They are difficult to represent graphically, except for
+showing each position in turn with a slight pause between---or by
+allowing the user to navigate each of the subsequent positions in turn.
+They may be represented verbally by announcing each of the plies in
+turn, as mentioned above.
+
address@hidden
+* Creating variations::         
+* Variation positions::         
+* Varation plies::              
+* Making a move in a variation::  
address@hidden menu
+
address@hidden Creating variations, Variation positions, Variations, Variations
address@hidden Creating variations
+
address@hidden lispfun chess-var-create
+
address@hidden chess-var-create &optional position
+Create a new chess variation object.
+Optionally use the given starting @var{position}.
address@hidden defun
+
address@hidden Variation positions, Varation plies, Creating variations, 
Variations
address@hidden Variation positions
+
address@hidden lispfun chess-var-pos
+
address@hidden chess-var-pos var &optional index
+Return the position related to @var{var}'s @var{index} ply.
address@hidden defun
+
address@hidden lispfun chess-var-index
+
address@hidden chess-var-index var
+Return the @var{var}'s current position index.
address@hidden defun
+
address@hidden lispfun chess-var-seq
+
address@hidden chess-var-seq var
+Return the current @var{var} sequence.
address@hidden defun
+
address@hidden lispfun chess-var-side-to-move
+
address@hidden chess-var-side-to-move var &optional index
+Return the color whose move it is in @var{var} at @var{index} (or at the last 
position
+of the variation if @var{index} is nil).
address@hidden defun
+
address@hidden Varation plies, Making a move in a variation, Variation 
positions, Variations
address@hidden Varation plies
+
address@hidden lispfun chess-var-ply
+
address@hidden chess-var-ply var &optional index
+Return @var{var}'s @var{index}th ply.
address@hidden defun
+
address@hidden lispfun chess-var-plies
+
address@hidden chess-var-plies var
+Return the plies of @var{var}.
address@hidden defun
+
address@hidden lispfun chess-var-to-algebraic
+
address@hidden chess-var-to-algebraic var &optional long
+Reveal the plies of @var{var} by converting them to algebraic
+notation.
address@hidden defun
+
address@hidden Making a move in a variation,  , Varation plies, Variations
address@hidden Making a move in a variation
+
address@hidden lispfun chess-var-move
+
address@hidden chess-var-move var ply
+Make a move in the current @var{var} by applying the changes of @var{ply}.
+This creates a new position and adds it to the main variation.
+The 'changes' of the last ply reflect whether the var is currently in
+progress (nil), if it is drawn, resigned, mate, etc.
address@hidden defun
+
address@hidden lispfun chess-var-add-ply
+
address@hidden chess-var-add-ply var ply
+Return the position related to @var{var}'s @var{index} position.
address@hidden defun
+
address@hidden Games, Collections, Variations, The chess.el library
address@hidden Games
+
+A @dfn{game} includes its main variation, incidental information about
+the game (who played it, where, when, who won, etc), and any
+sub-variations of interest to those studying the game afterwards.
+
+Where TAGS is an alist that associates arbitrary English tag names to
+their values.
+
+A game may be represented in ASCII using standard PGN notation.
+Representing them graphically or verbally is similar to what is done
+for variations.
+
address@hidden lispfun chess-game-add-hook
+
address@hidden chess-game-add-hook game function &optional data prepend
+Add to @var{game} an event hook @var{function}.
address@hidden defun
+
address@hidden lispfun chess-game-add-ply
+
address@hidden chess-game-add-ply game ply
+Return the position related to @var{game}'s @var{index} position.
address@hidden defun
+
address@hidden lispfun chess-game-hooks
+
address@hidden chess-game-hooks game
+Return the tags alist associated with @var{game}.
address@hidden defun
+
address@hidden lispfun chess-game-plies
+
address@hidden chess-game-plies game
+Return the main variation of @var{game} as a list of plies.
address@hidden defun
+
address@hidden lispfun chess-game-remove-hook
+
address@hidden chess-game-remove-hook game function &optional data
+Remove from @var{game} all event hooks that match @var{function}.
+If @var{data} is specified, only remove those hooks whose associated data
+matches.
address@hidden defun
+
address@hidden lispfun chess-game-run-hooks
+
address@hidden chess-game-run-hooks game &rest args
+Run the event hooks of @var{game} and pass @var{args}.
address@hidden defun
+
address@hidden lispfun chess-game-set-hooks
+
address@hidden chess-game-set-hooks game hooks
+Return the tags alist associated with @var{game}.
address@hidden defun
+
address@hidden lispfun chess-game-set-plies
+
address@hidden chess-game-set-plies game plies
+Set the list of plies which represents the main variation of @var{game}.
address@hidden defun
+
address@hidden
+* Creating games::              
+* Game tags::                   
+* Game positions::              
+* Game plies::                  
+* Making a move::               
+* PGN notation::                
address@hidden menu
+
address@hidden Creating games, Game tags, Games, Games
address@hidden Creating games
+
address@hidden lispfun chess-game-create
+
address@hidden chess-game-create &optional position tags
+Create a new chess game object.
+Optionally use the given starting @var{position} (see also
+`chess-game-set-start-position').
address@hidden is the starting set of game tags (which can always be changed
+later using the various tag-related methods).
address@hidden defun
+
address@hidden Game tags, Game positions, Creating games, Games
address@hidden Game tags
+
address@hidden lispfun chess-game-tags
+
address@hidden chess-game-tags game
+Return the tags alist associated with @var{game}.
address@hidden defun
+
address@hidden lispfun chess-game-set-tags
+
address@hidden chess-game-set-tags game tags
+Set the tags alist associated with @var{game}.
+After the @var{tags} alist was set the 'set-tags event is triggered.
address@hidden defun
+
address@hidden lispfun chess-game-tag
+
address@hidden chess-game-tag game tag
+Return the value for @var{tag} in @var{game}.
address@hidden defun
+
address@hidden lispfun chess-game-set-tag
+
address@hidden chess-game-set-tag game tag value
+Set a @var{tag} for @var{game} to @var{value}.
address@hidden defun
+
address@hidden lispfun chess-game-del-tag
+
address@hidden chess-game-del-tag game tag
+Delete a @var{tag} from @var{game}.
address@hidden defun
+
address@hidden Game positions, Game plies, Game tags, Games
address@hidden Game positions
+
address@hidden lispfun chess-game-pos
+
address@hidden chess-game-pos game &optional index
+Return the current position of @var{game} or a position of a given @var{index}.
address@hidden defun
+
address@hidden lispfun chess-game-index
+
address@hidden chess-game-index game
+Return the @var{game}'s current position index.
address@hidden defun
+
address@hidden lispfun chess-game-seq
+
address@hidden chess-game-seq game
+Return the current @var{game} sequence.
address@hidden defun
+
address@hidden lispfun chess-game-side-to-move
+
address@hidden chess-game-side-to-move game &optional index
+Return the color whose move it is in @var{game} at @var{index} (or at the last 
position
+if @var{index} is nil).
address@hidden defun
+
address@hidden Game plies, Making a move, Game positions, Games
address@hidden Game plies
+
address@hidden lispfun chess-game-ply
+
address@hidden chess-game-ply game &optional index
+Return a ply of @var{game}.
+If @var{index} is non-nil, the last played ply is returned.
address@hidden defun
+
address@hidden Making a move, PGN notation, Game plies, Games
address@hidden Making a move
+
address@hidden lispfun chess-game-move
+
address@hidden chess-game-move game ply
+Make a move in the current @var{game} using @var{ply}.
+This creates a new position and adds it to the main variation.
+The 'changes' of the last ply reflect whether the game is currently in
+progress (nil), if it is drawn, resigned, mate, etc.
address@hidden defun
+
address@hidden PGN notation,  , Making a move, Games
address@hidden PGN notation
+
address@hidden lispfun chess-pgn-to-game
+
address@hidden chess-pgn-to-game &optional string
+Convert @var{pgn} notation at point into a chess game.
+Optionally use the supplied @var{string} instead of the current buffer.
address@hidden defun
+
address@hidden lispfun chess-game-to-pgn
+
address@hidden chess-game-to-pgn game &optional indented to-string
+Convert a chess @var{game} to @var{pgn} notation.
+If @var{indented} is non-nil, indent the move texts.
+If @var{to-string} is non-nil, return a string instead of inserting the 
resulting
address@hidden text.
address@hidden defun
+
address@hidden lispfun chess-pgn-insert-plies
+
address@hidden chess-pgn-insert-plies game index plies &optional for-black 
indented no-annotations
address@hidden: Still have to implement @var{indented} argument.
address@hidden defun
+
address@hidden
+* PGN mode::                    
address@hidden menu
+
address@hidden PGN mode,  , PGN notation, PGN notation
address@hidden PGN mode
+
address@hidden lispfun chess-pgn-visualize
+
address@hidden chess-pgn-visualize 
+Visualize the move for the @var{pgn} game under point.
+This does not require that the buffer be in @var{pgn} mode.
address@hidden defun
+
address@hidden Collections,  , Games, The chess.el library
address@hidden Collections
+
+A @dfn{collection} is a set of games archived for later perusal.  A set
+of games conceptually represents a large tree of branching variations,
+and can be used for studying current theory, examining Master
+preferences, etc.
+
+Chess.el itself does not attempt to provide library services, nor does it
+ever represent library collections in memory.  Instead, it interacts
+with a chess database engine for the purpose of storing and retrieving
+games from the library, or performing library-wide analyses and
+searches.
+
address@hidden
+* Opening Databases::           
+* Querying Databases::          
+* Modifying Databases::         
+* Finalising Databases::        
+* Database Modules::            
address@hidden menu
+
address@hidden Opening Databases, Querying Databases, Collections, Collections
address@hidden Opening Databases
+
address@hidden chess-database-modules
+List of database modules to try when `chess-database-open' is called.
address@hidden defvar
+
address@hidden lispfun chess-database-open
+
address@hidden chess-database-open file &optional module
+Returns the opened database object, or nil.
address@hidden defun
+
address@hidden Querying Databases, Modifying Databases, Opening Databases, 
Collections
address@hidden Querying Databases
+
address@hidden lispfun chess-database-filename
+
address@hidden chess-database-filename database
+Return the filename of an already opened @var{database}.
address@hidden defun
+
address@hidden lispfun chess-database-count
+
address@hidden lispfun chess-database-read
+
address@hidden chess-database-read database index
+Return from @var{database} the chess game object at @var{index}.
address@hidden defun
+
address@hidden lispfun chess-database-query
+
address@hidden chess-database-query database &rest terms
+Run a query on @var{database}.
address@hidden is partly dependent on the chess-database module in use.
+chess-scid:
+ tree-search @var{game}: Perform a tree search on the last position of 
@var{game}.
address@hidden defun
+
address@hidden Modifying Databases, Finalising Databases, Querying Databases, 
Collections
address@hidden Modifying Databases
+
address@hidden lispfun chess-database-read-only-p
+
address@hidden chess-database-read-only-p database
+Return non-nil if @var{database} is read only.
address@hidden defun
+
address@hidden lispfun chess-database-write
+
address@hidden lispfun chess-database-replace
+
address@hidden Finalising Databases, Database Modules, Modifying Databases, 
Collections
address@hidden Finalising Databases
+
address@hidden lispfun chess-database-save
+
address@hidden lispfun chess-database-close
+
address@hidden Database Modules,  , Finalising Databases, Collections
address@hidden Database Modules
+
+Currently, there are two subclasses of the above defined
+database base-class:
+
address@hidden
+* chess-file::                  
+* chess-scid::                  
address@hidden menu
+
address@hidden chess-file, chess-scid, Database Modules, Database Modules
address@hidden chess-file
+
+This module does not use an external chess database program
+to store and retrieve games.  It uses the PGN of EPD format parsing
+routines provided in `chess-pgn.el' and `chess-epd.el' to implement Collections
+for ordinary PGN and EPD files.
+
+EPD file collections are represented as a collection of games originating
+at the given position.  One might argue that conceptually, they represent
+a collection of positions, but it is more convenient to merge all
+collections into one uniform concept.
+
address@hidden chess-scid,  , chess-file, Database Modules
address@hidden chess-scid
+
+This modules implement basic reading and writing functionality
+for SCID (Shane's Chess Information Database) files.
+
address@hidden Modules, Chessboard displays, The chess.el library, Top
address@hidden Modules
+
+Positions, plies and variations are typically accessed in reference to
+a game object, which has a main variation containing the plies and
+positions that represent the number of moves made within that game up
+to the final position.
+
+Another thing that the game object does is to manage events that occur
+within that game.  If a move is made from the final position, for
+example, it will cause a new ply to be created, adding it to the end
+of the main variation.  Then, a `move' event is triggered within the
+game and passed to any chess modules which are currently associated
+with that game.  The concept of modules allows far more complex
+aspects of chess playing to be dealt with, while allowing the library
+itself to still operate solely in terms of the game object.
+
+For example, although the plies of a game object contain all the
+information the computer needs to follow the game, a user needs much
+more.  He wants to see the pieces move.  To support this, a display
+module (see next chapter) can be created, and linked to the game.  The
+first effect of this association will be to create a chess board
+display and show the game's final position on it.  Now whenever plies
+are added to the game, the chess board will be updated to show the
+effect of that move on the board.  The display module realizes that a
+move has been made by receiving the `move' event which is passed to
+all modules associated with the game object.
+
+There may be any number of modules associated with a chess game, and
+they may do anything you like.  Basically, for a module called
+chess-sample, a function must exist called `chess-sample-handler'.
+This takes two or more arguments: a game object, the event symbol, and
+whatever other arguments were passed along with the event symbol.
+
+When an event is triggered on a game object (and this may happen as a
+byproduct of manipulating the game, or events may be manually
+generated), every associated module, in order, is called with that
+event and whatever arguments were passed along with the event.  The
+game object is passed also, so that the module knows which game this
+event has occurred in reference to.
+
+Once called, the module can do whatever it likes.  Some events expect
+certain values to be returned, to indicate success or failure in
+processing the event.  There are many different events, each depicting
+something specific that might happen in the context of playing or
+manipulating a chess game.  Some events relate only to the chess game
+itself, some are triggered by the various chess engines that might be
+associated with that game.  Modules may even trigger events in
+response to event.  The game itself remains unaware of events, except
+for the fact that it will pass them along to every module associated
+with that game.
+
+This is how displays get updated, for example, because once a 'move'
+event is triggered, each display knows that it must now look at the
+new final position and update its display.  It may even trigger new
+events special to displays, to cause a refresh to happen after update
+calculations have been performed, for example.  All such details are
+left to the module, and the game does not interfere with such
+intra-module messaging.
+
+Looked at as an object-oriented design, these are typical polymorphic
+events.  Certain generic situations frequently occur, such as moves,
+which trigger events so that everyone concerned with the game can be
+updated as to the move that occurred.  This way, no one need to
+actively query the game to find out if something new has happened.
+The game will notify every listening module by sending an event.
+
+The core library, which consists of code to manipulate games, does not
+define any modules.  The rest of the chess.el library is strictly a
+set of module implementations, of various types.  Display modules
+react to moves, and may modify the game based on user input; engine
+modules react to moves by notifying the engine of the move; network
+client modules react to moves by sending the move text over the
+network.  Engine and network modules may also trigger new events when
+the engine or network player has decided on their move, and this move
+is then applied to the game object.
+
+At the moment, no negotiation is done to determine which module may
+modify the game object.  All modules have equal privilege.  This means
+it is the programmer's duty not to associate conflicting modules with
+a single game object.  If two artificial intelligence engines were
+linked, for example, they would quickly start stepping on each other's
+toes.  But it perfectly fine to have one artificial intelligence
+engine, and another passive engine whose only purpose is to relay the
+moves to a networked observer on another computer.  The possibilities
+are endless.
+
+Modules are very easy to write, although engines and displays are
+rather different from each other in their principles.  There is a base
+engine, and a base display, which receive the same events as any other
+module.  But then there are derived engines and derived displays which
+trigger a whole family of events specific to those module types.  If
+you suspect a bug in your module, put a breakpoint in your handler
+function, and wait for the offending event to come through.  Then you
+can watch what your module does in response to that event.  If it
+leaves the game object alone, it should be easy to locate the problem,
+since it will always be within the module itself.  But if your module
+also modifies the game object in response to certain events, you may
+induce a feedback loop that is much more difficult to sort out.  Test
+often and keep in mind that *many* events might end up coming through
+as a result of the game changes your module makes!
+
+That, in essence, is how the module system works.  From the game
+object's perspective, it is a very simple mechanism, much like a
+function ring or a hook.  The hook is called at certain points, so
+that any listener can react to changes in the game.  But from each
+module's perspective, it is a rich way to allow inter-operation
+between both passive and reactive modules, all of them acting together
+to enrich the context of play involving the central game object.
+
+The only other rule to be mentioned is that each module instance
+should be associated with only one game object at a time, although a
+game object may have unlimited modules of any type linked to it.
+Otherwise, trying to update a chess board based on input from two
+different games would get impossible to sort out.  Better to create a
+new board for every game---the way ordinary humans would do it in the
+real world.
+
address@hidden Chessboard displays, Engines, Modules, Top
address@hidden Chessboard displays
+
+The previous chapter described all the objects found in
+chess---positions, plies, variations, games and collections.  However,
+these objects can only be manipulated programmitically using the
+functions given so far.  In order to present them in a meaningful
+fashion to a human reader, it is necessary to create and use a display
+object.
+
address@hidden
+* Generic display manipulation functions::  
+* Plain ASCII diagram displays::  
+* ICS1 style ASCII displays::   
+* Graphical displays::          
address@hidden menu
+
address@hidden Generic display manipulation functions, Plain ASCII diagram 
displays, Chessboard displays, Chessboard displays
address@hidden Generic display manipulation functions
+
address@hidden lispfun chess-display-create
+
address@hidden chess-display-create game style perspective
+Create a chess display, for displaying chess objects.
+Where @var{game} is the chess game object to use, @var{style} should be the 
display
+type to use (a symbol) and @var{perspective} determines the viewpoint
+of the board, if non-nil, the board is viewed from White's perspective.
address@hidden defun
+
address@hidden lispfun chess-display-destroy
+
address@hidden lispfun chess-display-active-p
+
address@hidden chess-display-active-p 
+Return non-nil if the displayed chessboard reflects an active game.
+Basically, it means we are playing, not editing or reviewing.
address@hidden defun
+
address@hidden lispfun chess-display-clear-board
+
address@hidden chess-display-clear-board 
+Setup the current board for editing.
address@hidden defun
+
address@hidden lispfun chess-display-game
+
address@hidden lispfun chess-display-highlight
+
address@hidden chess-display-highlight display &rest args
+Highlight the square at @var{index} on the current position.
+The given highlighting @var{mode} is used, or the default if the style you
+are displaying with doesn't support that mode.  `selected' is a mode
+that is supported by most displays, and is the default mode.
address@hidden defun
+
address@hidden lispfun chess-display-index
+
address@hidden lispfun chess-display-invert
+
address@hidden chess-display-invert 
+Invert the perspective of the current chess board.
address@hidden defun
+
address@hidden lispfun chess-display-move
+
address@hidden chess-display-move display ply &optional prev-pos pos
+Move a piece on @var{display}, by applying the given @var{ply}.
+The position of @var{ply} must match the currently displayed position.
+If only @var{start} is given, it must be in algebraic move notation.
address@hidden defun
+
address@hidden lispfun chess-display-move-backward
+
address@hidden lispfun chess-display-move-first
+
address@hidden lispfun chess-display-move-forward
+
address@hidden lispfun chess-display-move-last
+
address@hidden lispfun chess-display-perspective
+
address@hidden chess-display-perspective display
+Return the current perspective of @var{display}.
address@hidden defun
+
address@hidden lispfun chess-display-ply
+
address@hidden lispfun chess-display-position
+
address@hidden chess-display-position display
+Return the position currently viewed on @var{display}.
address@hidden defun
+
address@hidden lispfun chess-display-quit
+
address@hidden chess-display-quit 
+Quit the game associated with the current display.
address@hidden defun
+
address@hidden lispfun chess-display-set-game
+
address@hidden chess-display-set-game display game &optional index
+Set the given @var{display} to display the @var{game} object, optionally at 
@var{index}.
+This is the function to call to cause a display to view a game.  It
+will also update all of the listening engines and other displays to
+also view the same game.
address@hidden defun
+
address@hidden lispfun chess-display-set-index
+
address@hidden lispfun chess-display-set-perspective
+
address@hidden chess-display-set-perspective display perspective
+Set @var{perspective} of @var{display}.
address@hidden defun
+
address@hidden lispfun chess-display-set-ply
+
address@hidden lispfun chess-display-set-position
+
address@hidden chess-display-set-position display &optional position my-color
+Set the game associated with @var{display} to use @var{position} and 
@var{my-color}.
address@hidden defun
+
address@hidden lispfun chess-display-set-variation
+
address@hidden chess-display-set-variation display variation &optional index
+Set @var{display} @var{variation}.
+If @var{index} is not specified, this will cause the first ply in the variation
+to be displayed, with the user able to scroll back and forth through the
+moves in the variation.  Any moves made on the board will extend/change the
+variation that was passed in.
address@hidden defun
+
address@hidden lispfun chess-display-update
+
address@hidden chess-display-update display &optional popup
+Update the chessboard @var{display}.  @var{popup} too, if that arg is non-nil.
address@hidden defun
+
address@hidden lispfun chess-display-variation
+
address@hidden Plain ASCII diagram displays, ICS1 style ASCII displays, Generic 
display manipulation functions, Chessboard displays
address@hidden Plain ASCII diagram displays
+
+The simplest display style available is chess-plain, a very customisable
+ASCII board diagram display.
+
address@hidden chess-plain-separate-frame
+If non-nil, display the chessboard in its own frame.
address@hidden defvar
+
address@hidden chess-plain-draw-border
+Non-nil if a border should be drawn (using `chess-plain-border-chars').
address@hidden defvar
+
address@hidden chess-plain-border-chars
+A list of Characters used to draw borders.
address@hidden defvar
+
address@hidden chess-plain-black-square-char
+Character used to indicate empty black squares.
address@hidden defvar
+
address@hidden chess-plain-white-square-char
+Character used to indicate black white squares.
address@hidden defvar
+
address@hidden chess-plain-piece-chars
+Alist of pieces and their corresponding characters.
address@hidden defvar
+
address@hidden chess-plain-upcase-indicates
+Defines what a upcase char should indicate.
+The default is 'color, meaning a upcase char is a white piece, a
+lowercase char a black piece.  Possible values: 'color (default),
+'square-color.  If set to 'square-color, a uppercase character
+indicates a piece on a black square. (Note that you also need to
+modify `chess-plain-piece-chars' to avoid real confusion.)
address@hidden defvar
+
address@hidden chess-plain-spacing
+Number of spaces between files.
address@hidden defvar
+
address@hidden ICS1 style ASCII displays, Graphical displays, Plain ASCII 
diagram displays, Chessboard displays
address@hidden ICS1 style ASCII displays
+
address@hidden chess-ics1-separate-frame
+If non-nil, display the chessboard in its own frame.
address@hidden defvar
+
address@hidden Graphical displays,  , ICS1 style ASCII displays, Chessboard 
displays
address@hidden Graphical displays
+
address@hidden Engines, Internet Chess Servers, Chessboard displays, Top
address@hidden Engines
+
+Engines are the representation of an opponent in Chess.  THe main type
+of engine interfaces with an external chess program.  However, there
+can be other uses for engine objects, such as providing networked engined
+for playing with opponent over different types of transports.
+
address@hidden
+* Common functions::            
+* Crafty::                      
+* Gnu Chess::                   
+* Phalanx::                     
+* Sjeng::                       
address@hidden menu
+
address@hidden Common functions, Crafty, Engines, Engines
address@hidden Common functions
+
address@hidden lispfun chess-engine-create
+
address@hidden chess-engine-create module game &optional response-handler &rest 
handler-ctor-args
+Create a new chess engine @var{module} (a symbol) associated with @var{game}.
+Optionally supply a new @var{response-handler}.
address@hidden defun
+
address@hidden lispfun chess-engine-set-option
+
address@hidden chess-engine-set-option engine option value
+Set @var{engine} @var{option} to @var{value} by invoking its handler with the 
'set-option
+event.
address@hidden defun
+
address@hidden lispfun chess-engine-destroy
+
address@hidden lispfun chess-engine-set-position
+
address@hidden lispfun chess-engine-position
+
address@hidden chess-engine-position engine
+Return the current position of the game associated with @var{engine}.
address@hidden defun
+
address@hidden lispfun chess-engine-set-game
+
address@hidden lispfun chess-engine-game
+
address@hidden lispfun chess-engine-index
+
address@hidden lispfun chess-engine-move
+
address@hidden lispfun chess-engine-command
+
address@hidden chess-engine-command engine event &rest args
+Call the handler of @var{engine} with @var{event} (a symbol) and @var{args}.
address@hidden defun
+
address@hidden lispfun chess-engine-send
+
address@hidden chess-engine-send engine string
+Send the given @var{string} to @var{engine}.
+If `chess-engine-process' is a valid process object, use `process-send-string'
+to submit the data.  Otherwise, the 'send event is triggered and the engine
+event handler can take care of the data.
address@hidden defun
+
address@hidden Crafty, Gnu Chess, Common functions, Engines
address@hidden Crafty
+
address@hidden Gnu Chess, Phalanx, Crafty, Engines
address@hidden Gnu Chess
+
address@hidden Phalanx, Sjeng, Gnu Chess, Engines
address@hidden Phalanx
+
address@hidden Sjeng,  , Phalanx, Engines
address@hidden Sjeng
+
address@hidden Internet Chess Servers, Concept Index, Engines, Top
address@hidden Internet Chess Servers
+
+Based on the services provided above, there is also a speical mode
+for communication with Internet Chess Servers.
+
+ON an Internet Chess Server you can seek to play against other
+human or computer players, observe other games being player or examined,
+play tournaments, chat with fellow chess players, participate in a team game,
+or do various other interesting chess related things.
+
+A default set of well known servers is defined in the following variable:
+
address@hidden chess-ics-server-list
+A list of servers to connect to.
+The format of each entry is:
+
+  (SERVER PORT [HANDLE] [PASSWORD-OR-FILENAME] [HELPER] [HELPER ARGS...])
address@hidden defvar
+
address@hidden
+* Connecting to a server::      
+* Seeking an opponent for a new game::  
+* The sought game display::     
address@hidden menu
+
address@hidden Connecting to a server, Seeking an opponent for a new game, 
Internet Chess Servers, Internet Chess Servers
address@hidden Connecting to a server
+
+To open a new connection to an Internet Chess Server, use:
+
address@hidden lispfun chess-ics
+
address@hidden chess-ics server port &optional handle password-or-filename 
helper &rest helper-args
+Connect to an Internet Chess Server.
address@hidden defun
+
address@hidden Seeking an opponent for a new game, The sought game display, 
Connecting to a server, Internet Chess Servers
address@hidden Seeking an opponent for a new game
+
+After you connected to a server, one of the first things you will
+want to do is find an oponent for a new game.  You can use the
+ICS command "seek" to announce your availability for a chess game
+to interested people.
+
address@hidden The sought game display,  , Seeking an opponent for a new game, 
Internet Chess Servers
address@hidden The sought game display
+
+There is a special mode for displaying games sought by other users
+on an Internet Chess Server.  Provided you didn't turn off seek ads
+manually (for instance by setting the seek variable to 0 (off) on the
+ICS server by issueing "set seek 0"), the first seek advertisment
+automatically pops up a new window which is in `chess-ics-sought-mode'.
+
address@hidden lispfun chess-ics-sought-mode
+
address@hidden chess-ics-sought-mode 
+A mode for displaying @var{ics} game seek advertisments.
+
+This mode runs the hook `chess-ics-sought-mode-hook', as the final step
+during initialization.
+
+key             binding
+---             -------
+
address@hidden          chess-ics-sought-accept
address@hidden          chess-ics-sought-toggle-sort-direction
+?              describe-mode
+s              chess-ics-sought-toggle-sort-state
+<mouse-2>      chess-ics-sought-accept
+
+
address@hidden defun
+
+In this buffer, use mouse-2 or @kbd{RET} on a line to accept that
+particular game and play it.
+
address@hidden Concept Index, Function and Variable Index, Internet Chess 
Servers, Top
address@hidden Concept Index
+
address@hidden cp
+
address@hidden Function and Variable Index, Key Index, Concept Index, Top
address@hidden Function and Variable Index
+
address@hidden fn
+
address@hidden Key Index,  , Function and Variable Index, Top
address@hidden Key Index
+
address@hidden ky
address@hidden
diff --git a/packages/chess/dir b/packages/chess/dir
new file mode 100644
index 0000000..db92621
--- /dev/null
+++ b/packages/chess/dir
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs
+* Chess: (chess).               Chess.el is an Emacs chess client.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]